The software development world is quite diverse and when I started out as a developer I would have loved to have someone telling me what the real expectations are for beginners. Sometimes those are very different from what is written in a job description.
With this article I want to start a series that gives my perspective as a Staff Engineer on what is expected of individual contributors on the software engineering career ladder. These articles are supposed to be brief and to the point. I want to start with the Junior Software Engineer. Let's go!
What is expected of you
You should limit the scope of your influence to your team. At this point in time it is more important to sharpen your skills as a software engineer. Going beyond your team will probably just distract you a lot.
Work has been usually broken down for you by someone else or you got help from someone more experienced. Over time you will learn how to go from project and feature requirements down to single work items that can be worked on by one person.
You are not expected to find solutions to all problems on your own. A mentor or senior engineer will probably help you to correct the direction in which you are going. Don't pressure yourself too much.
You will write code based on software development practices that your team or company laid out. By now most companies use code reviews that will give you a lot of guidance in that regard.
You chose a career in the software development area. You need to enjoy learning because this is what you will do from now on for as long as you will stay in this field. New technologies will arise quite often. So be prepared to be a constant learner.
If you are stuck, try and find a solution yourself first before asking for help. However, don't try to hide the fact that you are stuck for too long. Asking questions and asking for help is not a sign of weakness but shows that you want to learn and that you are transparent about your progress.
What you should aim for to be good
Take your time and focus on learning the technical basics. This includes your primary programming language, testing methodologies, version control, your working tools (IDE/editor, command line, shortcuts), Continuous Integration (CI) and Continuous Development (CD), deployments and frameworks your team is working with.
The following points are not as important at this point in time but will help you tremendously later on to make you more valuable. You can try to get familiar with agile methodologies and workflows that are used in your environment. Be an active part in improving those on a regular basis.
Learn how your company works. Where is the revenue coming from? What are the biggest challenges? How does the roadmap look like and how can you help achieving those goals? Those things will help you in the future to understand what is valuable work and what is not in the context of your team and company.
How you can learn
Everyone is different and has specific preferences, but those are some options you can look into.
Learning by doing: Just consuming resources does not help you much in learning about new topics. You need to apply what you consumed, do it!
Reading books, blogs, articles: There are tons of good books about all areas in software engineering available. Set aside regular reading time. Even better, ask your manager to make it a development goal to read certain books. Also ask her to let you set aside some time during working hours to do that.
Online platforms (e.g., Youtube, Udemy, Skillshare, Pluralsight, Coursera): Similarly there are tons of video courses available that will help you kickstart your progression.
Conferences and meetups: Conferences and meetups are a good way to expand your network as well as to get ideas about new developments in your area and things to try out. Conferences helped me especially at the beginning of my professional career to find out about developments I should have a look at.
Do you have other input about what to look out for when you start a career in Software Engineering? Let me know! I would be glad to listen to it and learn from your experiences. Let's get in touch via Twitter, LinkedIn or good old Email.