Welcome to our continuing series of Code Project interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we track down Code Project member Pete O'Hanlon.
Pete has been a Code Project member since 2003 and been a Code Project MVP every year since 2008. Developers like Pete make Code Project what it is and that's probably why his interview was one of the most requested from the community.
Who are you?
A long time ago, in a galaxy far, far away, the old republic was overthrown by a Sith lord to form a new empire. To form the empire, he deemed that the protectors of the republic, the Jedi Knights, would be hunted down and removed. A handful of Jedi Knights escaped the cull and were scattered across the galaxy. We sought refuge in places such as Dagobah and Tattooine. The thing that these places had in common was that they were all considered inhospitable back waters. One by one, these Knights died out until only one was left; the one known as the Geordie Jedi; this is his story, and the story of how he came to help shape a new republic, the republic known as the Code Project.
For those who have had the good fortune never to have met me, my name really is Pete O'Hanlon (no wishy-washy pseudonyms for me), and I run a small consultancy based out of the North East of England. I've been coding software since the end of the 70s, and have been coding professionally since the late 80s when I was a C and Informix developer on HP Unix boxes.
Over the last 5 years or so, I've become a semi-permanent fixture in the Code Project forums and have authored a few articles, some of which I actually quite like.
As a proponent of XAML based technologies, I am lucky enough to be in regular contact with some amazing developers, such as Jesse Liberty and the god of Windows programming Charles Petzold (who really is as deep as his books suggest).
What do you do?
Paperwork. A lot of it. As a company owner, I spend an inordinate amount of time reading things and talking to clients. Actually, the talking to clients side is really rewarding, and can be really enlightening; this side of the business really takes you out of the developer comfort zone and forces you to think about all sides of the delivery process.
Unsurprisingly, I also do a lot of WPF and Silverlight. I've played some small part in developing the Silverlight portions of Onyx and some work on MefedMVVM, and I have written my own application framework called Goldlight which is being rewritten from the ground up to be an adjunct to MefedMVVM (for WPF, Silverlight and WP7). Once WinRT has stabilised, Goldlight will also support Metro applications.
Inspired by Karl Shifflett, I developed a Visual Studio addin called MoXAML Power Toys which introduced productivity functionality for XAML applications in Visual Studio. I have recently updated this to be plugin based, and have released this on CodePlex.
Currently, I am working on a project with Code Project legend Sacha Barber which is pretty darned cool. We think it will be of great benefit to developers and teams of developers.
I occasionally remember to transfer notes from various post it notes into articles here on Code Project, and to my somewhat rambling blog.
What is your development environment?
Surprisingly enough, I spend most of my time using a fairly low powered laptop. It's a Dual core running Windows 7 64 bit, and has 4 GB RAM. The reason I develop on this is so I can get instant feedback on how an application runs on a lower spec machine. My sole luxury here is my dual monitor setup, which is absolutely vital for me running Visual Studio 2010 SP 1 and Expression Blend 4 side by side.
How did you get started programming?
I kind of fell into programming, almost by accident. I'd been in hospital when I was a kid following an operation to correct Talipes feet, and I was off school for a long period of time. My parents took pity on me and bought me first one computer, then another.
Within a couple of years, I'd moved onto the usual array of ZX81s, Commodore 64s, Spectrums and BBC B, before taking a course programming in C. C was this huge intellectual puzzle which fascinated me, and I became hooked, eventually being lucky enough to land a job developing in it. From there, I graduated to C++ and then C#, and I have never looked back.
What is your coding pet peeve?
I'm fairly easy going with coding style, so I don't have much in the way of peeve. I only really have four things that get to me:
Inconsistency. If you have a style, stick to it. Don't chop and change because it makes me work harder to try and understand what your code is doing.
I really don't like long complex functions. Please break them down as I am a bear of little brain, so I can't comprehend it all in one go.
Public methods put in conditionals just to test private code. Exercising private code should happen as a result of testing your public methods you shouldn't have to add extra code to get to it.
If you must comment code out, and you don't intend to put it back in, then remove it all together. Again, if I have to skip over commented out code then it makes it harder for me to comprehend what your code is doing.
I'd have to say that WinRT is my big fascination right now. I'm currently looking to see how my company can make money out of this, and I'm also satisfying some of my old C++ itch by developing some of the functionality in C++, which is super-easy in Windows 8.
I never stop learning. I have picked up so much from authors here on Code Project both in areas that I am working in, and in unrelated areas where somebody has done something cool that I can just marvel at the beauty of their code.
What advice would you offer to an up-and-coming programmer?
First of all, get yourself a life outside of computers. I know it's odd hearing this from somebody who spends so much time on Code Project, but you need to have interests outside of coding; trust me, perspective makes you a better coder. I am a husband and father first and foremost, a guitarist second, and a coder third.
Don't be afraid to read around the subject and to try noddy applications. The best way to learn something is by doing it, so if writing a console app calculator helps you master a language, then good for you.
Coding requires discipline. Write unit tests. Think about inputs to your routines, and try and cope with the bad as well as the good.
Delivering software is about more than just writing code. Listen to what your clients want; don't try and sell them on cool technologies just so you can play with them, actually figure out what will solve the problem the client has.
Give something back. It took me a while before I started helping out in the forums, but I eventually started to answer questions just as a way of thanking those who helped me when I started here on Code Project. If you give good answers, you'll grow as a developer, and this should help you in your career.
Finally, don't be afraid of other coders, no matter what their reputation is. Your opinion can be just as valid, so don't let yourself be browbeaten. But if you are wrong, admit it and move on.