The Importance of Passion in Software Engineering

Evan SooHoo
9 min readDec 20, 2020

--

Photo by Hugo Humberto Plácido da Silva https://freeimages.com/

Someone I knew in high school wrote me a really nice message on Facebook about how I got him interested in programming and inspired him to become a software engineer — as it turned out, this message was exactly what I needed. That same week, I got rejected from three different software engineer positions.

Seeing that message brought back a lot of memories in me. First I thought about high school programming, when everything seemed new and even the idea of making a program say “Hello world!” was exciting. Then I thought about the OpenProcessing projects we made, which are deprecated now, and the chemistry program he mentioned.

I actually used Vue.js fairly recently to host that “high school chem” program here https://evansoohoo.github.io/AngryChemTeacher/ , which was adapted from the several thousand lines of Java. Our final projects, unfortunately, are mostly deprecated https://www.openprocessing.org/class/691/

When it all first began, and I had written little more than basic functions and my first if statements, I probably thought that I was pretty good. Then came recursion. Then came college, with its infamous “triple-pointer” assignment in C, job interviews, a demanding first boss, and a horrifying three-headed monster referred to as legacy code. Computer programming can be, depending on the code base and the team, quite difficult and more than a little bit frustrating.

I related all of this to a coworker. In particular, I tied it to an interview I had listened to with Brian Kernighan. Kernighan was one of the key people behind Unix and C, and the interview asked him how he thinks he would perform as a software engineer today. Kernighan said, probably a little too modestly, that he may not have been great — programming in his time was all about inventing new things, whereas programming today is a lot of looking things up. I wondered then if I, ordinary person that I am, felt the same way. In the past, things were difficult and exciting and new. Now there are a million libraries for everything, and there are 21 million software engineers.

My coworker’s response was that he disagreed completely. Technology is amazing today, so amazing that processors from this year make processors of a few decades ago look like cheap toys. We have machine learning, and AI, and a billion other fascinating things that are really picking up now. This isn’t the time to look backwards, it’s the time to look forwards.

It’s possible that the software engineer who wrote me that message succeeded because of extreme intelligence and extraordinary, inborn talent; in fact, that’s probably the case. But I like to think that a big part of his success, and the driving force that propelled him to make it to Salesforce before he went to Google, was passion.

I’ve met some really great people

While on the job hunt, I met lots of interesting people. I met a CTO who invented an FDA-approved algorithm for breast cancer detection. I met one of the engineers behind Intuit Mint, who admitted he actually left angry because they ended up not using his feature. I passed coding tests. I failed coding tests. I got ghosted more than a few times, and one time I accidentally ghosted a recruiter.

Mini-anecdote: I applied to OKCupid, received an email from their HR department with match found! as the subject, then was asked to schedule an interview. I scheduled a time, never heard anything, messaged them again, and have never heard from them since.

Of all the companies I applied to, the one that really stood out to me was no company at all.

This was a full-time software engineer position at a college

Okay, so you probably can’t read that…but what passion! I responded to this campus position with an email that had a bunch of open-ended questions, he responded to each one, and I had not encountered enthusiasm like that since the time I attended UC Davis and conversed with English professors. Who knew that the way to engage computer science instructors was by asking them about their research? To them, asking about merge sort in office hours is probably like asking famous authors for instructions on how to properly use a comma.

I easily found him on LinkedIn. He defined his mission of “bridging the gap between advances in architecture and important new applications,” outlined the problem of how Moore’s Law is reaching its physical limits, and laid out exactly what he and his research team were doing to address the problem.

In the end I didn’t get the position, but…they’re open source. I ended up getting to work with them, anyway, albeit briefly.

My contribution involved just a few lines of changes, but I also renamed some files, so if you check Github now it claims I contributed something like 10,000 lines of code to this project…

A great person I learned about but never got to meet was Pieter Hintjens, who believed so strongly in ZeroMQ (a socket library) and open source software that he continued to develop it while he died of cancer. He believed that the Internet was in danger, monitored by the powerful and few, but that we could promote democracy if we built a new Internet on the back of distributed technology and with the aid of his library. If we did this, he believed, the Internet would become more than just a massive surveillance network.

We are living in the golden age of web development

May he rest in peace

In the ancient Browser Wars, Netscape claimed that the Internet was the future, and that eventually personal computers would be little more than gateways into the net. Were they wrong, or were they just off by a few years?

Anyone can make a website, now, and that website can work on any major computer and any major browser. Thanks to Github, we can host these websites for free. Thanks to client-side frameworks like Vue.js and recent innovations in Node.js, we can do web scaffolding and deployment in a matter of minutes.

And for the non-coders? They’re feeling the changes, too. Heck, I had an enjoyable experience building my Kiwanis club’s website…and that required no coding whatsoever.

https://k07015.site.kiwanis.org/ . Also redirects from citrusheightskiwanis.com

There are lots of different things you can do as a software engineer. In college, we were all required to start with C and move onto C++. In my early days of work, we did middleware.

If the act of software engineering were analogous to making boxes, middleware would be like delivery. You can make box delivery more efficient if you are intelligent about how to address them. You can also speed things up by rearranging box content, maybe adding padding, maybe putting more detailed labels on the boxes so that nothing goes wrong.

Imagine my excitement when I got to do my first web project. Suddenly we were getting mockups from designers, bringing designs to life, deploying web applications that rapidly integrated new technologies like Docker, and Node.js, and Docker-Compose-SuperDockerExtreme. Everything seemed lightweight, easily hosted, and efficient. If middleware was the mundane act of delivering boxes, frontend web development was like the exhilarating act of folding the boxes.

Huh. Perhaps box-making was not the best analogy.

You don’t have to be a rockstar to make music

I love/hate this video.

Someone named Baotuan showed me this video when I was a college first-year. To be completely honest, it freaked me out and made me wonder if you had to dream in code to be worth anything. This fear was compounded when I went to a career fair, and one of the recruiters described happiness as “realizing you care so much about a coding problem that you forgot to shower for three straight days.”

I think this Reddit comment says it pretty well.

As the above says, “These people aren’t brilliant because of [programming], they are brilliant because they are brilliant and programming happens to be a superb outlet for their intellectual prowess. The cold hard truth is that we are lacking engineers and scientists because in modern American convenience culture it’s simply too hard…we don’t have an education problem, we have a motivation problem.”

Heroes and “rockstar” programmers can be motivating — but they can also be daunting. Ken Thompson built the first version of Unix in three weeks while his family was on vacation; Kernighan claims Ken built a functioning disassembler while he was briefly out to get dinner. Sal Khan obtained three degrees from MIT in four years, worked at a hedge fund, and then invented Khan Academy as a side project. The Dropbox founder came up with the first prototype on a two-hour bus ride, Tim Berners Lee invented the entire World Wide Web, and the reason Zuckerberg’s hacking seems so accurate in The Social Network is that the script was taken almost verbatim from the actual blog posts he made during the real hack. Like in almost every other field, some people are simply much more competent than others. 10xers are absolutely a real thing, but the term has been so overused that it has become something of a meme.

Adding onto that with another comment in the same thread:

Someone managed to develop self-replicating mining turtles in Minecraft

“It’s all a matter of making it fun.” You can do a lot in programming, including but not limited to tweaking the script for a mining turtle in Minecraft. There’s a certain pleasure in building things that do exactly what they were intended to do, even if they’re only for us. My computer science mentor shared the story of how he simply wrote a script that sent him a text when the campus had a package ready for him.

Some people love the problem-solving. Some people love the visual/design aspect. Some people love the theory, and the more complex math behind the theory. But the way we teach computer science at universities like the one I went to, we only teach people a small part of it. We teach people basic syntax, fundamentals, and theory that’s just difficult enough to weed out a certain percentage of people every year. Maybe the system works well, but there are entire undiscovered worlds that people can only find outside of the traditional classroom.

We had a use case, once, from a customer asking us how to make a web component work across multiple windows. It wasn’t even my idea, and it wasn’t even the only solution, but David Gilbertson proved that a single call to appendChild could allow two separate windows to maintain reactivity and have consistent styling. Someone on Stackoverflow made the small creative leap of applying it to Vue, and I proved that this solution could be applied to our own components. I thought this was really cool, the middleware engineers didn’t really care, the web developers did, and that was just fine.

Closing Thoughts

Here are a few things I have learned in my software engineering career, thus far:

  • That not everyone finds frontend web development interesting, it just so happens that I do
  • That there is a seemingly infinite number of interesting things in computer science you can study, but it’s okay to not study them all (in fact, it’s almost impossible to)
  • That though some people in this field are difficult, or demanding, or arrogant…some are none of those things. Just as you will inevitably meet people you dislike, and who will discourage you, so too will you meet people who are brilliant but not arrogant, helpful but not controlling, and these people will help you and encourage you on your journey
  • That open source development is the silver bullet to the problems this world currently faces
  • That spaces are better than tabs, and anyone who says otherwise is wrong
  • That if it just so happens that you help someone in coding, at any point in your life, one day you may find that they help you, too.

So to the person who wrote that Facebook post, thank you again. I may never be able to fully express how much it meant to me.

--

--

Evan SooHoo

A software engineer who writes about software engineering. Shocking, I know.