How not to Dev by a "junior" Dev
Tags: webdev, productivity, beginners, career
Published: 2024-02-27 22:12:43

## Introduction and first steps
Hi everyone! It's good to finally be here after spending all those hours watching @theprimeagen and theo (whose tag I couldn't find for whatever reason) comment on many posts created here by the community. Reading my post please keep in mind that I'm not here to educate any of you nor force my point of view onto you. There might be a lot of times where I might seem like writing complete bullshit. The thing is I don't really care. Currently I'm in a very strange and hard place in my dev live so here I am letting my frustrations create posts for some people on the internet.

As for me. I'm a pretty young dev that started working in 2020(1?) and had some previous experience with creating my own stuff (not commercial tho). I'm mainly working fullstack in JS ecosystem (obviously) but in my private time I simply love discovering new technologies and solutions which is why I have been working a lot with Python, Rust, Golang, Swift, C# and Java. Below I will be ranting a lot about my experiences with "the industry" and ecosystems, so be warned.

## My introduction to programming
Some would say that I took my first steps in programming around 2019-20 but in my opinion that would not be 100% true. My first programming was done way way before the era of modern frameworks in the dark times of PHP dominated websites/apps. For a very long time (since 2010 with small brakes) I was playing and creating PBF platforms using phpBB
{% embed https://en.wikipedia.org/wiki/Play-by-post_role-playing_game %}
{% embed https://en.wikipedia.org/wiki/PhpBB %}

## Java Arc
So to speak I had some experience with writing code even if it wasn't the "modern standard". When I decided it was time to try and get into IT I have decided to take some Udemy Courses and following advice of my friend I have started with a great course made by Tim Buchalka called (per writing this post) Java 17 Masterclass: Start Coding in 2024. Yes I took this course in 2019 and it's still relevant because Tim is a wholesome guy and he keeps on updating it even after all those years for free.
Don't get me wrong. Tim is a great teacher and Java is a powerful technology but it wasn't going really well for me. Elementary concepts were very easy for me to comprehend and use in simple applications but the complexity of Java got me very soon. Getting into advanced concepts of polymorphism and inheritance confused me a lot and I resigned just to get back to the course a few weeks later to discover that it wasn't actually that complicated - I just needed a fresh view.
Anyway after finishing the course I started to search for my first job and damn it was hard. For every 100 resumes that I have sent I got maybe 2 responses. Then even if I got invited to technical interview I would be beaten by any dev that has a few more months of experience and since I had 0 then the response was easy. I couldn't find any job in IT for around 2 year. I mean I had around half a year worth of not sending any resumes since I've lost any faith.
Then 2021 came and oh boy what a year it was. I got my first job finally after all this time! There was just one problem - it wasn't for language that I was aiming at... 

## Javascript Arc
Yes, as above heading suggests I have started my first job in Javascript. How? I still don't know tbh. Must have sent my resume for some positing without reading it? Like really, I would like to know myself why I did that. But hey, I got the job so what could go wrong?
I was lucky enough that I was a veteran at using jQuery and had at least some comprehension as to what a UI framework and Node.js is. Another part of my luck was the fact that the company I was working for was willing to train a junior dev from nothing to something (I should say anything here and you will know why very soon). My first steps were in new lands of Nuxt.js, Express.js and MongoDB. This company didn't use Typescript for some reason. As I see it now it was a good thing for me because I could learn pure Javascript and Vue implementation without additional stuff. Was the codebase a gigantic mess? Yes. Was the app performance top notch? Oh, god no. Was it worth it? Oh boy, yes it was. Finally my software development skills were climbing rapidly and I was shipping code to production in no time. I could easily say that 6 months of work developed my skills 3x times as much as solo coding since 2010 in PHP, jQuery and Java.
There was one problem however that I didn't and couldn't have known then. Codebase was such a spaghetti that I wasn't learning any good patterns or practices for the future. Some of our files could be 10-14 thousand lines long (kudos to complex mongodb aggregations). I mean now I know how I would have fixed that but then nobody forced any good practices on me.
Summarizing my first job - rapid growth and learned way too many bad practices. Imo it's better to write any code and learn than to write no code at all and not improve yourself.

## Python and JS Arc (?)
So during the time when I was still working for my first ever IT employer I had a sudden proposition from other software house that offered me almost double the salary and much better learning opportunity. Also CEO and CTO were great guys. So in just few days I started working for them. It also meant that I had to work 2 jobs at the same time which I thought I could manage and it was working really good at start and went to shit really fast. Because of new opportunity I had been spending less and less time with my first employer which resulted in us parting ways. What was the reason for my lack of time? Yeah, you probably guessed right - new framework, new language, new technologies.

- First was Python and Django Rest Framework. Holy Terry that was so much different than Express. It was so hard for me to comprehend what was going under the hood. I bought a book, course, was reading docs 24/7 and still didn't understand a single damn thing about it. Why is my query a queryset and not a viable data? Why does it create this whole CRUD without my input? Why is for loop so slow? How did I end up with a for loop in Django the first place? So many questions and so little answers. Seeing my struggle however my CTO and Senior Backend Dev gave me helping hand and showed me the ways. In 2 months I have started creating and shipping apps in mere days. Nothing could stop me from force pushing to prod on friday evening. Was the framework **blazingly fast**? No. Was I a happy dev? No. I mean I was kinda happy working with Django. The problem was different...

- The "library" called React. My god I hate React so much. For me React is a definition of everything that went wrong with Javascript and I will probably write a lot of rants about React but for now I will just let you know that this dogshit "library" is my "go to" for anything frontend related and my relation with it could be summarized with this simple meme ![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5lnbmnzxr5kpz5vmr8j2.jpg) When I was starting working with it it was so different to Vue. I spent countless hours trying to wrap my mind around useEffect, useMemo, useContext and useMutation (which nobody told me about that is a part of library maintained by other people than those responsible for React and for some reason I didn't think about it). Putting Tanstack Query aside (I absolutely love it, keep the good job guys) React felt so unnatural to me. It felt hacky, complicated, unreactive. There was also the fact that it was my first time using Typescript and I didn't have fun with it. At first I saw few similarities with Java and so I proceeded to treat it like baby-java. Writing this I'm laughing at my naiveness. "Baby-java" XDDDD. Don't get me wrong, right now I cannot imagine writing JS code without Typescript. But still Typescript back then was complex for me as it was fighting with many Java related habits and knowledge. 

So while I absolutely loved working with this company because they were professionals doing their best job at creating amazing apps and creating value for their customers at the same time I couldn't keep up. It was very obvious after around half a year that I cannot keep on holding the company with my React issues. They have decided to part their ways with me as they didn't have the means to hold onto me. The solution was simple. I had to step up my skills once again.

## Growth Arc
As every main character after defeat I have tried my hardest but wasn't able to hold onto everything. I might have been jobless but I still didn't say my last word. Motivated to show the world that I can be an amazing dev I have decided to create as many apps as possible to improve myself. While searching for a new job I picked up my biggest enemy once again - React. This time however I was working tirelessly. Subscribed to many YT channels that were covering React and other general programming knowledge, bought myself some more books, started listening to podcasts and I would sit behind monitor for days straight to push through. And it payed off. In the next few months React became my best known framewo... library in whole JS ecosystem. Also thanks to my knowledge of Nuxt I migrated my React skills to Next.js (they are a lot different but I knew about existance of Next thanks to Nuxt).
Also it was a time when I have decided that the time has come to learn more than just JS. Rust became my new plaything for personal projects. I have also decided to compare Rust to Golang by creating a few simple apps to see which of those I like more.

## Villain Arc
Every good story must have it's ups and downs but my story for some reason has a lot of downs. Maybe that's the reason why it's not a good one.
Taking on another job was easy for me this time. I have honed and polished my skills to this point so much that nothing could have surprised me (oh boy I was so wrong). What got me this time tho was not related to complexity of apps. This time was just unlucky workplace. My previous place of work gave me such a high ceiling for how any IT job should look like that I couldn't fit in into new company. A lot of strange rules and badly created coding practices made me lose my motivation to work rapidly. Soon I found myself looking blankly into my own reflection and not coding at all for days. Features and apps were not being developed at all. I just couldn't do it. Whenever I have started doing anything productive I would stop at the first line of code just to start over again in an hour or so. Even during stand ups I wasn't really there. It's like I couldn't code anymore. I mean I might be exaggerating right now because I did create 3 apps in a year but I want to describe to you how I felt while doing so. Very soon some personal drama, which I don't wanna touch here, with the CEO broke out and I have decided that it's time for me to move on.
The thing is I can't move on. The industry right now is a nightmare and I can't land a job for five or six months now. I have been working mostly on freelance projects that don't give me any satisfaction. The thing is I'm not even doing any interviews - I'm stuck at resume sending and start to resent IT for how it is. 

## Redemption Arc?

Yeah, why am I even writing this? Those are my personal experiences that might help some new devs on their personal journey. Remember guys that life loves to give us many unexpected surprises and you should do your best to enjoy those. Also the thing is that I might be looking for some advice as I'm completely lost right now. I don't know if I should just switch my career and try my luck elsewhere or should I keep on pushing even if it means that I will never be able to feel the same way as in my most favorite company? The thing is I like programming. I love creating new apps for me and my friend using new tech as much as I adore seeing my app go to production for a big customer. Will I be able to reach my "redemption"?