Finally, I’ve managed to continue with further interviews. I can’t believe it’s already almost mid February! Time flies when you’re having fun!
This week’s developer interview goes to Alan Graham, owner at The Simpler Solution , who I’ve worked with a few years ago at Innovation Digital.
Name: Alan Graham
Bio: I graduated 8 years ago, and began working on a number of web projects using Java Servlets and then JSP technologies for various employers during the dotcom bubble.
Having become rather disillusioned with the configuration / set-up overheads of the early Java platform (Apache, Tomcat, etc), I quickly moved to the Microsoft .NET Framework upon its release. I’ve been working with this technology exclusively since its release, in a mixture of Web, Mobile and desktop systems development.
Just over 2 years ago, I decided to move into the contract / freelance market, specialising in problem-solving existing systems, and improving software quality across entire teams. Through this, I gained exposure to the Umbraco and Immediacy CMS platforms, which now make up around 75% of my work.
For the future, I’d like to do more freelance and less contract work, allowing me to work at home, taking my 2 year old Basset Hound for walks when the Scottish weather allows it.
Specialities: Software Quality, Umbraco CMS, Immediacy CMS, anything Microsoft .NET really!
URLs: The Simpler Solution
Question 1 (Colin Brown): Over the past 2 years mobile web browsing has become far more common and accessible, gadgets such as Apple’s iPhone has helped to raise the bar in this field. How important do you think developing websites for this medium is? Should mobile browsers, such as Mobile Safari be one of the web browsers we build websites to comply with?
Alan: Yes. In my opinion there will be a slow convergence in this area, as mobile browsers become identical to desktop browsers in all aspects but screen size. At the very minimum, your site should be robust and correct on an iPhone. If your site is functional in nature (e.g. paypal), then I would highly recommend an alternative UI for iPhone / mobile devices. This UI could then be designed for the particular screen size requirements of the device(s).
Alan: Interesting proposition – not something I’ve thought about. My gut feeling is that Flash will be around for a long time to come, as a large amount of people are skilled in it, and many digital agencies just want to crank out the work without improving their craft. A similar effect exists in the web-app / desktop systems world, with systems still being written/maintained using Delphi, Visual Basic and ASP etc.
Question 3 (Diego Campo): Have you thought of changing your career during the last year? If so, which one?
Alan: I’m a really keen photographer, and despite doing 5 or 6 weddings a year, I think I will remain an amateur. It’s something I think about fairly frequently, however I already turned one hobby into a career, and I value the fact that when I’m being artistic, I’m in my own time, and am not constrained by commercial decisions. These are the essential things I enjoy about my hobby, and to start doing it commercially would ruin it for me I think.
Apart from that – I don’t think there’s anything else I’m good enough at to take up as a career!
Question 4 (Colin McMillan): As a developer you need to keep on top of emerging technology. Given that there aren’t enough hours in the day, how do you decide what technologies or languages to pursue?
Alan: Simple answer – I follow the herd. I don’t work on the bleeding edge, but look and see what others have done, or are doing. Then, I’ll evaluate that technology on a single small (often throw-away) project, and decide from there whether it’s worth it. This is a fairly cautious approach compared to some of my colleagues, however I think it gives the client the best value for money, whilst also giving me decent profit margins.
Sometimes a client has particular requirements though. For example a current client insisted their system was based upon the MS Entity Framework for Data Access. Having now used this, and discovered its weaknesses and strengths, I’ve been able to give my opinion to others who, similar to me, won’t touch something until someone else has an opinion.
Question 5 (David Poblador): How has open-source/free software changed the way you develop software?
Alan: Absolutely. It allows me to stand on the shoulders of giants. In a morning’s work, I can have the entire Data Access, Logging and Security system for a bespoke ASP.NET app, thanks to Castle Project, Log4Net and the bundled in features of ASP.NET.
In addition, free programmer resources such as CodeProject are often undervalued. Of course, you shouldn’t just cut & paste the code, but having a working code sample for a new technology rapidly improves your understanding.
Question 6 (Kilian Valkhof): What do you strive for most in your code?
Alan: Simplicity. Code should be refined over several iterations, with the aim being to make it smaller, lighter and easier to understand. I spent some time in the past as a maintenance programmer, and know only too well the pains of amending highly complex inter-connecting systems.
Through simplicity you write less code. Less code can only mean fewer bugs, easier to understand structures, and quicker-to-amend systems.
Question 7 (Catherine Bartlett): Tell me about the best developer you’ve ever known.
Alan: I’ve been privileged to work with a great deal of truly awesome developers, so I couldn’t really single one out for victimization.
What they all shared was a passion for correctness, the bravery to voice their opinion when needed, and knowing the right balance between architectural excellence and business profitability.
In addition, the very best of them have not taken things too seriously, have realized that this is, after all, still just a job, and most importantly of all, have made their own mistakes and held their hands up to them.
Question 8 (Erik Vold): What are some of the new technology trends that you think we will see in this century?
Alan: Crikey, am likely to get this hilariously wrong…. My track record at technological trend-spotting is notoriously poor.
The last 2-3 years have seen a lot of improvement in the data layer. Now, using Castle Project’s Active Record, and nHibernate, you don’t even need to consider the SQL at all – build your objects in C# and let the API do the hard work for you. So, the database might not die, but it could well become a back-end thing that you rarely, if ever, think about.
Also, there’s a lot of talk of things in “The Cloud” however, from what I can see, there’s no standardized way to interact with “cloud data”. For example, on moo.com I can specify images I want to use from Flickr, and it pulls them across. What I’d like to see is some way to generalize these connections, so that a site could loosely connect to millions of other sites in an easy manner.
The simplest way I could imagine this happening would be through WebDAV, with some sort of central repository of all WebDAV resources. This would work best when web-apps offered 2-way connectivity. I could choose to twitter about a file in the public area of my dropbox.com account, or have Flickr automatically pull in pictures from my Facebook, too. I don’t think I’m alone in thinking that, in order to entrust all my data to the cloud, I shouldn’t be forced into one or another particular service. For example, Dropbox.com might integrate seamlessly with Flickr, but not with Smugmug or Picassa. An open market would allow you to pick the best app for you circumstances, rather than the best app that interacts with your other apps.
Question 9 (the contributer would like to remain anonymous): How much of your work time do you spend analysing defect reports so that future instances of the same defects may be mitigated, or altogether removed from future builds?
Alan: I’ll be honest: no time at all, or very little. When I am fixing an issue, I will always prefer to introduce a change that decreases the likelihood of a similar defect occurring, and where team education is required, I will take that on.
However, when hired as a contracted resource, my job is frequently to “Perform X tasks by Y deadline” and as such I have limited remit to get involved in this way. In some (less enjoyable) contracts my attempts to spend time improving the team has been discouraged entirely, as I’m there to do a job. This is always a bit of a shame…
Question 10 (Alan Graham): We are bombarded every day with new approaches, new libraries (Prototype.js vs jQuery, Java vs .NET, PHP vs everything), new free services (Google Analytics vs ???). What criteria do you use to quickly decide what to use?
Alan: Aha, my own question, which I kind of answered above in Question 4. Most lunchtime meetings or beers after work quickly descend into discussions over who’s doing what and how they’re enjoying it.
I’d say I’m swayed by my past experiences (I’ll naturally choose a .NET solution before anything else), but then after that I’m happy to go with what a trusted colleague has already used.
Question 11 (Richard Kelly – fellow online marketing dude): How much of a pain do you find developing and re-developing code for SEO?
Alan: Generally I’ve been fortunate enough to work side-by-side with the SEO folks, even from project kick-off.
In a few rare cases, SEO experts have asked us to do things that are technically not ideal, but I think it’s important to realize that to have an excellent architecture you need a profitable business paying the bills. Good SEO ensures the hosting costs, and my day rate, continue to be paid. )
Question 12 (Felicitas Betzl): Having worked in a variety of agencies I’ve seen major collisions between account/project managers and developers for a variety of reasons. Can you think of 5 tips you can give account and project managers, which you think would make developers lives easier?
Alan: I think this question should be a bit more open, and should include ways developers could make PM’s lives easier too.
So, here are my 5 tips for an easier and smoother office existence:
• Don’t lie to the client. Not once, not ever. Every time you lie, you are digging a hole to climb back out of. In most cases you’ll be putting someone else into that hole.
• Developers: realize that “No” is not actually that helpful an answer. Offer alternatives, discuss ways the problem could be resolved, or if you are too busy, suggest things that could be dropped in place of this request.
• Accept the incompressibility of time. If a developer reckons it will take 3 days to do a task, then it is pointless trying to do it quicker. Similarly, if a developer realizes it will actually take longer than 3 days to complete something, then shout about it as soon as you know, rather than at the end of the 3rd day.
• Act as a buffer. A good PM should know what each developer is doing, and should shield them from the day-to-day project trivia. Developers work best when left uninterrupted to get on with a task, and should be able to turn to the PM for clarification on details about the project.
• Define what it means when a developer says “That’s done”. I’ve heard some developers say something’s “done” when it compiles and is checked in (“Testing’s for testers!”). More commonly: does “done” mean that the code passes all Unit Tests, that the feature is thoroughly tested from end to end, that the feature is uploaded to a test server for approval by client or that the feature is approved by the client. Every developer has a different concept about when a task is “done”, but every PM expects “done” to mean one thing only: this task is completed entirely.
Question 13 (just for fun): What is your favourite cartoon character?
Alan: It has to be Penfold from Danger Mouse, mostly because of the resemblance with my big glasses
Thanks a lot, Alan! Really interesting answers! We will have to organise an Innovation Digital reunion sometime.