Making the first steps as a Junior Developer in a software house
If you haven't previously worked in IT and are considering starting a new career as a Junior Developer at a software house, you might ask yourself - will I make it? Meanwhile, managers facing hiring someone without previous experience ask - is it worth it?
The IT market in 2022 still seems to be an employee's paradise. Despite occasional mood changes, the number of job offers has been steady for years, and companies fight for experienced developers. As a result, more and more self-taught Juniors or Trainees without proper IT-related education manage to find jobs.
At the same time, the COVID-19 pandemic made remote work - previously available only to trusted employees - a new normal for everyone, even for newly acquired Juniors.
In this reality, I began my journey with professional programming as a Junior Magento Developer at Chop-Chop. I did have some technical background working at an NGO and doing lots of different technical stuff - graphics / DTP, administration, and programming. Out of all these tasks, the latter was the most exciting and eventually resulted in my decision to make this career side step and become a professional programmer working alongside experienced coders.
Looking back, my time at the software house has been an intense time of significant professional development. In a big part, it's thanks to the onboarding and training process I underwent at Chop-Chop.
Junior looks for a job. Leave your comfort zone
I already had some knowledge and skills when considering starting the new career. But, I still needed to learn how these skills matched the employer's expectations. The process of looking for a job taught me a few valuable lessons.
Prepare for a marathon
Sure, there's a chance you will find a job off the bat. To me and many others, however, first interviews and recruitment tasks were an opportunity to learn what companies need. You may have to fail a few times before you land a job. Don't fret, though - go ahead and apply for positions that match your skillset and set a goal for yourself - and the goal doesn't need to be getting a job at all costs.
There are no failures; there are lessons
Every job interview, even if it doesn't end with a signed contract, can give you a valuable lesson for the future:
- I need to work on my communication skills.
- I know the difference between an interface and an abstract class, but I did poorly trying to explain it. Next time, I'll do better.
- Design patterns! I'll look for a book or a course to bite into it.
These are just a few examples of conclusions you can draw from seemingly failed interviews. Always write them down and patiently do your homework. Learn new things, and in time you'll discover that searching for your dream job inspires you to be a better programmer!
If you don't know something - admit it and add it to your homework list before going to another interview. It's way better to get it out in the open than to be let go after the trial period because you don't meet the employer's requirements.
And I don't only mean financial expectations because this is a different topic. You're applying for a Junior position. You know that you face much learning and need space that will provide good conditions for your development. Make sure that the employer understands it, too. Ask them: What's the onboarding process? Will I have a buddy? Is there any training? Can I expect feedback about my work? How often?
Junior is hired! It starts with a headache
After getting hired at Chop-Chop, I traveled to work in the company office for a few days. To me, a Junior without formal education or previous software house experience, the scope of things to learn before even starting to think about working on actual projects was overwhelming. Project management tools, custom gitflow, Linux, its command line (yes, some Juniors only worked on Windows in the past!), setting up a local environment on Docker - this all rushes down on you in a matter of hours. The information will take weeks to settle as you do your daily tasks.
Luckily, for every headache, there's a cure. In my case, this was a mantra repeated by more experienced team members - if you don't know, ask. And this is the best favor you can do to a Junior - ensure them that it's perfectly fine not to know something as long as you're willing to learn.
Junior trained. The more you sweat in peacetime, the less you bleed in war
Juniors at Chop-Chop start with an educational project. Not a task or a set of tasks, but a full-blown project, from start to finish. This approach has the advantage of teaching you everything you will need to handle real projects for clients in the future. First, you must get acquainted with the brief and understand it to its core. Ask the client (your tech lead or a PM) when in doubt. You manage tasks in the project management software - change statuses, add comments, register time spent, and report.
Last but not least, you write code, push it to the repository according to the predefined flow, and go through a code review. Be ready to fix your code repeatedly or even write it all from scratch before the reviewer accepts it. That's when you learn two most important lessons. Firstly, you learn to receive critical feedback and understand that it's not you being judged but your code. Secondly, you learn the best programming practices used in the company and, in my case, in Magento.
Having a standardized educational project is also an essential asset to the company. It guarantees that a Junior learns the framework, technology, and basic functionalities of the CMS. It also makes the Seniors' lives easier because the problems and questions arising from the Juniors are repeatable and predictable.
It's always good to talk
I was able to complete my educational project thanks to the assistance of my more experienced teammates. I kept in touch with the Senior developer in charge of the training process via weekly and ad hoc meetings. The first weeklies consisted of a thorough analysis of my code and addressing my questions. With time, as I started to get a grip on it, I could move on to more ambitious challenges.
During these first weeks, I also met people working in other departments. It allowed me to understand the bigger picture and my place in the company as a programmer. One-on-one meetings with the Team Leader were valuable too. Even simple questions like "how do you feel in the company?" "What do you find useful?" "What do you need?" - are extremely helpful. Knowing someone cared to ask them is deeply motivating, even if everything is fine.
Summary. No one is a lonely island
According to a stereotype, a programmer is an introvert, good at talking to machines but avoiding human contact. From my experience, though, communication matters. Make the best out of the possibilities given to you during your trial period. But also, don't hesitate to take matters into your own hands. If there's a chance to meet your team during an integration meeting, take it. Chatting with people on Slack is better after you've met them face to face.