How to be a great developer

How to be a great developer

Achieving greatness as a developer is as much about business knowledge and people skills as coding smarts, says Dan Frost

At heart, I'm a techie. I love the nerdy detail and the things you can do with lines of code. But at times I hate the pain of coaxing results from developers or coercing them to ‘think like a human’. This can damage the project, the product and the team.

I’m not alone in this, and developers should be wary. Development is getting easier and non-techie people can build loads of things nowadays without touching a line of code. So any developer worth the salt needs to rise above the IT Crowd mentality.

Pulled in two directions

That’s not to say it’s easy for developers, of course. They’re being stretched in two directions: towards the human and across the full technology stack. The first of these comes out in books like The Passionate Programmer, while the second comes in the form of the DevOps trend, urging developers to understand more than just the files they create and edit.

If you find a developer who’s strong in both these areas, grab them!

Communication skills

Let's start with the human side of things. In our industry everything is communication, from the ethernet cable to the brand image. A keen understanding of the technical side is useful, but it’s useless without an understanding of the real world. Recognising this divides developers into two camps: those who can get through code and those who can create really useful software.

Regarding the former, it’s not always their fault. Too often developers have come from environments where they've worked alone, kept away from the users and their real requirements, and kept separate from the production environment. They’ve had to work with the technology someone chose 10 years ago because "that's what we use". None of this lends itself to happy developers who get on with the rest of the company and produce amazing results.

People skills

Great developers understand the business they work in, not just the code. They appreciate the business rules and operational requirements of the people working around them because without this they'll generate code that fixes no problems.

As in any profession, the ability to understand and communicate with other humans well makes you more useful. Devs are prone to thinking about what's in front of them as important (as are we all). The danger is that they don't care about what they can't see or hear, and so the focus is often on code rather than the result. (Read Thinking, Fast and Slow for more on how easily we’re distracted by what's in front of us.)

In contrast, when you sit with a developer who understands your business you see something very different. They know how the users interact with the DB and how it's likely to evolve. In fact, business knowledge can outweigh technical knowledge because these guys simply get the right things done, rather than hellishly creating code-for-code's-sake.

For all the lovely, nerdy lines of code, if all you need is a simple fix then go with that.

Pushing yourself

But there's more to being a great developer than just being human. The Passionate Programmer outlines many ways in which programmers should continuously up their game, learn new skills and generally not slow down. Programmers have to learn new things quickly, be it for a new project or just implementing a new feature for an existing product.

Great developers will take on a project just for the stuff they learn from it, something much more than 20 minutes of the howtos. Github has transformed pet projects in CVs and the very best will be doing this to production standard, not just copy/pasting code to see the example work.

Know the platform

Devs need to know the platform. The Passionate Programmer puts this in terms of understanding the run-time environment: if you program in Java, understand how the Java Runtime Environment works. If it's Ruby, know the Ruby Interpreter and read the source code for it. Devs who understand the platform can fix faster because they solve problems from the bottom up. The rest will just try things until they work, however long that takes... and that can take a long time. A long, long time.

This relates to something that should be mandatory for every developer these days: devops. Cloud computing has made everything software: servers, routers, disks, the lot. Developers need to understand how their stuff works in production and what the operational requirements are.

In devops, developers know, understand (and kinda love) everything about the platform they're running on. You not only get more out of the dull infrastructure but you might even end up building stuff none of you thought possible.

Why rant?

These ideas aren't mine and many aren't new. The idea that a techie should understand the real world is fundamental to the design and build of anything: houses, cars, MP3 players...

So why the rant? Surely these days every developer that walks through the door understands not only NoSQL and mobile development but also basic UX and how to work in a team? If only. This is sadly lacking in too many candidates and finding developers with a rich enough skill set takes time. It's worth that time, but the industry as a whole is expecting more.

There is a lot of advice out there, both for developers wanting to be truly useful and anyone working with developers to expect a little more. The market is getting more competitive so arm yourself both with excellent devops skills and the ability to think like the humans you work with. And, if you're hiring developers then help me make the world a better place: expect more from them. They'll thank you in the end.

12 comments

Comment: 1

Good article, but unfortunately there aren't enough hours in the day for what Dan suggests. You can't expect a web/software developer to also be a business developer and UX designer - even if they can, these tasks can become a big distraction from the core activities of the programmer. Instead, dev teams and their clients should realise that they need to work with the programmer(s) - rather than just throwing things at the programmer and telling them to sort it, they should work with the programmer to identify the best solution that achieves the desired outcome that is realistically achievable in the desire timeframe and/or budget.

Comment: 2

Is developer a different job then programmer? Who does all the coding and unit testing and setting up deployment chains and packaging scripts and dependency management and open-sourcing and githubbing and following a zillion standards and modules when you're reading up on new UI and business trends? What you describe is the link between programmers and creative/business people, call it a lead-developer or team manager or maybe a producer?

Comment: 3

Developers need to understand how their stuff works in production and what the operational requirements are.
[img]http://www.filii.info/pclab.gif[/img]

Comment: 4

It seems you need an imense set of skills to be a great developer. There's not enough time to master everything. Are developers expected to work all day then reach home and still study all night? Not gonna happen.
In my opinion the ideal for a workpace is to gather specialized developers that suit your needs and have them work together. This is where I would like to be.

Comment: 5

I agree with all of the above, there isn't enough time in the day to become the web master everbody expects you to be. In fact we had to re-think how we develop projects purely for that reason and improve our project timescales so that our developers have time to develop their skills and remain 'fresh' in the ever changing world of programming.

Comment: 6

Add a wife and kids, or dogs, into the mix, and the distractions increase! There's never enough time in the day to be the best you can be, especially if you run your own company. Teams and specializing are the only way to achieve greatness with products and people if you plan to grow your organization. On the other hand, if you're single and only do one project at a time, your chances are pretty high for being a "great developer".

Thanks for putting your thoughts into words, Dan!

Comment: 7

Very nice write up, I wonder however whether the role described is more in-fact a project manager. They in particular have to be in tune with all aspects of the project, technical side and user / organisation side, however they in an ideal world are not the ones tasked with coding, that is communicated and translated back to the development team.

Maybe from a one man band perspective the above description is correct, however I would be tempted to say (as others have) that it is too much for one person. Therefore maybe a two man band would be more efficient and ultimately provide an overall better service.

Thanks

Comment: 8

Nicely said, my global recommendation is that you attempt to stop thinking of yourself as a developer - it is an artificial term that will limit your thinking and your paths to learning. You should be approaching your learning as a creator looking to generalize your education and skills, not as a developer trying to crossover to the mystifying land of art and design.

Comment: 9

Excellent and detailed articles are always appreciated so do I. Few lines I'd like to add:

Studying the source code of other programmers is an excellent means of improving your own skills. Work your way through their code, step by step, working out the flow and what happens to the variables. Then try to write your own code to do the same thing (or maybe even improve on it). You'll quickly learn why things need to be written a certain way and you'll also pick up some useful tips on how to write efficiently.

Thanks

Comment: 10

There is simply not enough time in a day to spent on other things besides developing. It is not gonna happen. As a developer, all you want to do is focus on what you are developing.

You don't have the time to do anything else, especially business related. You don't care about marketing, you don't care about who was fired today. All you care about is what you are developing.

I something wish there were 100 hours in a day! Good article though.

Comment: 11

Communication skill and technical knowledge with smart work is must to become good developer in any technology becasue these two things will help to become more successive in the in the specific field.

Comment: 12

Interesting article thanks.
I am a designer but with development abilities.

I saw on the Adobe Creative Week website the debate topic:
Should designers/developers be a Jack of all Trades, or the Master of One?

What do you all think? Opinions from both Designers & Developers welcome.
Should there be a crossover or are these two separate disciplines that should be kept separate?

Anyone annoyed or pleased by the blurring of design vs development roles?



Look forward to your opinions folks....

Cheers



(Link to the Adobe Creative Week site here: http://bit.ly/Kic1Fk )

#CreativeWeekUK

July issue on sale now!

The Week in Web Design

Sign up to our 'Week in Web Design' newsletter!

Hosting Directory
.net digital edition
Treat yourself to our geeky merchandise!
site stat collection