“If you are going through hell, keep going”.
A phrase attributed to Winston Churchill aptly describes the path a novice in the IT industry takes to become an Engineer of Distinction. This uphill struggle costs both money and time (measured in years), but the end result will hopefully prove worthy. In our latest series of blogs you’ll get a unique chance to find out how all the stages of a programmer’s career look like, beginning with the apprenticeship programme, through the various engineering jobs to become the Principal Engineer of the company and finally conquer the entire industry. But be aware from the very start, not all programmers get to the final stage!
In this week’s blog we find out how a Pre-Apprentice can become a full-fledged Software Engineer.
Basically, their only task at this point is to learn as much as possible before moving on to the next stage.
Congratulations! If you become an apprentice, you get the official confirmation from the company that you know practically nothing. Joking aside, the second stage of apprenticeship can last up to six months and although programmers still have to work under supervision, they do get some small tasks. Usually, they will be delegated with internal tasks in client projects and their work on these will be closely monitored by the mentor. However, their primary goal still remains learning and self-development through observation and mentor feedback. Having completed the apprenticeship, they are finally ready to become true Software Engineers.
Programmers not only get to work in a team, but they receive the same status as the people they are learning from. The process still involves accepting feedback graciously, since they are still focused on their own tasks which become more complex over time.
They now receive well-defined sub-tasks which they are expected to complete. Of course, close guidance and technical mentoring ensure that they don’t fall in danger of becoming stuck or blocked. They still have to heavily rely on guidance, since they are not yet ready to learn in a self-directed way. At this stage, productivity skills are in focus, such as source control, editors, the build system and other tools, as well as testing best practices.
In essence, a Software Engineer is expected to acquire a broad knowledge of CS concepts, all the while focusing on growing as an engineer, learning existing tools, resources and processes.
Only after all these requirements have been met, regardless to the period elapsed, the programmer is ready to assume the role of an Advanced Software Engineer and for the first time co-own an area of projects. You can read more about this and higher posts in our next week’s blog.