For those that have an affinity for technology, have run a few code loops, or are studying in software courses around the world, the job title of software engineer looks mighty appealing. It’s one of the occupations that can assure your career ahead won’t be disrupted by automation – as you’ll be the one coding those automations!
However, the distance between thinking about, studying, and practicing programming and related design activities, and actually working as a software engineer is chasmic.
Like any first role in a new field, it’ll be mind blowing, maybe ‘not-what-the-pamphlet-said’ and potentially hard to keep up. But challenges are the best part about personal growth – particularly in your career.
So if you want to know what it’s really like, then strap in. We tracked down three software engineers working at some of Australia’s foremost software-centric companies to share their experiences.
What’s it like to work on software projects?
What happens at the beginning of software projects?
It’s all about planning – and that’s not only thoroughly outlining the project requirements.
“By planning I mean not just setting a deadline but breaking down all the requirements that need to be covered, defining explicitly all the responsibilities and roles on the project, setting good process for development and testing, explaining to everyone the escalation management process and communication plan within the internal team, 3D party teams and the customer team.”
He also highlights risk management as a key task in the planning phases. “When you take some time to identify possible risks (such as cyber risk) and ways to mitigate them you are saving an enormous amount of time in the future.”
What are the challenges within projects?
Suvorov highlights a list of recurring project challenges that you’ll face as a software engineer.
“[Common challenges include] a very big scope, limited resources, lack of time and strict deadlines, new unknown technological stack, complicated or uncompromised customer, tricky and difficult product domain, inexperienced team members who need extra guidance and constant vigilance from seniors. And very often, projects have all mentioned challenges at once.”
Steps can be taken to overcome these challenges, including initial and ongoing risk management activities as we just touched on.
Your specialisation can help determine your role on teams
“My job includes deciding what internal tools, applications and architectures we should have to support our microservice-driven solutions. Once we have a consensus on what we need, we prioritize what needs to be built. We then work together with developers to build it.”
You may specialise in a certain technology, such as Node.js, or you may be brought onto a team specifically because you have a stats background. Experience dictates role, so specialising early can put you in demand.
Personal attributes that can get you far as a software engineer
The trope of the loner software engineer is thankfully dying out. To make it on any team you need to be a team player – and that means being personable.
While many people enjoy some alone time to work quietly by themselves coding and debugging, in most office situations this will only be for a few non-continuous hours a day. As Suvorov mentions, good software engineers are “constantly communicating with all sorts and levels of stakeholders and team members, other vendors, business analysts, quality engineers and UI designers, support and helpdesk colleagues.”
If you feel like your interpersonal communication skills aren’t up to the task, then it’s time to start brushing up. You can try groups like Toastmasters and various Meetups to hone communication skills.
Zuberi highlights empathy as a key personal attribute that can help guide your software development processes. “Let empathy for your clients direct you. Maintain transparency and share the ownership of the project with your team.”
“You are not software engineers. You are solution engineers. I think it’s a very noble cause. Focus on how best you can solve a problem for someone.”
Building empathy requires only working on seeing things from other people’s perspectives. Instead of thinking of clients as tech illiterate with only you to guide them, envision things from their perspective. Make projects simple, intuitive, and elegant to obfuscate the tech behind it.
A penchant for bringing people together
This attribute is what will set you up for a future in management, have you sitting on exciting committees, and bring a lot of diversity to the work that’s adjacent to coding in your role. If you love coordinating events that are TED-talk-esque or are excited to get involved in working groups to build software projects that benefit the workplace outside of your regular projects, then you will be a highly valued employee.
While this isn’t a necessary trait, it can certainly help guide you towards the management path.
How easy is it to get a job as a software engineer?
Gravitate towards your passions
“Software teaches you ‘how to think’, says Zuberi. “You can apply that ability anywhere.”
“Choose what you are passionate about and then look at the common principles that govern those domains, be it AI, cybersecurity, or robotics. Observe what tools are used to solve that domain’s common problems and then embark on a journey of discovery, picking out problems and thinking of new ways to solve them.”
Reading about fields and looking at the code and tooling behind them can help guide you, if you aren’t sure where your interests lie.
The first job
“Join a company where there are a lot of opportunities to learn. You want to be working with great engineers who can help you grow. And you want it to be a place where engineers are empowered to influence the product and make technical decisions.”
How can you tell that a company is like this at interview? By asking the right questions, seeing people’s enthusiasm for their work and company culture. Pay close attention to other engineer’s attitudes: the CEO or highest ranked person within the meeting may simply be a great salesperson – although this isn’t necessarily a bad trait if the team has full belief in the person, company and/or product.
It’s not always necessary to go for a large, established enterprise, either. As Crawford mentions, “startups present a great opportunity for learning because you typically get to work across a broader footprint of the product, and as they grow they open up opportunities for you to take on more responsibility.”
A later-stage startup may be more fitted to junior developers, as you want to ensure there is enough senior guidance on the team.
The way forward
Once you’ve landed your first position, if you excel in the role, you’ll be able to move up, either within the company, or with another more prestigious company, or have the ability to land a role in new locale – perhaps even across the world. Even if you feel like you have just done an average job in your first role, you’ll likely able to be placed at another similar company in a similar role should you feel like a change of pace.
Ready for your new role?
Think you’re ready to take the next step in your software journey? Browse open jobs at leading Australian companies: