Metaphorical Wi-Fi (or, Why Did I Choose Software?)

What’s the most humbling experience you’ve had lately? And, wait, what does that have to do with software engineering? And why am I doing this weird kind of intro again? Let me explain.

A wireless network router.
🎶 Turn it off, like a light switch / Just go click! 🎶

A couple of examples come to mind for me. The first is from one hour ago, when I wanted to start writing this but the Wi-Fi broke instead. (Trust me, I’m going somewhere with this.) I spent the next hour trying to fix it – which to my family meant using incredible technological skills to make a new GUI for the router’s DHCP interface … but really meant Googling stuff on my phone and trying random suggestions until it magically started working again.

“Aha,” you might think, “I get it! He’s making a metaphor about how software engineers code by searching for StackOverflow posts and trying random code snippets until their program works!” Well that is actually quite poetic, but not what I was going for. The second humbling experience I’ve had lately was starting Part II Software Engineering this year.

The journey to software engineering hasn’t been straightforward for me. Having spent my first year of uni burning out on two tough semesters of Biomedical Science, and feeling uninspired by where its pathways lead, I switched to Engineering. I could go directly into Part II – as long as the specialisation I wanted to enter wasn’t Software. But I didn’t want to give up that opportunity just to save one year … so I decided to give it a crack.

I’d always had a history of doing bits and pieces with computers, but I certainly wasn’t a child programming wunderkind. What helped me decide was ENGGEN 131. Now, there’s a bit of a meme that people choose software thinking it’ll be just like 131, and then get a … surprise in second year. And while Part II definitely isn’t 131, what appealed to me about it was the way in which we went about solving problems. Ultimately, a task was a thing that needed to be done, and how it was done was up to us. While other papers can feel like treading the path well-worn, using the same old formula and calculations, software feels like going somewhere new. The software you write feels like something entirely new. Like something that’s yours.

(It’s not really though – you get too many bits from StackOverflow.)

So if Part II isn’t like ENGGEN 131, what has it been like? It’s been humbling. The courses are difficult, there’s no denying that. Some days, all you feel like doing is ripping your hair out because you can’t get your code to return some data in this exact format, or because you don’t understand how one algorithm runs faster than another. But everything in life has those moments that knock you down. That humble you. What makes it all worth it is when you do get the code to work, and you do understand what the hell Big-Oh is. Sure, maybe it took you six hours to get there. But the feeling when you arrive is like nothing else. What makes it even more rewarding is the people you do it with. The cohort is small, and that’s what makes it so great – the feeling that you can talk to anyone and feel like you know them, even though you just met.

In many ways, software engineering has been like fixing Wi-Fi – sometimes frustrating, always challenging, immensely rewarding. Fun, even. And in the end, you figure it out as you go.

Okay, that last part isn’t like Wi-Fi. I still don’t know why it started working again.

P.S. Tickets to Auckland’s definitely-the-uncontested-most-coolest show, the Engineering Revue 2019: Game of Loans, are on sale now! This show has been a huge part of my life this year and I’m involved in about 6 different ways, so come along and support your fellow engineers on stage! Check out our event page on Facebook if you’d like more information first.

Hey, I even helped make the website (engrevue.co.nz), so it’s relevant to software!