Recently a programmer I know decided that it was time for a career change, leaving the IT field entirely. This gave me cause to think; what does it take to be a great developer. Many people go through school believing they have what it takes, only to receive a rude awaking once they enter the real world.
Before I go on, I think it’s important to define what I mean by developer, and the differences between a developer and a programmer. Here are a few key aspects that every great developer must possess:
- Is able to take a very basic list of requirements and develop a stable and maintainable application design and architecture.
- Understands that working with end users is critical in creating great software.
- Has an intense desire to not just learn, but to know everything about the field they work in.
- Loves software, and creating it.
There are many programmers, but developers are fewer but add far more value than a programmer. Eric Sink defines a developer as “programmers who also contribute in non-coding ways” – I think it’s important to understand that coding is just one part of creating great software, and the great user experience that goes with it.
But I digress, back to the topic. When new programmers come out of school, they often have little idea of what the industry is truly like. They often believe that they have a strong understanding of the industry, the methods and techniques used, and what life will be like working as a programmer. The reality they expect many times doesn’t resemble the reality they experience.
To succeed, new programmers need to expand their knowledge and try to become true developers, not just programmers. Unless they find jobs at a major software development company, such as Microsoft, odds are they will need these extra skills to get ahead.
Learning how to better troubleshoot issues, working with end users that are having issues, or have ideas for changes will be a step forward to become a developer. Another item to focus on is finding an understanding of design and architecture so that they are more capable of designing a maintainable large-scale application; a key value for small development groups.
To be a great developer, programmers must have a passion for software, both in using and creating. This is something missing in many of the recent graduates I’ve met. These are the programmers that will end up going the route of changing careers; those without a passion simply won’t make it.
Note: This is from the perspective of small software teams; larger groups may have somewhat different priorities.