How to become a better developer
Tags: webdev, programming, career
Published: 2022-04-18 01:23:53

During my 10+ years of working as developer, once in a while I wonder about

> How to become a better developer?

Before we dive into the things that help me grow, this question is quite subjective... anyways I want to share with you a retrospective of what works for me


1. Understand the technologies you use.

    Everyone agrees that reading code is a good way of learning, but you should go an extra mile and try to understand why and how the code you are reading works in the first place.
        - Start small by reviewing your team mates PRs carefully and if you don't know something, ask!
        - Read the official documentation e.g. React docs, nextJS, Django, etc.
        - It's ok if you only have a high level understanding, e.g if you work with Javascript you should know how the Event loop works, but not the nitty-gritty details.

2. Go beyond copy & paste Stack Overflow solutions
   I have seen many times developers that have CORS issues and grab the first thing that works from internet. This is terrible because you aren't going to learn why the issue happen, if the first solution you grab is the best one for your specific scenario, etc.
        - This takes us to the point #1.

3. Care about the code quality
    Some years ago I thought the QA team was in charge of the overall quality of the product... until I worked for a company with **ZERO** QA's. (I almost panic!!)
    From that point I started writing unit tests and once in a while I try to do TDD but it could be difficult. If you're like me and also have hard time writing TDD, a good starting point for me was the following:
        - Before I fixed a bug, I try to reproduce it with a unit test and then fix the code.

4. Errors free mindset
    If there are many errors causing noise in the linter, monitoring system, etc, at some point people are going to start ignoring them. You should strive to have a culture of error free and when an error arises the default thinking should be, let's fix this!
        - Do not let anyone commit with lint errors.
        - If you work with React, console warnings should be fixed.
        - If your team is in charge of monitoring, encourage fixing any alert triggered.

5. Constant learning
    I categorize the things I want to learn in either **new technologies** like React, GraphQL, NextJS, etc or **fundamentals** like patterns, principles, etc, and I typically learn about the two of them for instance:
        - I learnt react, Apollo client, but also learnt about TCP, HTTP, handshakes, etc and how those fundamental protocols affect the web development.
        - I learnt Django and also learnt about ORM patterns like Active Record, Data Mapping, etc.

    As general advice, I try to be knowledgable in the different technologies I use on my daily basis and how they interoperate. For instance I don't know that much about networking but I have an idea of how HTTP works, what's latency, bandwidth and how that affects web apps.


6. Quality over velocity
    I have worked on corporates that moves really slow with releases every quarter and startups with weekly releases, and in both cases there is no point to deliver many tickets per sprint if they cause new bugs or regression issues that impact the end user.
    The points that I already described are things that initially might slow you down if you're not used to, but the overall outcome it's likely to be with high quality.


7. "When one Teaches, Two Learn" - Robert Heinlein
    Lastly, **this is what helped me the most**, I always share the new knowledge I gather, this forces me to learn more about certain topic and look for easy ways to explain concepts. You might be surprised of how hard is to explain something you think you know.
        - Once you explain something, ask for feedback, if someone doesn't understand a given concept that gives you a hint of an area you might not know neither.



Thanks for reading! You can [follow me](https://twitter.com/bryancr89) as I continue sharing tips of how to become a better developer.