My favourite part of software engineering is actually sitting down with people who are using software and asking what their issues are, what they want to do, and then being able to magically solve those problems.
Occupation: Software Engineer
Years of experience: 12 years
Based in: Melbourne
Strengths: Prototyping pro. I rapidly and test new ideas. Terrific teacher. I build teams of juniors into capable contributors.
Primary programming languages and frameworks: Python, Javascript, React, Django
I've been building and developing things for over 10-12 years now and also teaching people how to do those skills as well. The philosophy I take when building things is to try and make them easy enough to pass on to other people, which I think is the mark of a good engineer and someone who can make something that outlasts themselves.
I know how to build things on my own, which isn't necessarily a skill you see in engineers who've worked at places like Google or Atlassian where they're building on large existing structures. I've worked on a lot of small things over and over and figured out how to spend the least amount of effort to make something that's not only useful, but positioned so you can change it up and find product-market fit.
I also have the skills to explain what I'm doing. There's often a unique world developers get into with specific jargon that other people don't understand. I've had enough experience communicating technical details to non-technical people that I can help them make decisions based on knowledge they didn't have previously.
It started when I attended a programming camp while I was in high school. Programming captured my imagination because it was like solving little puzzles, and at the end, you'd have something you could interact with and share with other people to help solve their problems.
When I set out on my career, I wanted to do something that isn't just mindlessly fiddling with buttons on an app somewhere, which is what I'd heard from a lot of my older friends who worked at Google. So I ended up working at a computer science research organization where I worked with AI and mapping and a whole range of things. It was really fun to work on new interesting prototypes of projects that most people wouldn't work on till later in their career, if at all.
One thing that comes to mind is a project where I was using AI to predict what air pollution would be like in and around the mines in NSW. Basically taking someone's research code that was in an environment that no one non-technical would be able to use and making it easy for anyone in the NSW EPA Environmental offices in NSW to predict what the pollution was going to be like.
That project eventually led me to realize that the root problems weren't necessarily technical but political. So I eventually moved on to working in the tech team for a place called GetUp where we were trying to convince people to donate money to causes that would either change votes during election periods or change the mind of large companies during their shareholder periods. I followed that with work at a large trade union centre.
My favorite part of that job was being able to sit with the frontline staff and receive calls from people who just had something awful happen at work - whether it was being injured by a disability service client or a boss not allowing them to have overtime or sick leave when they needed it. You'd listen to people who had been working there for decades, and they would be able to say: this is what your rights are under the law and this is what a group of fellow minded workers might be able to do to help you get back to feeling safe and happy with your job.
Actually sitting down with people who are using software and asking what their issues are, what they want to do, and then being able to magically solve those problems. People often think of computers as static appliances, but when you can sit down and within minutes, hours, or a couple of days solve an issue they've been highly frustrated by and didn't realize was solvable - I always find that very gratifying.
Prototyping and iterating, plus mentoring. I've mentored junior developers from having only basic experience to being solid professional developers, as well as mid-career developers learning the full stack. Most developers are web developers, and I've worked across the entire stack - from back end to front end, plus the development operations stuff where you need to make sure your code runs well and your website isn't falling apart.
Projects where I get to teach someone, work with the people I'm creating things for, and do good for the world - helping a local community or underprivileged group. I find a lot of satisfaction in that.
Working on something that helps a local community or deals with climate change or inequality. Building something that would help people immediately, where I know exactly who the users are and can sit down with them to understand what we can actually solve. It would be nice if it was with a small team that I could help grow and mentor.
Somewhere that listens to the people inside the company. I've worked at large places that tend to be impersonal and not good at understanding what their employees need or how to get everybody working well together. I enjoy figuring out how to get teams to work well together - sometimes there's friction, and if you come in as a new person paying attention, you can shift that dynamic.
I don't know where I see myself in 10 years - but I know where I see the world: as a more equal place where people who grew up like me without a lot of money would be able to help other people out and do the things they want to do. If I see myself somewhere in 10 years, it's continuing to help achieve that.
Look for someone who can build things iteratively. We talk about being agile a lot in the industry, but everyone thinks they're doing it while nobody actually knows how to build things quickly. You want someone who can work with the people who need the solution and improve it every step of the way, rather than saying "in one month you'll see this change, in six months this change." Actually saying "this will take a week, let's do it" and "this might take four months, but here are the steps to get something achievable on the way."
Anything that leaves the people using the work worse off. Like gambling apps - the people using your product are being impoverished by it. Most people agree this is problematic, yet we haven't been able to make it harder for companies to do that sort of thing.
I do a lot of baking and bring baked goods into the office all the time.