Last time I spoke about how it’s important for everyone to learn some coding skills. However, the reverse is also true – software developers need to learn to think beyond just coding. Now, if you’re a hardcore coder you might scoff at the idea that there is anything outside of coding, but if you want to be a programmer who writes excellent high-quality software, then you’re simply going to have to do more than just be a master at writing code.
As systems get more complex and customers more demanding in what they expect from their user experience, we need to have the ability to think bigger in scope of how the code we write interacts with the greater system, while also getting closer to understanding the customer. There are many different things that we can do to better understand these in our products, but the following are key areas that software developers need to be willing to master if they intend to move from good to great:
1) Be your own customer
It should go without saying that developers should understand how their software is supposed to work, but surprisingly I seldom find it among developers today. They simply don’t play enough with their own software and not just in learning to understand the details of how it works.
Go beyond using it from the point of view of how you believe your software should work – try going through the documentation step by step in setting things up or try actually building a solution similar to that of your clients. While there is certainly no shame in having customers know how to use your own software better than you – don’t be a complete novice either. You should be an expert of what you build.
2) Know the big picture
Going along with this first step is also understanding how your small piece of the puzzle fits into larger production systems. You may think you have a good grasp of your product – but how is it implemented in a real world solution and what are the different solution challenges that you need to be aware of. Customers will inevitably have big systems with multiple software parts all talking to each other – do you know what these different systems look like?
The more you understand the bigger picture of how your products work, the better equipped you will be in contributing towards its future.
3) Understand the customer pain
Too many companies separate their software development and support teams. There is a good reason for this as both of these roles require different skills from each other. However the closer a developer gets to a customer support role, the better. Whether this is just through having regular interactions with support engineers about what the customers are experiencing or actually spending time in support themselves to get closer to the pain customers might experience using the software, it should become a standard part of every developer’s job. Connecting with the customer in this way not only helps you design better software but also brings you emotionally closer to its end users, making you more passionate about the projects you are working on.
4) Testing is everyone’s job
I’ve mentioned this before. There may be a need for experts in test in the software development world, but they are by no means solely responsible for ensuring the quality of the software. That responsibility belongs to everyone on the team and even if you only ever need to write unit tests for yourself – get familiar with what you’re testing teams do and how they work. You might learn something completely new about your product and how you can improve it when seeing it through the eyes of someone who is finding all the holes.
5) Understand your development process
Whatever methodology your teams are following or processes that your company has in place to build software, be an expert in it. Don’t wait for the PMs or Architects to bug you about processes or deliverables that need to get done – understand why they are required and be proactive in implementing them.
You can be an incredible asset to everyone in the team when you can conceptualise not just what you need to do to complete your work, but also the expectation on the rest of the team and how the process comes together. Software development teams can get big and you don’t need to know everything, but being competent with the process that drives it will help you be the team player everyone wants and expects you to be.
6) Be the Product Owner
There should be no pointing fingers for taking responsibility on anything to do with your product, its quality or the development process. Don’t look to blame others for introducing errors or missing things – take the responsibility instead to fix it. While organizations will inevitably have bureaucratic hurdles and loops that you need to work with to get things done – learn these and get to work with the people who can help you make things happen.
Sitting back and waiting for someone else to fix it is not going to create a better product or better customer experience – be the solution.
Don’t just write excellent code, build excellent products. Have passion in engineering a great customer experience and continuously get involved in as many details and solutions as you can. This is what it takes to be a great software developer.
Comments