This blog post contains my personal experience and opinions on how to become a better developer.
Let’s get it straight, a software developer is not the same as a programmer.
Roughly speaking, a programmer can follow instructions and specifications and turn it into code. A software developer can code as well, but their main job is finding ways to solve problems.
I’ll try to divide the blog post into three main topics:
- Software Development Skills
- Soft Skills
- Miscellaneous (I don’t know how to name it :)
Software Development Skills
Code every day (or as often as you can)
I don’t mean you should go to work and do the same tedious coding task every day, and I know some jobs don’t bring enough challenge or ways to grow technically. However, it shouldn’t stop you from learning, and nowadays, it’s pretty easy to find coding challenges online or even enough input to build and try out new techniques. However, it shouldn’t stop you from learning, and nowadays, it’s pretty easy to find coding challenges online or even enough input to build and try out new techniques.
Question your designs and decisions
We all have been there, pushing the first solution we had in mind to the master branch and then a few days later coming up with a different a way better solution.
One exercise that I like to do is to try to come up with different solutions for the same problem, try different techniques, try to criticize your own work, and find gaps in it.
Understand your tooling, programming language, frameworks, et cetera
The programming language, IDE, frameworks, and everything else you use on your day to day of work is something you should fully understand to write the best solution. Don’t use the magic annotation because it does everything for you without understanding what exactly it does! You could be adding accidental complexity to your project just because there’s a gap in the understanding of the used tooling.
Remember, a developer main’s job is finding ways to solve problems, so let’s do it conscientiously.
Learn more than one programming language
I know it’s not easy to master more than one programming language but knowing a little of some other programming languages can help you to choose the right language to solve a given problem.
Think and plan before building
Before starting building a solution, everyone should understand what they are building and why they are building, understanding the overall solution also helps to make the right decision while developing. The understanding of the overall product sometimes also leads us to realize that the actual solution should be done by a different team.
Learn about different the layers of an application
Software development has many phases and layers, even though we sometimes stick to one of the layers, it’s important to understand the other parts of the application and how it all works together. It will help you to troubleshoot your application whenever something goes wrong.
Documenting is sometimes considered a boring task but think of it as a guide that will help to onboard new team members and a friendly reminder for your future self on the tricky things that nobody remembers.
Keep yourself up to date
Keeping yourself up to date with technology is sometimes exhausting, I get it, but as I mentioned before you need to know your tooling. The ideal scenario would be finding a way to apply all the new techniques and new features for this new release of your programming language at work but if that’s not your case you can always create a pet-project to do all your tryouts.
Learn from other people’s mistakes
Let’s be honest, most of the daily work is not something that wasn’t done previously. Before jumping into implementations it’s easier if we do some research, sometimes it can be a programming problem, some other time it can be something only related to the company, and as I mentioned previously, it’s important to understand the overall solution and what you’re building.
Take a break
What I mean by taking a break is literally having a break, it could be a pause for a coffee, a half-day off, a week off, whatever you need to get yourself back to the track. A rested mind will always work better than an exhausted one.
Share your knowledge
During my career, I’ve learned that sharing knowledge is not an easy task, there’s a lot of effort to make it clear for your audience but it helps you to understand your own gaps on a given subject which leads you to study more and master the subject as well as learning new approaches on how to share your knowledge, have in mind that not everyone has the same background and way of learning.
Take the ownership and responsibility
As already mentioned being a developer is more than writing code, taking the ownership for a project goes way further than knowing the project scope or its code very well. Taking the ownership also means you’re responsible for the project, and this responsibility goes from the project planning to the deployment to production. I know that nobody wants to be called during the night or weekend because an application went down but let’s face it if you were involved in the planning and development of a project you probably know better how it works than anyone else, so it’s your responsibility to act upon a failure.
Choose the right words
It’s quite easy to let the day by day stress take over where we would just complain about everything, and I do not mean only development related, it can lead us to complain about everything, which affects not only you but your whole team can slowly get affected.
I would suggest everyone not to complain at all (I know it’s hard), but nobody should criticize, especially without a suggestion to make the situation better. I know sometimes we still need to talk but do that with the right people, don’t spend your energy and stress everyone because of something that won’t bring any value to them.
There are always ways, and ways of saying the same thing, choosing the right words are the difference between having a conflict or an agreement.
Don’t take it personally
Sometimes you’ll receive bad feedbacks from your code, from your documents, from your way of work and I know that nobody likes it. What I can advise you is not to take it personally. I know sometimes it’s not that easy, but you should learn from the bad feedback, learn what you need to improve on every subject, and also learn how to handle this kind of situation.
And here some essential things that I think are important:
Get to know what you need to do and document what you have done.
Find what bright your eyes
Some people love databases, other people love to write frameworks, some other love to write business logic for a given project. Once you find what you like the most, it will be a lot easier to put your passion on your day to day work.
Find a mentor
It can be someone from your company or someone sharing content online. Having a mentor will help you to get to the next level, as I mentioned previously learn from other’s people mistakes.
This is my last piece of advice but maybe the one I consider the most important doesn’t matter your role within a company make bold decisions even it’s wrong, take the ownership and responsibility, bring new ideas, be the kind of person you would like to have in your team.