A while ago someone asked me "what do I do at work as a Software Engineer?" The more I thought about this the more I realised that there was a general disconnect between the general public and what my job is.
So, in this article, I hope to shed some lite on what someone like me a "software Engineer" actually does and the road I took to get there.
So,… what is a Software Engineer?
It's typically the term I use to describe what I do for work. I use it over a more accurate title because the people in my social circles generally understand it to mean: "that I write code all day".
If I was to use a more accurate term, I would probably call myself a Mid, Full Stack, Software Developer. Mid because that would describe how the level of experience. Full-Stack because I dabble in both server-side (business logic/server code/things users can't see) and Front End (putting together what users interact with on-screen).
Software Developer because I mostly work with mobile and web technologies rather than embedded systems (code that runs on hardware in things like TV or Microwaves or Robots) or Enterprise Systems (Big Business Systems) or Medical/Engineering Software Systems.
Although the industry hasn't got to the point where job titles have official definitions and as such, you'll often see the same job ad or title with varying responsibilities.
What does my job actually look like?
A day typically starts with planning which project tasks I'm going to complete. From there I work through writing code to complete those tasks. I might have to chat with a product or design college to clarify information that affects a task I'm working on. When a task is done, I might also send it off for testing. At a very basic level, this is what my day looks like.
If we zoomed out of my schedule the next largest unit of time; I work to, is called a sprint (can be 1 week or more time-wise). The beginning of a sprint looks at the planning of tasks for the duration of the sprint.
Often the planning involves other developers, the project manager/owner and the design team. Once the set of tasks are derived, I then plan on which ones I can commit to before the end of the sprint. From there it's back to the day-to-day motion mentioned in the previous paragraph.
At the end of the sprint, there's time to present the work done to the projects' main stakeholders.
What type of projects do I work on?
I work on both studio type work (websites, marketing sites) as well as projects that are backed by venture capital (Software for business operations or to achieve a specific goal). That basically means I work on building anything from websites to apps to games.
One of the reasons I like working for my employer is that it's never boarding, as each project is generally something completely different.
The road to employment
In high school, I took programming and multimedia classes. When I was at school, they were called Information Processing Technology and Information Communication Technology.
These classes and today's equivalents are a great gateway to tertiary or further education. The programming classes, in particular, get you used to how to problem solving when writing code.
Now Tertiary education is one way to enter the world of Information Technology. I studied a Bachelor of Information Technology and Multimedia where I majored in "Software Development and Electronic Entertainment & Games Design". The latter of which, I picked up because it fed my interests in 3D modelling, video production and educational design.
In my later University years, I joined the enterprise club and worked on several real projects. It was while I was doing this work, that I got poached by my current employer. From there I started as a junior learning the ropes before transitioning to be a Mid.
Now University is not the only path into software development. If you want to do robotics or work in specialist areas (embed systems, electronics, medical software, aviation software) University is probably the best place to start. For the sort of stuff I do, there are alternative paths that include; coding boot camps, internships and self-taught.
While these are perfectly valid paths (I have amazing colleges that started with these paths) the general hurdles for these paths are getting enough experience to land a job. Typically, when I look at job ads they are looking at experience levels required to perform a role over whether or not you have a degree.