The beginning of October marks my 3rd anniversary in Pipedrive, the company I work at. Because of that, I've found myself thinking about my junior-days.
Between 2009 and 2016, with some exceptions, I was quite active in freelancing as a designer and a developer. It was a great way to make money in both high-school and university, providing me with an opportunity to communicate with people and solve their problems. During that period, I created more than 50 (mostly Wordpress) websites.
During my army service(which is mandatory in Estonia), I started to understand that freelancing gets me only so far. The websites created were usually not very complex technically and designing things didn't give me the chills it used to. Because of that, I made a decision that after the army service, I'll get a full-time job as a developer(I had tried working as a designer in 2014, but found I like development more).
I approached various agencies who offered me a great salary for developing simple Wordpress sites. As I wanted to improve myself as a developer, I also applied to companies that dealt with more advanced technical problems. After completing a test-job for one of them, I got feedback saying I'm a junior at best. Finding it hard to believe as the aforementioned agencies saw me as a mid or senior, I also applied to Pipedrive, who was(and still is) a dream employer in Estonia.
The first interview went great. That was followed by homework in Backbone. As I had never written Backbone before, I just grabbed a book on the subject, learned the ABC and used the acquired knowledge to deliver the solution. Going back to the second, technical interview, I was confident. We reviewed my test-job and well...It wasn't as perfect as I thought. It worked well but interviewers brought out different edge-cases where things broke. Also, the code structure was lacking. Nevertheless, after some extra interviews, I was offered a job as a junior front-end developer.
There was a tough decision to be made - accept a great salary and continue working on creating simple Wordpress websites for agencies as mid or take a junior role in Pipedrive. In the end, I thought there must be a reason why some places see me as a junior and I acceped Pipedrive's offer.
My first thought was '...task for adding a query param? I can do it in 2 minutes'. A couple of days later - the task was still in progress.
After a couple of weeks of on-boarding, I got to work. The first task was something about checking the existence of a query parameter in our monolith. My first thought was "...task for adding a query param? I can do it in 2 minutes". A couple of days later - the task was still in progress. I had never heard of or used things like unit testing, Git, continuous integration, code reviews etc. Also, setting up the whole development environment took some time. There was just so much information coming in. In the end, I got the task live and damn it felt good. For others, it was some trivial one-liner, but to me, after going through all the hassle of testing, getting code reviews etc, it was a true accomplishment.
I finally understood that my previous experiences as a freelancer may give me tons of technical knowledge but not all of them are applicable to my job. And those which are must be polished and developed further.
...just step away from your computer, clear your head and continue working the next day
I also started to put in more extra hours - I didn't leave work before I had reached a milestone, even if I was tired or completely stuck. Yes, it was good as I got more time to explore different solutions to problems, but looking back, I'd recommend not do that - it's much more effective to just step away from your computer, clear your head and continue working the next day.
Also, going to unfamiliar people with unfamiliar problems was truly frightening. Nevertheless, the more I did those things, the more comfortable I felt
As time passed, I became more confident and started working more on backend solutions which required more communication with other teams. I noticed that my ability to describe technical problems and ask questions needed improving. Also, going to unfamiliar people with unfamiliar problems was truly frightening. Nevertheless, the more I did those things, the more comfortable I felt(I still suck in describing technical problems though).
After being a junior for almost a year, my manager recommended me to take on more responsibility. As I felt quite comfortable in our NodeJS and Redis app, I decided to take on a small task related to the routing system, during which I completely refactored it. In the code review, one of my team mates asked me "Wait! You're still a junior? Junior's don't write code like that". That phrase was the best thing that had ever happened to my development career. A month later, I was promoted.
My junior-days experience taught me that there's a huge difference between working on projects on your own and working in a team. It's easy to call yourself a senior developer when all you do is building things on your own. It's a completely different story when working on something that requires collaboration, includes testing and reviews and has an impact on real-time users.
Being a junior is a rollercoaster - you are afraid, you must learn a lot, you experience failures and successes multiple times a day.
Being a junior is a rollercoaster - you are afraid, you must learn a lot, you experience failures and successes multiple times a day(even when you're an experiences developer). The environment you're in is full of unknowns, but with the help of people around you and hard work, you'll survive! Just make sure you'll do your best!
I've been in Pipedrive three years now and I feel I'm a strong mid-level developer. Nevertheless, I always try to improve myself - read books, articles, documentations etc. Never get lazy, never stop learning! Ask questions, make sure you understand stuff. Find your weaknesses, improve them. Find your strengths, improve them even further!