Personal

Coaching sessions: here’s what I talk about with junior developers

9 min read

The company where I have the pleasure to work at, has been getting an influx of eager junior developers, where most of them are straight out of school. As they are navigating into the big enterprise world (or getting a taste of it), their anxiousness rises due to all sort of questions about their career and where they see themselves in the near future. I’m often asked my opinion on what they should do and if I have tips and tricks for them to grow into their career. One developer actually told me she tried to google about this topic while interviewing for jobs.

I figured it would not be a shabby idea to share them with the world. Some may not be in agreement with my opinions and views and that’s ok. We all have a view on life.

I never had the chance to be given such tips and tricks, so I’m opening myself up to hopefully share what I’ve learned in my years as a developer/lead/architect.

In this post, I’m going to go over the topics that I tend to discuss with those junior developers.

Demeanor

How you act is your visitation card.

Be interested. If you question (and are encouraged to question), you are hungry to learn more, and you do well in your missions, you will get more tasks from your lead(s). They will also give you tougher missions. This is one way you can grow.

Ask for feedback. Asking for feedback is crucial. You may be going into a path that may not be where your manager/lead(s) want you to go. How are you doing? Are you progressing, stalling or regressing? Be open to the critic, absorb as much pointers that your lead(s) and manager tell you.

Have a good line of communication. Don’t be afraid to discuss with your manager/lead(s) if something is bothering you, or you need help. It is also important that you tell your manager/lead(s) that you aren’t always assigned the boring stuff.
It is also super important to keep the feedback loop with your lead(s). Ask for help early and often. If you are stuck and things dont work, don’t wait 2 days to voice your concern. In a lot of places, days are counted for tasks and what you are working may be crucial to unblock other tasks. If you lose too much time and do not say anything, you will frustrate many individuals.

Be well surrounded. If you believe your lead(s) aren’t giving you the support and coaching you need, talk to your manager to see how that can be improved. Find people that are better than you and spend time with them. They are your accelerators. They will challenge you and you will challenge them.

You don’t always get what you want. Unfortunately, we all do stuff that’s boring. That is part of the job. However, try to always do your best. Try to have your team members motivate you and vice versa so that you have the power to get through ;-)! You will eventually get fun tasks!

Be humble. It is ok to not know everything. Be curious and try to understand the problem. It’s ok to make mistakes. Those are the times we learn. I was once told, if you don’t make mistakes, it is because you don’t work.

Be curious. Find out about your company’s priorities, objectives and engagements. Be curious about your company, its people and what success means for the company when observed from the outside. Find out what your manager’s objectives are, then find out about their managers objectives. Break out of your department. Go learn about other’s responsibilities and their struggles. This will help you understand the why of what you are doing. Technology is just an enabler to achieve business problems.

Determine what kind of developer you want to be

The first question I always ask a junior develop is: what fuels you, what passions you? Are you more into data? Do you like distributed systems? If so do you like more backend systems or prefer building visual interfaces (i.e. front-end).

A lot of developers call themselves fullstack. While we can do both ends of the spectrum, that is backend and frontend, we deep down usually have a preference.

If you are into data, determine if you prefer to be more into the administration side of things or prefer understanding the data and what the data means (great if you can do both!). If you enjoy data, you will need to understand the current BI tooling offering. You should also understand the fundamental concepts of data warehousing. In today’s IT world, data is the new gold.

There are also other sectors within the IT world that you can get into, such as but not limited to security, AI, and IoT. While I won’t get dive into all of those sectors and the core concepts of each of them, the important idea is to understand the core concepts of the sector in which you wish to evolve.

Determining this will help you and your (future) manager write you up a career path. When tasks and projects come along, as leads, we usually are able to know who we will be assigning tasks to.

Determining this also can help you figure out in what direction you would want to take your career.

Programming languages

Learn a main language, stick to it and be the best at it

It is imperative that in order to succeed, you need to master your language of choice. A lot of enterprises will embrace a or several object oriented languages such as C#, Java, C++. Startups or Small/Medium Enterprises (SME) may embrace languages such as JavaScript (TypeScript), Python, GO, PHP, RoR or Rust.
Each language has its specificities. Some may say that you may master more than 1 language (which can be true), but for the masses, keeping up with the feature updates and knowing all the intricacies can be challenging. This is why I say to stick to 1 and master it.

Be the best in learning the in’s and out’s of that language. As you are starting your career, you do not know in what line of business you will end up. You may not even know what type of development excites you. It should be a language that can help you build (almost) anything. For instance in C#, you can build daemon apps, GUIs, web applications, mobile applications, games. In Java, you can do mobile, games, web applications, etc. I usually tell those junior developers: find yourself a language that can help you navigate horizontally in the development types.

Learn a (or many) secondary language(s)

I usually call those secondary languages, scripting languages, such as PowerShell, Shell scripting such as Bash, and to an extent even Python. Those always come in handy because you will always need to automate something and your main language of choice may be too heavy to do certain quick/small tasks. If you grow your career and become a lead/architect or even venture out and become more into DevOps/Site Reliability Engineer (SRE), you will need to automate certain processes.

Growth

Career path

If your plan is to become a technical lead, you will need to learn more than your current stack. You will need to venture out there and learn about multiple different tools. You will need to immerse yourself in DevOps practices. You will need to understand different operating systems, as the application you are working on may need to live on different systems, or even be containerized.

Becoming an architect is not for everyone and that is ok. If your plan is to become an architect then you will need to learn about different systems and understand your architectural patterns, whatever they are for the cloud or technically in code. You will also need to understand the business. An architect is usually the middleman between the business and the developers. They translate the business requirements into technical ones. Being curious about the business here helps a lot to understand how you can better translate those requirements.

It also does happen that you get into the coding side of the business but you do not like it. There are also other positions that can benefit from your technical knowledge such as project manager or product owner (business analyst).

There’s always a path that can benefit from your technical background.

Continuous learning

Technology doesn’t freeze in time; it evolves. As such, in order to get better at your craft, you will need to continuously learn. Writing code for a computer is easy, writing code for humans is hard. The best way to start is to subscribe to newsletters or follow technology blogs. Get yourself a subscription to a learning platform such as Pluralsight, UdeMy or Linda. You can also go on YouTube and follow channels.

The dotNet youtube channel updates itself pretty regularly and is a great place to see what is around as well as what is up and coming.

Another great source is to follow people on LinkedIn and Twitter. They are plentitude of great people you can follow that discuss about technology. Follow the hashtags and you will get into another world!

DZone, Dev.to and Medium are also great platforms where individuals write about different topics.

If you can, attend conferences. It is a great way to see what others are doing and where the industry is going.

Let’s not forget, at last, books! You definitely should buy/rent books. They provide so much valuable information. Don’t be shy to ask around what books you should venture into. Most of us have read a few of them.

The idea here is everyone learns differently. Find what works for you. There’s no wrong way.

Coding improvements

A great way to learn to improve your coding skills is to read code. Go on GitHub and pick and few of your favorite libraries and see how they are structured. See how they do things. You will learn plenty.

You can even try to contribute. A lot of libraries around have pending issues or love to get new feature requests. Don’t hesitate to contribute. It is appreciated by most open source maintainer.

Pet projects

Most of the time during work hours, you won’t have access, yet even the time, to try the latest and greatest cutting edge stuff on the market. This doesn’t mean that, on your spare time, you can’t do it. This can help you learn and prepare for your next challenges, whether it is for a new job opportunity within your enterprise or another enterprise.

When are looking for an opportunity, employers are happy to see that you have some GitHub repositories around, as they can have a feel of what you are doing, your level of code and what you are currently invested into.

Final words…

Be courageous! Don’t shy away from a challenge. Obviously, the path will be different for everyone, but this can hopefully give you some insights on what to look for to grow into your career.