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)