[Discussion] 5 years of *professional* coding OR how I earn money while having fun
Tags: discuss, productivity, writing, motivation
Published: 2023-02-01 17:47:32

Considering I've always loved to share my own experiences and stories, it's time to a have a tour down the memory lane and reflect on my past (and first) 5 years of professional coding. If you're at the beginning of your own journey, you might find some useful tips to avoid some mistakes. After all, we're here to learn from one another and I encourage you to reflect on your path as well.

### ✨ Background ✨

I got my first job right after finishing the second year at university, a summer internship at a company in my town. I still remember the interview, it was on paper and consisted of many questions from object-oriented programming concepts, algorithms, data structure, AI, databases and exercises that required actual coding - quite normal for an internship / entry level position, as it covers general knowledge and logical thinking.

Once I got the job, I spent the first 2 months learning about the MEAN stack and developing an internal application based on those technologies. Next, I spent 1 year working on different projects (around 6 months each), covering all stages of an application - from the initial discussions with the clients to understand their needs and what should be built, to translating client's needs into technical requirements, choosing the technologies and frameworks, developing, deploying and testing the application. 

Most of my expertise is around web technologies as 4 out of 5 years were spent on this area, but I also worked on server side for 1 year, building microservices using Go language, creating scripts for automating different processes, administrating databases and, generally, having fun in the terminal. It was one of the craziest years of my life: working for a start-up as a junior, as part of a team full of senior engineers and with little to no knowledge about the technologies I was using - deploying services to production for a world-wide application, well, never before, it was intimidating at first - to say the least 😅. 

Once I got bored (yep, bored 💤) of the server side thingy, I switched back to front-end development where I had the chance to work on some legacy applications, while also developing and contributing to some big projects. It was quite different than anything I did before because:

〰️ I was working within a mixed team of front-end developers, back-end developers, designers and QA engineers;
〰️ there were many standards and quality checks in place to make sure everything is properly delivered;
〰️ tons of meetings (cuz hey, out of nowhere, I was part of the corporate life).

So, I got from working for some small clients as a full-stack developer, to working as a back-end engineer for a start-up (did I mention the extra extra extra hours ☠️), to being part of the corporate life as a senior software engineer. Pretty fun, right?

---

### ✨ What would I do the same? ✨

> everything except some things, of course 🤣

Considering I was following tech courses at university and I was preparing for a career in the IT field, the fact that I got my first job as a developer helped me a lot (instead of spending time doing some other jobs).

> **Tip #1**: if you know what you want, go and work hard for it, don't let yourself get distracted.

🔸start on smaller projects (chance to get first-hand experience on a software development cycle). In order to develop great software, it's important to understand every step of the process;
🔸work for a start-up  - other than learning new things extremely fast and using the latest technologies, I was constantly out of my comfort zone as I was performing under pressure;

> **Tip #2**: start as part of a small team, small project or dynamic environment to speed up the learning process

🔸struggle with some technical tasks on my own, before asking for help. When you're a junior (and not only), everything feels new, different and hard. It's easier to ask for help, especially if you're surrounded by people willing to guide you, but sometimes it's better to solve bugs on your own. Not only it'll force you to read and learn more, but it'll boost your confidence as well;
🔸give 100% of myself at the job, not because I'm asked to, but because of my mindset and the things I want to achieve;

> **Tip #3**:  go all the way

🔸mentor other people. Something I've always valued - give back and help others whenever you can.

---

### ✨ What would I do differently? ✨

🔸I would stress less and set some healthy boundaries at work. I didn't do it while working for the start-up (everyone knows that such a project requires a lot of dedication), though I maintain a reasonable workload nowadays;

> **Tip #4**: Set boundaries at work to achieve a great work-life balance

🔸I would take more time off. Guess what, the projects will go on, even if you take a holiday every trimester for example. Also, I would disconnect entirely, no applications on my phone, no notifications, no messages during that time. It might sound extreme, but it's important for the mental health on the long run;
🔸I would say **no** more often. Just because you can do something or you have the time and resources, it doesn't mean you have to;
🔸I would document the technical challenges I face. Write articles, quick snippets of code or quick notes about everything and contribute to open-source;
🔸I would take part in more hackathons as it's a great opportunity to learn new technical skills, play with new technologies, network and meet people with similar interests.

---

### ✨ Recommendations ✨

🔸All tips above should be considered recommendations😉;
🔸Don't neglect open-source and writing about your journey, tech challenges and topics. Share as much as you can with others. You can bring huge contribution to the community while forcing yourself to get out of your comfort zone. This is how you grow;
🔸Challenge yourself with new projects, new technologies and keep learning new skills that will help you reach your goals. You're the one responsible for your own career, don't let it in the hands of someone else;
🔸Take guidance from your team and have mentors, but don't expect every challenge you face to be solved by others;
🔸Read a lot (no matter the topic) and take notes. Everything connects, and you never know how you wake up one day with an idea. Knowledge is power nowadays;
🔸Meet deadlines, learn how to prioritize tasks and how to estimate effort, maintain high code quality standards;
🔸Test your code ‼️;
🔸Read the documentation before attempting any implementation. It'll save you hours / days 📄;
🔸Be aware of every step in the process, even if it doesn't fall within your responsibilities;
🔸Stay curious and be resourceful.

### ✨ Conclusion ✨

I plan on continuing this series yearly, as I'll do a lot of growing meanwhile. If you have any recommendations or additional tips (and I'm sure there are plenty of things that can be mentioned), let's hear it in the comments section.

Until next time, thank you for reading! 🐾