DEV Community

kethmars
kethmars

Posted on • Edited on • Originally published at developerhabits.com

From senior to junior in one day - looking back at my first days as a professional developer

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).

Applying for jobs was fun. My CV was titled "Senior front-end-developer", although I could've also named it "Senior full-stack developer", as I was an expert in HTML, CSS, Javascript, PHP, MySQL, MongoDB. Also, there was an extensive porfolio to prove my skills.

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.

During the first 4 months, I got to develop lots of front-end. Both smaller bugs and new features. I remember constantly having a feeling of "give me bigger tasks, I can deliver". For example, a task where I had to implement a header that becomes fixed when scrolling past its position using Javascript and CSS. I gave an estimation of a couple of hours for the task. Easy. The reality was that after giving the code to review, comments about code structure, variable names, using repository-based standards instead of my own logic started to pour in. Also, during the testing phase, we discovered different edge cases that didn't work. I remember one of the developers saying "It's not enough to make things work. They must work flawlessly". I guess that's when it hit me that working in a team while developing a product is not about coming up with quick solutions. It's about creating solutions that are maintainable, structured, follow standards set by the team(or company) and most importantly- they work. After that experience, 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.

My manager recommended me to read different books, work on hobby projects and use each task as an opportunity to learn. And so I did. Books like Clean Code, Code Complete, Eloquent Javascript, Javascript the Good Parts(as we use Javascript mainly), Javascript Patterns, Building Microservices etc gave me lots of theoretical knowledge. And this knowledge I applied in my freelance works, hobby projects but also daily tasks.

...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!

Top comments (6)

Collapse
 
jrdevforlife profile image
Daniel Mohr

Wow, thank you for letting us be a part of your journey. I feel exactly like what you just described. My first junior position in frontend development and I walked into the interview process like a full-stack js dev mofo and they politely told me that I have to choose one side to even be considered and from there on we'll see. I'm almost three months in, everyone is helping regardless of the stupidity of my questions. Now I know that I'm not alone.

I wish you and everyone else on these journeys a lot of power and success to burst through all that gets thrown at you.

Collapse
 
kethmars profile image
kethmars

Thank you for the kind words and keep up the good work! Asking questions(however stupid they sound :D) is the way to go, the way to succeed!

Collapse
 
dougaws profile image
Doug

And don't forget, as you matriculate from junior to senior, document your steps! Even if all you do is create a personal text file, you'll be able to later go back and perform some of those steps without having to wade through whatever information you used to get you up to speed previously--"oh yeah, to set up the VPN I had to 1, 2, ...".

I will also help you mentor newer junior engineers when they join your team, making you even more valuable. I keep a number cheat sheets for new team members: day one, week one, month one, month three. After three months, if they aren't up to speed, either I've done something wrong or we've massively over-estimated the new person's qualifications.

Collapse
 
kethmars profile image
kethmars

That's great advice Doug! I personally haven't done that consistently, but have seen it done by some of my teammates, who through their documented knowledge have been able to answer many questions in a quick manner.

I guess into the same category goes an advice of "write down one thing you've learned today".

Collapse
 
steelwolf180 profile image
Max Ong Zong Bao

I really like the part of being on a rollercoaster ride as a junior developer.

I think being able to absorb and continuously learn is one of the key parts as a junior developer.

Collapse
 
kethmars profile image
kethmars

Thanks Max, I agree with you!

Especially about absorbing information, both the good and bad so that in the future, you would comparison points.