Welcome to developers[]!

Greetings Fellow Developers! Thanks for stopping by. This site is dedicated to the developers[] project — an attempt to gather up the coding wisdom of the best and brightest in the software development community.

Want to participate and share your wisdom with the rest of the community?

Fill out this survey here.

If you are a developer and you are reading this, then you are most welcome to participate!

developers[]: Primož Gabrijelčič

Twitter: @thedelphigeek

WebSite: www.thedelphigeek.com

Primož Gabrijelčič started programming in 1983 on an HP 41 CX programmable calculator. Soon he moved to more capable machines – Sinclair ZX Spectrum, PDP 11, and VAX/VMS mainframes – and finally settled on an IBM PC AT with a HUGE 10 MB disk drive. Somewhere during those early years he felt in love with Pascal and developed a distaste for all languages C-ish. He has stayed true to the PC/Gates combo (except when he experimented with OS/2 Warp) to this day. These days he works as a developer in the broadcasting industry. During the night he writes books, blogs, and develops open-source software. He’s also delighted when people invite him to present at Delphi conferences all over the world (hint, hint, nudge, nudge).

What is your favorite programming language and why?

There are many languages I have fallen in love with. I love Forth; its simplicity and power which allows you to write code that runs at almost assembler speed but is still readable. I enjoyed learning Smalltalk; that was the first time I learned about the concept of messages. I am fascinated about Erlang; how it created the concept of failsafe microtransactions a decade before microtransactions were a thing.

Having said all that, my language of choice was always Pascal. A long time ago I decided that using a language that takes care of your stupid mistakes (range check errors!) is A Good Thing. I must say that I’m thrilled with the choice the young me made. Delphi helps me write readable code which I have no problems understanding and fixing when bugs are reported. And as the job of a programmer is 20% writing new code and 80% fixing old, that is definitely a boon.

What one piece of advice would you give to a rookie developer?

“Never stop learning.” Always experiment, always try different approaches. Nine times out of ten you’ll fail, but that precious one time you’ll make yourself better. After you get some programming ‘mileage’ you’ll learn that one out of ten is actually pretty great ratio 🙂

What is the most difficult programming challenge you’ve ever encountered?

In my job I’m mostly solving difficult problems. (We have decided a long time ago that anyone can solve simple problems but we’ll specialize on hard ones.) Still, two episodes come to mind. Case A was creating a complex real-time multithreaded application which is processing and synchronizing an internal TV broadcasting feed that can go up to 270 Mb/s. At that time I used quite some large paper sheets to design the internal workings of that app. I have also developed a habit of taking a notebook and pen to bed to record ideas and solutions that appeared in my mind during the night. Case B was solving the ABA problem when designing my own O(1), multiple writer, multiple reader, lock-free, growable queue (TOmniQueue in OmniThreadLibrary). That was probably the hardest problem I have ever solved and solution came to me during a concert I was attending.

What is your favorite open source project and why?

Chocolatey Package Manager. Because I can say choco upgrade all and all my chocolatey-installed software gets upgraded. Poof! Magic!

What would you say to the developer that was you five years ago?

“Let the code breath, man!” At that time all my code was very condensed. You could never find an empty line inside a method. These days I’m more relaxed, and I let the code breathe. I treat my methods more like short poems and I frequently split them into multiple `stanzas`, separated with empty lines.

What one book should every software developer read?

I have a ton of suggestions, but I don’t believe there is a book that would fit everyone, everywhere. Just read, people! If I had to pick one, I would recommend A Programmer’s Introduction to Mathematics by Dr. Jeremy Kun. Most programmers don’t know enough about mathematics and this book is quite a gentle introduction to the topic.

What is the worst advice that you commonly hear given to developers?

I must say that I don’t commonly hear bad advice. Either I have a carefully selected the circle of people I listen to or I’m just lucky.

Let me just give a guideline which will help developers recognize bad advice. If it tells you that you must “100% always do XXX in exactly that way”, you should ignore it. A typical example are websites that explain how to do design patterns by telling you how to name classes that take part in the pattern. You should always strive towards understanding the idea behind the advice, not to interpret the advice literally.

Describe your favorite or most memorable “aha!” moment that you’ve had as a developer.

My most memorable “aha!” will happen when I will finally understand reactive programming. Until then, the most memorable is the moment when I solved the ABA problem in my lock-free queue.

What is one weird or unusual thing you always do when you code?

I press Ctrl+S constantly, at least once every line. I have developed this habit in the eighties while programming in Turbo Pascal 3.0 on a CP/M machine. This combination had an unpleasant feature of occasionally hanging. When it hung, you lost all unsaved work, so I started pressing Ctrl+S all the time. Software and hardware are much more stable these days, but my habit is still here.

What have you done as a developer of which you are most proud?

Wrote OmniThreadLibrary, which is a quite popular multithreaded library amongst Delphi programmers.

Bonus Question: What is the question and the answer to the one thing that I should have asked you?

Q: What do you do when you are not programming?
A: I read constantly. Other than that, I enjoy working with wood. I made lots of cabinets and shelves in our house and some stuff – including a coffee table – for friends. I’m also a photographer and a runner.

developers[]: Steve Jordi

Twitter: @tiltsoft

Website: https://www.tiltsoft.com

Swiss Cross-Platform Software Developer specializing in data acquisition, processing and representation. Geophysicist active in volcanology, hence also writing custom software for disaster prevention and monitoring. Circling the globe and meeting nice people and cultures. Blessed to be a father, a coder, and live in the chocolate country.

What is your favorite programming language and why?

Pascal and C++. The first one for its ease of use while being very powerful. It’s easy to read, elegant and is very coherent. C++ to write software accessing low level system functionalities and for its tremendous speed optimization.

What one piece of advice would you give to a rookie developer?

Never be shy to ask for help and advice. Learning is by far the best way to progress and build a mentor network. Even better, at some point, that developer will also become a mentor to others.

What is the most difficult programming challenge you’ve ever encountered?

Making the move from procedural programming to object-oriented programming. I started programming back in 1980 in Fortran 4, then Fortran V. For years, this fulfilled our needs when computing was mainly number crunching. But when GUIs started to be common, software evolved as well. I initially didn’t see what OOP was offering and I eventually got it when I needed to create an entire GUI framework, under MS/DOS for a volcano monitoring software. Buttons, gauges, oscilloscope screens, etc… were possible only by creating objects, just like writing Lego pieces. Since then, I can’t understand how I was able to do procedural programming at all.

What is your favorite open source project and why?

Nextcloud. The personal hosted file sharing solution. I especially enjoy the spirit of the project and the people behind it, dedicated to share knowledge, and totally open to suggestions, experience exchanges.

What would you say to the developer that was you five years ago?

Try to keep up with software technology trends to at least know what people are talking about, and read more books. You learn from others. A lot. And you save time.

What one book should every software developer read?

A bit dated, but Object Oriented Programming in C++ by Robert Lafore. Not so much for C++ but for OOP. I found it brilliant.

What is the worst advice that you commonly hear given to developers?

To deliver something ASAP under pressure and correct it, make it better later. This never works. And never happens.

Describe your favorite or most memorable “aha!” moment that you’ve had as a developer.

When I got it with OOP. As said, I needed buttons, gauges and realized that they all were objects: self-contained properties and functions. Each object knew were it was positioned, its width and height, and knew how to draw itself on screen. When my first GUI design attempt actually took shape for real and looked as expected, it was magical.

What is one weird or unusual thing you always do when you code?

I first roughly sketch everything on paper. That gives a clear picture, a roadmap of what I need to do, even if it’s for a two hour programming block. Then I eat chocolate and start.

What have you done as a developer of which you are most proud?

Writing a volcano monitoring software that I installed in Guatemala and that actually did work. After six weeks on-site, I released it and ten minutes before heading to the airport to leave, we had an earthquake at the observatory and the app immediately correctly reacted, sorted out what kind of event we had and informed us that it was not a threat. Two years later, it helped the authorities in the decision to evacuate a village that was actually partly destroyed by the eruption. It proved that software can actually save lives. Even if it’s just one life, it’s worth the hundred of hours writing code. Writing code is fun, and at the same time, it can make a difference.

Bonus Question: What is the question and the answer to the one thing that I should have asked you?

Q: Is writing software your favorite activity?
A: Besides spending time with my family, definitely yes. And as an icing on the cake, software writing brings me to spectacular parts of the world where I can see the direct impact of my applications on people and nature. This is very rewarding.

developers[]: Stuart Clennett

Twitter: @stuartclennett

Lincolnshire born, now living in Yorkshire with wife, kid, dog and horses. I began writing code as a hobby on a ZX81 when I was 11. With a few initial dalliances in sales, marketing & dev-ops, I have been lucky enough to be a full-time professional developer since 1995. Firstly in Visual Basic, then I joined a start up in ’97 that introduced me to Delphi v2. I’ve been running my own healthcare software company since 2006 & have several products in place, the flagship of which has been running a national level clinical registry for over a decade.

What is your favorite programming language and why?

Delphi, of course. I was initially taken by the speed, flexibility and lack of required runtime DLLs — I came from a VB background. I’ve grown as a developer with Delphi, including the eureka moment when I learned about OOP, through to it’s current language features and multi-platform capabilities. I love it’s stability and longevity — something I think developers from other languages & IDEs would envy. Next week a customer will finally retire a product I wrote for them nineteen years ago. It was still using Interbase and had a database that was twenty times the size I ever expected (or planned for) when I wrote it. It has, of course, been replaced by a different application, still written by me, still in Delphi.

What one piece of advice would you give to a rookie developer?

It’s hard to select just one; but if I had to, I’d say learn to love the dull stuff. The majority of software is not an off-the-shelf application, an app store download. It’s unlikely you’re going to be working on the next big Google AI project. The majority of software is one-off, dull, single line of business applications in every business that underpin the economy, quietly doing their job year after year (or in the case of Delphi apps decades at a time). And it’s these type of projects that you’ll likely end up working with. But if you love coding and solving problems, then you’ll still love working on them.

What is the most difficult programming challenge you’ve ever encountered?

One project required the automation of a previously manual task involving the creation of hundreds of PDFs from Excel workbooks each with dozens of custom designed pivot tables each unique to a large number of different hospitals. It took one person seven working days to complete, needed doing every month and was hugely error prone, with the serious consequence of one hospital seeing another’s results in their reports. Excel automation in the mid-2000’s wasn’t playing ball and the Excel object would often throw an exception with a unfathomable error code. I eventually got the whole process working reliably. On a moderately powerful server at the time, the whole process could be done overnight including the automated upload of the PDFs to a website. I’m not saying the code was pretty though.

What is your favorite open source project and why?

Right now it has to be VS Code. I am using it a lot as I’m learning Angular/TypeScript. I like the embedded command line, but I love how it handles imports; automatically adding for them as you type the source code, and dimming them if they’re no longer used in the source — I wish Delphi had that kind of automatic uses clause management. Honorable mentions must go to Notepad++ which still serves me well daily after many years, and Andrea Magni’s excellent MARS REST Framework which is the framework for the Delphi-written back-end of my first Angular application.

What would you say to the developer that was you five years ago?

Learn web technologies. Now. I feel late to the party and I’m playing catch up. I love how similar Angular/TypeScript is to Delphi so I feel completely at home. I still get a bit lost in the maze of symbols that is JavaScript. Can’t say I like the current JS trend towards writing super-minimalist code as it completely sacrifices readability in my view.

What one book should every software developer read?

If you’re at the start of your career, then the Pragmatic Programmer would definitely be top of my list as a first read — pragmatism is a much underrated skill. I’d follow that up with Code Complete and Martin Fowlers’ Refactoring. If you’re looking for something Delphi specific, there are many excellent Delphi books; Marcos’ “Handbook” series, the late, great Pawel’s Expert Delphi, Daniele Teti’s Delphi Cookbook, Dalija Prasnikar’s Delphi Memory Management, and the two Coding In Delphi books by Nick Hodges.

What is the worst advice that you commonly hear given to developers?

That you have to work hard and sacrifice your lifestyle for your work; as if working 12-18 hours a day will somehow make you a better programmer. It won’t, it’ll just make you a tired programmer who makes silly mistakes & eventually a burned out programmer. Work smarter and use any tool available to maximise productivity within your coding time.

Describe your favorite or most memorable “aha!” moment that you’ve had as a developer.

Ian Barker has stolen my thunder with OOP, so I’ll go with my second choice which was the discovery of how server applications actually worked. Back when Interbase 5 was new and shiny, I’d previously only worked with desktop databases like Access and Paradox files, even going back to my initial training in dBase II. When I learned more about TCP/IP and networking, and I saw how easy InterBase was to get up and running & how stable it all was I couldn’t believe it and I switched the product from Paradox to IB in a couple of weeks.

What is one weird or unusual thing you always do when you code?

Not terribly strange, but if I get stuck — writer’s block or a technical challenge — I give myself a fifteen minute break and play some guitar. Badly, but concentrating on something else helps me re-approach the problem with a fresh mind.

What have you done as a developer of which you are most proud?

Undoubtedly running my own company for thirteen years; doing sales, marketing, strategy, keeping up with industry standards all whilst being the sole developer and getting products to market. It’s been very tough at times but I’ve coped better than I imagined I would thirteen years ago. I am much balder than I was, but also possess way more business skills.

Bonus Question: What is the question and the answer to the one thing that I should have asked you?

Q: Have you ever been the subject of an interview before?

A: Yes once. I was in my early 20’s and managing the sales and marketing for a small software re-seller focused on self-learning products. I’d been mailshotting the hell out of the computer press at the time with press releases for pretty much anything we had to sell. I got the occasional slot in their “news” sections which was nice. It paid off big when Which Computer? magazine rang to interview me about software training in advance of their UK exhibition, the Which Computer Show. I got about half a page in their magazine that month. I wish I still had the article.

developers[]: Ian Barker

Twitter: @punctuation

Website: https://about.me/ianbarker

Born in London, England now based in Dallas, Texas. I’ve been a professional software developer for more than 35 years and can code in most programming languages although these days my COBOL is a little rusty! I spend most of my working days, headphones on, loud music ruining my hearing by nicely provoking the flow which only other professional coders know and understand. I’ve worked at several large blue chip companies in various managerial or senior develeoper capacities but I prefer to hammer out code on a specially-purchased clicky-clacky keyboard. I’m also a poet — code and poetry share a lot of characteristics. I can also pick locks, for similar reasons.

What is your favorite programming language and why?

Well, not one to buck a trend, my favorite programming language is Delphi. I’m competent in plenty of other languages (and get paid to work in them too, especially C#) but Delphi is the choice, every time. It’s due to the stability, it works forever and doesn’t go wrong, doesn’t require a bunch of odd dependencies or huge libraries and pre-requisites to download just to get the program working. Even my biggest flag-ship client-server product can run off a USB ‘thumb drive’, simply by plugging it in and running the exe. Using the same language and tools I can create apps which target Windows, MacOS, iOS and Android with very few considerations or hoop-jumping. It’s a world away from the 1980s; or even just maybe ten years ago.

What one piece of advice would you give to a rookie developer?

Learn how to use Google searches. Find mentors. Copy/emulate people. Don’t be discouraged on days when you think you’re just not going to make it – EVERY developer feels ‘imposter syndrome’ from time to time. With the internet at your fingertips you have access to the knowledge of quite literally millions of developers. If I’d had that when I first started out I would have pulled fewer all-nighters and have a lot more hair. 🙂

What is the most difficult programming challenge you’ve ever encountered?

Interesting question. I don’t really think like that. Coding means sometimes you have to do difficult things, often with no resources available from people who have met that challenge before. I work with a lot of hardware such as fingerprint readers, face recognition and hand scanners and in these days of globalization this means dealing with foreign manufacturers of varying quality, often in languages I don’t speak. Trying to work out why something isn’t working when the documentation is either incorrect, non-existent or incomprehensible is a pretty challenging state of affairs when you have a deadline to meet, especially when there is a 12 hour time difference between you and the hardware supplier. That, for me, is a common issue – plus trying to prevent sales and marketing people from writing marketing materials which are factually incorrect (which is more of a management problem but it’s quite prevalent in various companies I’ve dealt with so I’m guessing it’s a widespread problem).

What is your favorite open source project and why?

Oh, there are SO many and that’s one of the greatest things to have come about in recent years. If I was to pick one I’d say Heidi SQL as I work a lot with MySQL and it helps me with that plus it’s written in Delphi. I’d also choose Notepad++, VS Code, GitHub Desktop, CnPack and GExperts – they’re all the first things I install on a new development machine after Delphi.

What would you say to the developer that was you five years ago?

Buy Bitcoin, sell GB pounds. 😉 But seriously, I don’t think there’s much I would need to say to myself; I’ve been lucky enough to make good decisions and they’ve turned out well. The great thing about our industry is that it’s constantly changing and there’s always something new to learn or better ways to do things. I remember the exact day I decided I wanted to be a computer programmer (I was 14 years old and in a very boring Physics lesson) and I do that job every day and get paid to do it. The adage of “find a job you love and you’ll never work another day in your life” (paraphrasing Arthur Szathmary) – is absolutely 100 percent true in my case; I love being a developer and that hasn’t changed.

What one book should every software developer read?

The Design of Everyday Things by Don Norman. Don talks about things like “Norman doors” which is a door you approach and can’t work out how to open, push or pull, due to the design. Well, in software the trend is that software is containing more and more Norman Doors; screen controls we must discover by experimentation; essential behavior ‘hidden’ by such things as right-clicks. Before we are all lost in an abyss of flat things which should have ‘affordance’ (read the book) then I suggest that Don and his ilk should be an essential stopping place in any developer’s education. If you’re serious about development then you need to first get serious about design and human interaction.

What is the worst advice that you commonly hear given to developers?

A lot of webinars and ‘how to’ videos are given showing things like dependency injection and MVC with a ton of extra code which props up the technique the demonstrator is trying to show off. Very few guides try to emphasize efficiency and compactness in coding which is still, to this day, extremely important despite Moore’s Law giving us more and more basic grunt force. It’s not uncommon for me to meet a recently graduated developer who writes horribly sprawling apps with massively intrusive dependencies covering gigabytes just to do something really simple. My advice: keep it simple, understand when and why you need vital basic techniques like dependency injection but don’t shoe-horn them in just because it seems that’s ‘how it’s done’. It’s not.

Describe your favorite or most memorable “aha!” moment that you’ve had as a developer.

When the reason why object orientation was a great idea suddenly became clear to me it was like the clouds parted and some kind of deity boomed “welcome”. Not everything has to be an object – but objects, classes, interfaces and their ilk are how the cool kids go from being people who write programs to people who are programmers.

What is one weird or unusual thing you always do when you code?

I always wear headphones and drink frightening amounts of caffeine although this is not uncommon, I suppose. I do use the Pomodoro technique which is not as common. The formula works like this: hardcore drum and bass + caffeine + 8 Pomodoros = mucho mucho code productivity. I also take regular breaks to walk my dogs. Dogs help fix many bugs.What have you done as a developer of which you are most proud? Our industry is a moving target – and I’ve been in it long enough that everything I was proud of 10, 20 or 30 years ago now looks absolutely, devastatingly shameful. I’m only ever as good as my last 100 lines of code.

Bonus Question: What is the question and the answer to the one thing that I should have asked you?

How old were you when you first got paid to write a program?

I was 15 – and they paid me despite the fact I wasn’t asked to write the program for them. More on this another time. 😉

developers[]: Jens Fudge

Twitter: @JensFudge

Website: www.archersoft.dk

Editors Note: Jens is a great friend of mine, and one of the nicest guys on the planet.

I am a Danish developer also interested in Archery. I have two children and two grandchildren. I love working as a consultant and I love sharing knowledge.

What is your favorite programming language and why?

Object Pascal – Why.. obvious..It’s a really cool language that you can use for practically anything

What one piece of advice would you give to a rookie developer?

Read books written by developers, not books written by book-writers. Reasons are: developers write the pragmatic approach, book writers have only the theoretical approach and it can be hard if not impossible applying the stuff to a real world program. Also do not be afraid to ask experienced developers questions. There is a big fat chance they might answer.

What is the most difficult programming challenge you’ve ever encountered?

Lifting a Turbo Pascal program from 1987 to Delphi Tokyo. In fact the project was sort of already lifted to Delphi 2007 (pre-Unicode) but I had to take it further.

What is your favorite open source project and why?

Spring4D, is a large project. I (yet) only use a small portion of it, and that is some of the stuff made for Testing. It expands the DUnit/DUnitX frameworks with so much cool stuff that makes testing (almost) fun

What would you say to the developer that was you five years ago?

Add more tests.

What one book should every software developer read?

Tough question. Code Complete is extremely good, so are Coding in Delphi and More Coding in Delphi, so is Mastering Delphi, so are Delphi High Performance and Design Patterns in Delphi

What is the worst advice that you commonly hear given to developers?

I don’t think I hear bad advice… Maybe this one: To get around the “Circular references” compiler error, you just need to add to the uses clause in the implementation section in stead of the interface section. That is bad advice, as circular references are pure evil.

Describe your favorite or most memorable “aha!” moment that you’ve had as a developer.

When I first got my head wrapped around how events actually work

What is one weird or unusual thing you always do when you code?

I inherit from classes without expanding them. Example:
TPersons = class(TObjectList<TPerson>) end;
Nothing inside the class, just for my own readability

What have you done as a developer of which you are most proud?

I have had quite a few interns where the interns have had some “issues”, being as example very low self-esteem, very low confidence or other mental issues. I have worked with these individuals and given them so much confidence that they actually now lead a “normal” life with what ever implications that means.

Bonus Question: What is the question and the answer to the one thing that I should have asked you?

Q: How do you keep your knowledge current and up to date?

I myself attend conferences, buy books, read books, try to answer questions in forums but most importantly commit to give talks on topics I have little or no knowledge about, forcing myself to study on the topic so I in fact can give a talk about it to 200 plus developers

developers[]: Phillip Woon

Twitter: @pwoon48783

Phillip is a 54 year old Chinese Jamaican American. He’s married with one son. He has 32 years IT experience. lives currently in Cincinnati, He’s a Sagittarius, the Year of the Dragon. He loves comics, sci fi, and fantasy.

What is your favorite programming language and why?

Language is just syntax, but I would have to say my favorite language is Delphi because that is the one with which I’ve had the most experience. I don’t have to fight with the language to get the work done; I just have to concentrate on the business. It is very elegant, and the fact that it may not have all the fancy “tricks” of other languages, make the code easier to understand.

What one piece of advice would you give to a rookie developer?

Always remember you’re writing code for someone else (and yourself in six months) to understand. Yes, the most important thing is for the code to be functional, but the second is maintainability. I see a lot of people forget this most important aspect of software development. Any code worth anything will need to be maintained. Also, don’t be arrogant. If you’re good, let your work speak for itself. Don’t keep bragging about how good you are, because if you have to inform people that you’re competent, maybe you’re not as good as you think you are.

What is the most difficult programming challenge you’ve ever encountered?

It seems every job I’ve ever had is the more difficult than the last one (is that a law?) So, I would have to say in my current position (since that’s where I’m at now), is understanding the business and the current code that implements it. The insurance business is complicated (lots of advanced math involved in Actuarial science). Luckily, we have actuaries that do the heavy lifting, but this code is extremely complex (it’s not just a database application).

What is your favorite open source project and why?

My favorite open source project is Linux because it gives us an alternative to operating systems that are licensed.

What would you say to the developer that was you five years ago?

Don’t be afraid of new challenges. Always learn new stuff. Embrace new technologies and ways of thinking.

What one book should every software developer read?

The Art of Computer Programming by Donald Knuth. It was required reading in one of my classes in college when I was pursuing a Computer Science degree. I believe it’s guided me all these years developing and implementing systems.

What is the worst advice that you commonly hear given to developers?

The worst advice that I hear given to developers is that concise code is more important than readable and understandable code. I believe if something could be clearer with more code, that is preferable than less code that is less comprehensible.

Describe your favorite or most memorable “aha!” moment that you’ve had as a developer.

Simply that there is always a solution to a problem, you just have to step back and look at the bigger picture. Take a break. The best break-throughs come while taking a shower.

What is one weird or unusual thing you always do when you code?

I compile after adding five lines or less. I don’t like to code hundreds of lines to find that there are dozens of errors. I guess I’m lucky we don’t pay for compiling like in the mainframe days.

What have you done as a developer of which you are most proud?

I am most proud of the fact that any code I’ve written is instantly understandable by any developer that reads it. Not only do I have confidence in it’s performance and accuracy, but I feel that my code is very maintainable.

Bonus Question: What is the question and the answer to the one thing that I should have asked you?

The answer is “Yes”. The question is “If you had to do it over in another lifetime, would you still be a developer”?

developers[]: Jeff Duntemann

Jeff Duntemann is a writer and lecturer on technical topics, especially programming. He came up through the ranks at Xerox Corporation, learning Smalltalk, COBOL, Z80 and x86 assembly, and several in-house languages running on Xerox hardware. He left Xerox in 1985 to begin a new career in technical writing and publishing. His books include Complete Turbo Pascal, The Delphi Programming Explorer, the best-selling Assembly Language Step by Step, and many others alone or with co-authors. He also writes science fiction and fantasy, all of which is available from Amazon in both ebook and print editions. He lives with his wife Carol in Scottsdale, Arizona.

Twitter: @JeffDuntemann

WebSite: http://www.contrapositivediary.com

What is your favorite programming language and why?

Pascal. It’s readable, whereas C and C-like languages are not. Good native code compilers are available for it on almost all hardware platforms, and some of the best (like FreePascal) are now FOSS. GUI builders and visual software components are widely available, both as commercial products like Delphi and FOSS products, like Lazarus. I’ve played with languages now for over forty years. C/C++ wastes my time, and the code is utterly unreadable after a month or so. Pascal code I wrote in the 1980s still reads as clear as day. The fact that there’s a contest in the C community to see who can write the most opaque code in C will give you some idea of the mindset over there. No thanks.

What one piece of advice would you give to a rookie developer?

Just this: Learn assembly language FIRST. If you become competent in assembly (you don’t have to be some sort of wizard) you will know how the machine works, all the way down to the metal. Which architecture you study matters less than learning the fundamental ideas in assembly generally: opcodes, memory addressing, super-scalar execution, branch prediction, and so on. Also, there will come a day when you have to single-step code in a low-level debugger like gdb to figure out some bug or software weirdness that defies higher-level analysis. Without a working knowledge of assembly, you might as well just give up.

What is the most difficult programming challenge you’ve ever encountered?

Access to custom low-level hardware from Windows. Under DOS it was a snap. Today it’s easier than it was when Windows and other windowed environments were new. But back then, yeek, it was nasty. I’ve moved all of that sort of development to the Raspberry Pi, which was designed with custom hardware add-ons in mind.

What is your favorite open source project and why?

FreePascal/Lazarus. These are often considered a single product, even though FreePascal is perfectly usable on its own. (Lazarus is its IDE/GUI builder.) I favor them because what I do now in the programming realm is mostly teaching programming concepts to beginners. Any book or course must specify a particular toolset to avoid confusion among a multitude of IDEs and compiler quirks. I can’t specify Delphi because the compiler costs over $1000. For students (and creators of teaching materials like me) there’s nothing like FPC and Lazarus.

What would you say to the developer that was you five years ago?

Trying to control custom hardware from Windows is hopeless. Give it up. Cheap boards like the Raspberry Pi will soon be close to desktops in terms of compute power, and all hardware-control challenges should move there.

What one book should every software developer read?

Bruce Schneier’s Applied Cryptography. Security is only going to become more complex and difficult to understand as the field evolves, and all of it will have roots down into crypto. There’s never been a better treatment of cryptography than this.

What is the worst advice that you commonly hear given to developers?

“Never use uppercase characters. It means your code is shouting.”

Describe your favorite or most memorable “aha!” moment that you’ve had as a developer.

This was long ago, obviously, but it was the realization that Windows programming is really stimulus/response programming. Windows hands up some sort of stimulus (mouse click, keystroke, mouse enters or leaves a window, etc.) and your software must respond in a useful way.

What is one weird or unusual thing you always do when you code?

Take my shoes off.

What have you done as a developer of which you are most proud?

Taught other developers how to understand our increasingly complex field. I wrote and published a lot of beginner’s guides of various sorts, along with tutorials in magazines, and published a lot of such material written by others in my capacity as the editor of The Coriolis Group and PC Techniques/Visual Developer.

Bonus Question: What is the question and the answer to the one thing that I should have asked you?

Q: What was the coolest thing that ever happened to you in the software industry?

A: It’s a tie. One was meeting and interviewing Drs. Kemeny & Kurtz, the inventors of BASIC and probably the two most influential (if not the best known) people in the history of programming. The other was meeting Admiral Grace Hopper before one of her talks, and taking one of the little bits of wire she was handing out, the length of which (11.8 inches) was the distance electricity could move in a single nanosecond.

developers[]: Danny Thorpe

What is your favorite programming language and why?

English, because if you can’t describe what it is you are doing (or want to do), you’ve got much bigger problems than choosing a programming language.

I feel most at home / most productive with just about any strongly-typed compiled language. Bonus points for generics. Lately I’ve been working mostly with dynamic languages, and I really miss the days when I could discover my typos and syntax errors long before the app is up and running. Strong typing also makes finding dependencies much more precise than global text search.

What one piece of advice would you give to a rookie developer?

  1. Pulling an all-nighter to finish a project by deadline is not the mark of a great developer, it’s an indicator of poor planning. If you find yourself in a scrappy startup that hero worships all-nighters, my advice is: leave.
  2. Work hard, but also *make* time for a life.  Travel, social, hobbies, whatever fuels your passion, do it. The joy you create outside of work will spill over into your work.
  3. Never underestimate the power of off-by-one errors.

What is the most difficult programming challenge you’ve ever encountered?

Debugging a host application’s undocumented expectations of an OLE/ActiveX control, so that I could implement said control.  Specifically, reverse engineering Internet Explorer’s expectations of ActiveX plugins by stepping through miles of machine code looking for codegen patterns of IUnknown.QueryInterface requests, what interface GUID was being requested, and what methods were expected on those interfaces.


Prior to The Matrix, I described the experience as “Getting into a house through the kitchen sink.” After The Matrix, references to Cipher (“I don’t see code anymore. I just see blondes, brunettes”) became inescapable. While still cringeworthy, I’ll tolerate “I don’t see code anymore.  I just see stack frames, vtables, and function calls.”

The silliest part?  That spelunking around inside the machine code of another app wasn’t a task for work. It was an adventure of exploration to answer a what-if question that came up in a lunch conversation. Every new puzzle piece discovered, or discovery of a new technique to help things along, was as euphoric as beating the all-time high score of a video game.”Is it possible?”  “Yes. Yes it is.”
“How can you be sure?”

😏

What is your favorite open source project and why?

NBitcoin.  Kick-ass translation of the bitcoin-d core to C#, great developer behind it.

What would you say to the developer that was you five years ago?

Put $10k on Bitcoin. Hold for 5 years. 

What one book should every developer read and why?

Neuromancer by William Gibson.  Written in 1984, but still hauntingly prophetic about how tech and society impact each other. 

What is the worst advice that you commonly hear given to developers?

There’s no career path as a developer. Eventually, you’ll have to move into management to advance your career. 

Describe your favorite or most memorable “aha!” moment that you’ve had as a developer.

Self-Realization of the Mantras of Code Optimization:
1. Doing nothing is always faster than doing something. 
2. Procrastination pays. If you can put off doing something long enough, you might not have to do it at all!

Also: After years of working with Intel x86 machine code, getting to know the DEC Alpha AXP RISC instruction set was an eye opener – the stark primitiveness of RISC compared to the many nuances and peculiarities of x86 CISC.  

That was nothing compared to getting into GPU / SIMD architectures.  3000 processor cores all running the same machine instruction in lock-step, but each operating on different data.  It was a mind-altering realization.

What is one weird or unusual thing you always do when you code?

I always use a debugger. Sadly, in some dev shops that’s considered “weird”. When they see what can be done with a good debugger, “weird” mutates to “magical” or drooling gibberish, and again with the Matrix references.  Life is too short for writeln debugging. Life is too short for guessing at what the computer is doing. Fire it up in a good debugger, and see exactly what the computer is doing. If execution doesn’t match your expectations, your expectations need a reset.

What have you done as a developer of which you are most proud?

1. Contributed to the development of Delphi
2. Contributed to the development of Space Cadet Pinball (Win95) / FullTilt! Pinball (Maxis). That moonlighting gig was a gold mine of extreme geek adventures!
3. Built (single-handedly) a covered call option contract system on the Bitcoin block chain, pulling out all the stops for “Finance 2.0” rethink. Multi-signature escrows with automatic time expiration and rollback (non custodial accounts), contract fungibility, order matching market system. Failed to make it to market out of regulatory concerns and costs, and failure to find a fintech partner to operate within. “The operation was a success, but the patient died.”

Bonus Question:   What is the answer to the one question that I should have asked you?

Blue.  No, Green!

developers[]: Rob Fahrni

Twitter: fahrni

Website: https://fahrni.me

Former Windows developer turned iOS developer. I spent the first 25+ years of my career building Win32 apps. In 2006 I got my first Mac. In 2008 I got the iOS Development bug. I’ve been working on the platform ever since.

What is your favorite programming language and why?

Even though I spend my days writing in Swift I still really love C++. It’s like a favorite pair of pants. I think it’s because I spent so much time coding in it. It’s not overly verbose and it gives me all the flexibility I’m after in a language, even though you can really cause a lot of damage with it if you’re not careful.

What one piece of advice would you give to a rookie developer?

Keep your head down even when you feel like you’re not good enough. I’ve felt that way for 30 years now. Be patient, ask question, and don’t give up.

What is the most difficult programming challenge you’ve ever encountered?

Replacing a video decoding and rendering solution in an existing application with a brand new pipeline-based framework. It took a year to complete but the results were great.

What would you say to the developer that was you five years ago?

Your age doesn’t matter. It’s more important than ever to learn new things. Software moves fast so should you.

What one book should every software developer read?

The Art of Computer Programming: Volume 1: Fundamental Algorithms by Donald E. Knuth

Describe your favorite or most memorable “aha!” moment that you’ve had as a developer.

When I was learning to program in C, I struggled with the idea of pointers. A friend of mine said to me remember “& means address of and * means contents of” and it sunk in.

What is one weird or unusual thing you always do when you code?

When I check against null/nil in code I do it backwards; if (null == value), or if (false == value). It’s a habit I picked up writing Win32 code in C and C++. It allowed the compiler to balk at you if you accidentally did an assignment instead of checking for equality.

What have you done as a developer of which you are most proud?

I spent 10 years working on Visio. First as a Tester, then Build Engineer, Developer Support, and finally Development. It was the greatest time of my career and a golden era of software development.

developers[]: Jos Visser

Twitter: @GolezTrol

Here’s what Jos had to say about himself:

Programming since age 13, professionally since age 20. Delphi, PL/SQL, C#, PHP, JavaScript, and some others for hobby. Moderator on NLDelphi.com/forum, active member on Stack Overflow. Father of a beautiful 1 y/o boy. Love to play guitar, toy around with microprocessors, grow carnivorous plants, see a movie in the cinema. I also read a book now and then. Sometimes about programming, but usually (other) works of fiction.

What is your favorite programming language and why?

I love Delphi, since I work with it for 20 years, and I know it like I know my old coat, even though it looks just as shabby. The major pitfall of working in Delphi, though, is that it’s harder to shake off old habits in the same environment where you learned them. Still, for me it’s a great combination between modern power and flexibility, and a good dose of nostalgia. I’m fascinated to see that most questions on StackOverflow about Delphi are about FMX and app development, looks like Delphi is getting some traction in that area. I love C#, because its basics are so clean and concise. The language is very minimal without being _so_ minimal that it resorts to weird operators and unreadable constructs. Forcing to specify ‘out’ in the call to a function with an out parameter? Brilliant! Solves every discussion! It has many elegant elements like that. Resharper adds a lot of value there too. Embarcadero should ask JetBrains to help them out with the IDE. Too bad about the pollution because of the overuse of attributes and the sometimes less elegant .NET framework. That can quickly make your code look and feel clunky.

What one piece of advice would you give to a rookie developer?

Use version control from day 1. Automated hourly copies of your source folder is ok-ish, GitHub is better. Give yourself the freedom to play around and experiment by having the security of constant backups. When you’re just starting, don’t try to make it too nice. You can throw away your code (or pieces of it) and start over if it’s really a mess (never be afraid to do that! You got version control after all, right? Right?!). Just work towards the solution with the skill you have. If somebody gives you a tip for doing it better, have a look, try it out. If you don’t get it yet, it’s fine. Just keep it in mind for later. Learning to program takes hours. Becoming proficient takes years. Be patient, and learn in small steps.

What is the most difficult programming challenge you’ve ever encountered?

A big waterfall project with just me and this other guy. It took nine months. The part that made it difficult (apart from the general complexity) was the complete lack of feedback for eight months, the boredom/tiredness, confusion and loss of sense of purpose. Don’t do waterfall, don’t sit on your code for half a year without knowing if it even gets close to what your customer needs. I don’t ever want to do a project like that again.

What is your favorite open source project and why?

OpenTTD, Open Transport Tycoon Deluxe. I loved the original closed source version of that game, but the open source rebuild adds so many features and possibilities, without negatively affecting gameplay. Also, the way it was approached. At first it used the resources (images, music) from the original game (which you needed to have), but slowly all those aspects got replaced as well. The love for the original game, the incremental approach for improving it, but also, very importantly, the fact that it was clearly documented, and easy to build in Visual Studio Express without any hassle.

What would you say to the developer that was you five years ago?

Step up or get out. My job sucked back then and was mainly high pressure maintenance work. I should have quit and/or have taken the time to learn more new stuff, instead of accepting that situation.

What one book should every software developer read?

Interesting Times by Terry Pratchett. It’s fantasy, but describes the magical supercomputer Hex, (with an Anthill Inside), and gives every IT aficionado something to relate to, and a good laugh. And of course, Nick Hodges’ books with tips from a global array of Developers. 😉

What is the worst advice that you commonly hear given to developers?

“We can always improve it later.” That’s a legitimate reason for not spending 10 years on making it perfect, but too often it’s given as a reason to build a hacky, hardly working proof of concept version, that just ends up in production, and is never looked at again, until it bites you in the ass.

Describe your favorite or most memorable “aha!” moment that you’ve had as a developer.

Once, after a long night of debugging, I gave up, went to sleep. Next morning I woke up half an hour before my alarm, and I had been debugging in a dream. I woke up with the exact line number and the fix I needed, and when I got to the office it turned out to be the right line and the right fix. My problem was fixed within a minute.

What is one weird or unusual thing you always do when you code?

Red, green, refactor. 😉 When I try to copy something, I often hit Ctrl+C many times. Also, I hate when people are looking at my screen when I’m stuck on a problem, and I tend to alt-tab away until they are gone. And sometimes I shout out “YESS!!!” when I solved that little problem and my code compiles and works. It’s okay to celebrate small victories. 🙂

What have you done as a developer of which you are most proud?

I try to listen a lot to random users of my software. Since I’m working in an in-house IT department in a bigger company, I get to meet lots of my users. In the end I think IT is a service sector, and end users can be really, really happy if you fix this one ‘minor’ UI thingy that is nagging them every moment of their working life. I try to say ‘no’ very little in general, because just the fact that you’re trying to make someone’s life (or just work) better can really bring a lot of joy to them and to you, even if the objective result is sometimes trivial compared to the big new feature that had to wait ten minutes for this fix.

Bonus Question: What is the question and the answer to the one thing that I should have asked you?

42 (It’s my house number)