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 know that some jobs don’t bring enough challenge for you to evolve your technical skills, but it should not stop you from learning. 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 done that, pushing the first solution that we had in mind to the master branch and not long after coming up with a way better solution.

One exercise that I like to do is trying to come up with different solutions for the same problem that I’m trying to solve. I advise everyone to try different techniques, look to the problem from a different perspective, and, try to find the gaps in your solutions.

Understand your tooling, programming language, frameworks, et cetera

The programming language, the IDE, the frameworks, and everything else you use to perform your job 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

Learning more than one programming language can help you to choose the right programming language to solve the problem that you’re facing.

Think and plan before building

Before rushing to build a solution, you should understand what you are building and why you 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 a different team should do the actual solution.

Learn about the different layers of an application

An application has many layers, and sometimes we stick to one of them, and it’s essential to understand the other parts of the application and how it all works together. It helps you to troubleshoot your application whenever something goes wrong.

Document everything

Creating documentation can be hard and sometimes considered a tedious task. You should think of it as a guide that helps to onboard new team members as well as a friendly reminder for yourself in the future on the hidden things.

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 best scenario would be finding a job that allows you to use new techniques and features available. However, it’s not always the case. I suggest you create a pet-project to perform your tryouts to keep yourself updated.

Learn from other people’s mistakes

Let’s be honest; most of the daily work is something that had been done previously by someone. Before jumping into implementations, it’s wiser to do some research.

Take a break

I mean it! 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 always works better than an exhausted one.

Soft skills

Share your knowledge

During the years, I learned that sharing knowledge is not an easy task. Sharing your knowledge helps you to study more and to understand better a subject. It also helps in 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

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. Nobody wants to be called during the night or weekend because one application stopped working. However, let’s face it if you were involved in the planning and development of a project; you probably know better how it works than anybody else. So it’s your responsibility to act upon a failure.

Choose the right words

It’s quite easy for the daily stress to take over, and we can be criticizing everything. It affects not only you but your whole team can slowly get affected.

I would suggest everyone not to criticize at all (I know it’s hard), but nobody should criticize, especially without a suggestion to make the situation better. I know that sometimes we still need to talk about some unpleasant topics 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 that’s not easy, but you should learn from that, learn what you need to improve on every subject, and also learn how to handle this kind of situation.

Miscellaneous 

And here some essential things that I think are important:

Organize yourself

Get to know what you need to do and document what you have done.

Find what bright your eyes

Some people love databases, and other people love to write frameworks, some other love to write business logic for a given project. Once you find out what you like the most, it’s 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 helps you to get to the next level, as I mentioned previously learn from other’s people mistakes.

Be bold

That’s my last piece of advice and maybe the one I consider the most important. Doesn’t matter your role within a company, make bold decisions even if it ends to be the wrong one. Take the ownership and responsibility, bring new ideas, be the kind of person you would like to have in your team.