Dev of the Week: Henrik Warne
Every week here and in our newsletter, we feature a new developer/blogger from the DZone community to catch up and find out what he or she is working on now and what's coming next. This week we're talking to Henrik Warne, a software developer in Stockholm, Sweden and 20-year programming veteran. Some of his most recent DZone posts include:
1. What have you been working on lately?
I am a software developer at Symsoft in Stockholm, Sweden. We make systems for mobile phone operators to process calls and text messages. We use an in-house platform written in Java, and I spend my days coding, testing and fixing bugs.
2. You've written quite a bit about testing, debugging, and logging. Are there any issues you keep seeing again and again? Any recurring bugs that particularly frustrate you?
There is no single type of bug that dominates - we get a wide variety. We have spent quite a bit of time to develop good logging and debugging tools, so a lot of bugs are not too difficult to find. In general, I think many developers don’t spend enough time making their software easy to debug. For example, the message in an exception is often something along the lines of "Illegal value.", instead of "Illegal value. Got 0, expected value in the range 1 - 10". By including dynamic information, you get valuable information when you are troubleshooting.
In the past, I have worked both in testing and in support, and it made me much more aware of what is needed when you are trying to solve a problem.
3. Are there any particular developer tools or resources you couldn't live without?
My most important tools are: a good *nix shell, an IDE and an editor. I use a MacBook Pro, so I have a good shell there. When I am coding in Java (which is almost all of the time), I use IntelliJ IDEA. I especially like the navigation features (like jump to definition, find usage etc.). It has great key-bindings, and they are easy to customize, so I hardly touch the mouse when I am coding. For plain text editing I use Vim. I used Emacs for a long time, but decided to give Vim a try as well. I like both of them. They are both powerful and customizable, so it is more a matter of taste than anything.
4. Do you have a favorite open source project (or projects) that you've contributed to recently?
No, unfortunately not.
5. Do you follow any blogs or Twitter feeds that you would recommend to developers?
This is hard to answer, since there is so much good content available these days, but I'll mention two. Martin Fowler (@martinfowler) has been providing great insights for a really long time. An old, but good, article by Martin Fowler is "Avoiding Repetition."
I also like Ned Batchelder (@nedbat). He too has been writing good stuff for a really long time. A good (and old) one by Ned Batchelder is "Fix Error Handling First."
6. Did you have a coding first love -- a particular program, gadget, game, or language that set you on the path to life as a developer?
Yes, my first love in computing was a VIC-20 computer. I had a friend who had an Apple II, but they were too expensive for me. The VIC-20 was affordable, and I bought one almost as soon as they came out. I had a lot of fun writing BASIC programs!
Although not a "first love", I also fondly remember the first system I worked on (in the 1990s): the AXE telecom system from Ericsson. It was programmed in the proprietary language PLEX. It is quite a simple language, but very well suited for telecom applications. It uses ideas from actor-based systems, which are quite popular today in for example the language Erlang and the framework Akka. The AXE ran on custom-developed processors. It had great debugging support, and you could patch the software of a running system - pretty neat!
7. Is there anything else you'd like to mention?
I still love programming as much as I did when I first got my VIC-20. A lot has changed since then. Every year there are more languages, frameworks and tools available to use and build upon. These days it doesn't take much to put up a web site and run it from a cloud provider, or to publish an app.
Despite all these changes, many aspects of programming are still the same. You still have to express the logic of what you want your program to do, even if the language may have changed. It is this creativity in programming that I still enjoy so much. Just by writing some code in your editor, you are able to create something new and useful.
I think Fred Brooks said this very well when he wrote about why programming is fun in the beginning of the book "The Mythical Man-Month":
"Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by the exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself."