6 lessons I have learned in my path to become a developer

Instead of boring you by detailing personal achievements or publishing generic articles made by bots, I will write a very sincere review of what I have learned in the year 2022. There were many stressful months, because of Covid, prostate cancer and noisy neighbors, but there were also many "a-ha" moments and other situations where I felt proud to be relied upon as a programmer that can solve problems that ordinary people cannot.

The background

Since 2019 I have been rustling to become a developer and not any developer, but a self-employed one. It is not the easiest nor the shortest path, since I majored in Psychology and never excelled in hard sciences, but I have been enjoying the learning process and overcoming the hurdles. I have been self-studying and this has many advantages, such as:

  • Learning at a fast pace: No bullshit, gets directly where I want to go:rocket:

  • Becoming more independent and self-motivated: I am the only one responsible for my learning:muscle:

  • Learning exactly what I want or taking the time to go deeper into a subject: Makes the act of studying very enjoyable and interesting:smiley:

  • Be able to experiment different paths and plan my career:chart_with_upwards_trend:

  • Have a deep understanding of a subject instead of just studying to pass a test and forgetting everything months later:books:

  • Study for free or very little cost: There are tons of free, high-quality materials for self-study and many high-quality courses that are much better than an actual university class and cost nothing or just a few dollars:moneybag:

But also has many disadvantages:

  • Easy to be distracted by life: Creating and maintaining the habit of studying and practicing every day is mandatory for self-study:persevere:

  • Difficult to be held accountable for progress: No lectures to attend, no hard deadlines for delivering projects:date:

  • Progress is not being validated by peers or teachers:100:

  • Impostor Syndrome can creep in, as there is no external validation, like diplomas, grades or certifications:confounded:

I had a hard time achieving flow in 2022 as in my home I was getting constantly interrupted by ringing doorbells, noisy neighbors, dogs barking all the time, hunting mosquitos and sweaty, hot days. This improved when I started to go to public coworking spaces where I could work in a silent environment, without interruptions:relieved:

Why code?

In 2016 I have built a startup called Bike123 with a friend and ex-coworker. It solves the problem of finding a qualified mechanic that can fix your bicycle without the need of bringing it yourself to a bike shop. We did not have any background in tech, but we were very motivated and we had extensive knowledge of the bicycle industry. Turns out that trying to build a scalable startup without a programmer on the team is like running a marathon using only one leg: it is possible but will be hard:running::running::dizzy_face:

I was considering leaving the startup in 2018 when it became clear that it would be very hard to scale it in a way that could financially sustain ourselves and the final decision was made when my mother passed away unexpectedly, leaving a lot of unfinished issues to be solved, but I am still proud that I have helped to build a very lean startup that was validated as a business and it is still in operation to this day.

If you need to fix a bicycle in Brazil, you could consider checking Bike123's website to find a trusted mechanic that will fix your bicycle in no time.

Lesson 0: Failures are necessary for a journey

Looking back on what I did up to this day, the experience of running a startup without tech skills opened my eyes to a career in programming. I felt extremely handicapped and hopeless as most of the necessary improvements that our business needed were associated with technical skills, such as creating an API or eliminating manual work with technology and automation.

After researching more about the tech world, I could already envision building a small tech company that can sell services anywhere in the world, without the need for spending capital to buy goods or store them. If needed, the company could be incredibly lean and have one or very few team members that can leverage technology to get to millions of customers.

That thought lead me to try to start some small online programming courses. I liked the experience and slowly I devoted more and more time to learning about algorithms, JavaScript, Python, and enrolled in CS50, until I was devoting my full-time to learning programming.

Lesson 1: Body and mind are one

Fast forward to 2022 and my body was tired after so many years and months of Coronavirus, sitting down all day and maintaining social distancing. Especially my lumbar was killing me, I could barely sit for a couple of hours without pain. On top of that, I got my first corona infection in January and felt sick for many weeks. My father was just diagnosed with prostate cancer and a decision was needed regarding what treatment to take, so I had very little time to exercise and was not sleeping well at all.

Those were very stressful months and as a result, I was not able to think right, let alone have new ideas or be creative. Coding was a frequent struggle and I felt that for every new concept that I managed to learn, another one that I have already learned was being forgotten. I was constantly forgetting common words and had a hard time recalling things that I have done.

My body was not well and this reflected in my ability to do intellectual work.

Lesson 2: Diversity brings creativity

In April, I was worried about my dwindling mind and noticed that my weekly routine barely changed. I stayed home most of the days, chatting only with my girlfriend and going out to the same places. To counter this, I started to actively seek new experiences, such as:

  • Seeking friends that I haven't seen in a long time

  • Going to places in the city that I haven't been to for a long time

  • Going to art expositions

  • Studying in libraries and going to a coworking to see new faces

  • Trying foods and new places for the first time

After some months, I slowly began having new ideas and even started writing again, a habit that I have distanced myself from. This leads me to start this very blog on Hashnode.

And by reconnecting with friends, I got a freelance job! A friend needed help replacing a buggy scheduling tool with better usability for his business. I was glad that I could solve a problem that would make a difference for his business and this experience made me think about what can I do to help small businesses like his.

Lesson 3: Take it as medicine

When (re)starting a new habit outside the comfort zone, inevitably there will be resistance in form of laziness or well-thought excuses. I used to cycle a lot, meaning +150km a week, but with the pandemic, I was using a static roller and was only doing 3 times a day, meaning 30km a week at best. This is more than the average person rides, but it was not enough for me. As a result, I got a couple of kilos and my skills and reflexes on a bicycle greatly decreased.

I wanted to start cycling with my friends, but I have to admit now that I was fearful and insecure, so I made excuses in form of "I think cycling is kinda dangerous" or "I need more free time to dedicate to that".

One day I remembered something my father used to say when I was little and I was refusing to eat greens:

You don't have to enjoy it, take it as a medicine

So I just did it, I took cycling as medicine for countering back pain and my extra kilos. On the first rides, it tasted like a bitter pill. I was fearful, my back hurt, and my body was protesting. At first, it was bad, but then I felt good. Today I am glad that I took the medicine, my lumbar is almost cured and I feel much better about myself and my progress.

This is me, in a hill climbing race, organized by my cycling club. I managed to get a third place!

Lesson 4: One step a day makes you go farther away

In school or university, there is a tendency to work in bursts. Like studying for a test, the test has a deadline, so the students will have a week or some days of intense work, which culminates on the day of the test. After that, most of the students will not touch a book until the next exam.

In the real life, things are not like that. The path to becoming a good programmer does not involve taking tests and studying the bare minimum to pass them. When learning to drive a car, for example, the key is to practice a little every day, feel the feedback from the pedals, noises and vibrations, and not pass exams about how to drive a car.

This year I managed to code almost every day, some days I was very productive, and others were a struggle, but I did it, nonetheless. Just like climbing a high mountain, at first, the progress is negligible, but after some time, you forget about the progress and just enjoy the adventure. You finally reach a clearing and it is possible to see that you have climbed a lot and you see for the first time the path you have taken from above. It is very rewarding, but it only comes after a long effort.

Lesson 5: Build your toolkit and your specialty

As a freelance programmer, it is not productive to try to adjust your skills for every customer's demand. When I started freelancing I tried to grab every opportunity that I assumed that I could deal with my skills. Wrong! This resulted in long hours of research, frustrating problem-solving sessions and stressing out, as the deadline was approaching, but in the end, I was getting very little money for all that effort and I was not satisfied with the final product. This article explains more why you should focus on a niche segment, instead of trying to serve everyone:weary:

If you are a freelancer, think about yourself as a restaurant. Have you ever seen a place where you could sit and ask anything you like? A place where you could order a burger or some sushi or maybe some french food. I doubt it.

That happens because it is uneconomical to do so. Yeah, everything is under the umbrella of "cooking", but the cook has to dedicate himself to some genre of cooking, otherwise:

  • his dishes would be terrible as he would not get enough time to get good at making a particular dish

  • he would take a long time to make even a simple dish as there is no way to make preparations beforehand

  • there will be a lot of wasted ingredients that would not be used and would spoil

So why programming would be any different? Find a niche, build a product using a tech stack you are comfortable and serve a large range of customers without changing too much from your basic product template. That will be the path to making a sustainable business

In 2022, to consolidate my tech stack, I decided to go all in on:

  • Python, which I find clean, flexible and enjoyable to work with:snake:

  • AWS, which allows me to launch projects at a low cost and in a scalable way:arrow_double_up:

  • AWS Chalice, which allows me to glue together my business logic and AWS services, such as authentication and database:stuck_out_tongue_closed_eyes:

  • AWS CDK, which allows me to call my complete infrastructure stack with a single command:smile:

Closing thoughts

This year I am becoming more confident in my developer skills, as I have expanded my programmer toolkit and, as a result, can take a variety of jobs. Also, having more experience freelancing, I can avoid common pitfalls, such as creating an application from scratch that has a low probability to be reused.

Another good news is that my father is cured of cancer, having been treated with radiotherapy and hormone therapy and having no lasting side effects at all. If you know someone that has been diagnosed with prostate cancer, be sure to get as much information as possible to be able to help them make the best decision. The Prostate Cancer Research Institute helped us a lot, be sure to check their Youtube channel.

I think I am slowly returning to my pre-pandemic performance and I feel that body, mind and habits are set in a way that 2023 will be a much better year.

This was Dev Retro 2022!

Achievements