This is an update of the original article I published in 2021.
The software development world is quite diverse. When I started out as a developer I would have loved to have someone telling me what the real expectations are for beginners and how I can improve.
What is expected of you
Scope of influence: 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 and get used to the general approach of software development in a team. Going beyond your team will probably just distract or overwhelm you.
Size of tasks: 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. Most likely you will start working on smaller tasks.
Finding solutions: You are not expected to find solutions to all problems on your own. A mentor or senior engineer will probably help you to correct your direction if necessary. Don't pressure yourself too much.
Practices: 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 on the one hand, but you can also use to learn about approaches and best practices on the other hand.
Be a curious mind: You chose a career in software development. 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, the domain you have been put into might be new, you might change teams over time that work on different areas of the company. So be prepared to be a constant learner. Stay curious.
Don't hide: 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
Learn the basics: 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 Deployment (CD) and frameworks your team is working with. In fact, at this point in your career you will have lots of time to learn and to focus. Use this time!
Development methodologies: 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 suggesting improvements on how you work together as a team.
Understand the context: 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.
Express your ideas: Finally, don't be afraid to give constructive feedback on code or system architecture if you have a mixed gut feeling. More experienced engineers can be blind for the simple solutions that are right in front of them. A pair of fresh eyes is worth one's salt.
Ask for feedback: From the beginning ask your colleagues and your manager for feedback on whatever interests you. In my experience people seldomly give feedback without being asked (or forced). In addition, ask your manager what she expects from you. Try to be ahead of everyone else and adjust direction early.
How you can grow
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 books that are relevant to your work. Also ask her to let you set aside some time during working hours to do that.
Listening to audiobooks, podcasts: If you enjoy listening more or if it fits your schedule better, think about audiobooks or podcasts. Go and have a look at your favorite podcast app and pick what resonates with you.
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.
If any of the above is not available for free ask your manager if this could come out of some development budget. Showing that you care about your growth and take this into your own hands is a sign to your manager that you take things seriously. It also can relieve your manager from thinking about development goals.
Being a Junior Software Engineer can be tough. Many things will be new. The single best advice I can give is to stay open and stay curious. That's the best basis for you to soak up information, build connections and grow.
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.