When I first learned to program, I did not have a computer. I wrote everything out on paper and just imagined what would happen when it ran. (This was back in the days when magazines actually had code listings for you to type into your Commodore 64 or Apple II, and the only storage was on cassette tapes.)
The first computer I owned was a Macintosh 512K. It took about five minutes to boot off a floppy and you spent all your time swapping floppy disks. Many people found those early computers to be incredibly frustrating. I loved them.
I was fascinated by the technology and wanted to keep learning more.
As a co-founder of Aha! I enjoy hiring people that have the same sense of wonder for what could be around the next corner as I do. Our engineers share an adventurous spirit and love for what we do. I am proud of what we have accomplished so far, and we are always looking for more like-minded Aha!s who want to join us in the work we do.
People often ask me what we look for in engineers. So, I figured I would write it up because I think these are important qualities for anyone interested in joining a rapidly growing company.
When hiring engineers, here are the four qualities that matter most to me:
We want people for whom writing software is the most rewarding thing they know. Writing code generates a mental high, which makes them want to keep doing it. They keep going even when the work is frustrating and difficult, and they consider finding solutions and making new discoveries to be fun. This kind of passion is a necessary ingredient. It helps to create a virtuous cycle of learning and productivity, which leads to better skills.
In this field, you are never “done.” There is always something new to learn or improve upon. That is why we look for people who are always unsatisfied with their understanding of how their software works and are instead constantly wondering “why?” These individuals want to continually expand their knowledge and push their own boundaries. That kind of inquisitiveness is contagious to others on the team, and it ultimately benefits our customers in the form of continued enhancements and new features.
The key part here is “demonstrated.” We use a candidate’s GitHub profile to understand whether they have made open-source contributions and whether they have given feedback or reported bugs to other open-source projects. We also want to discover whether they can work with others who they may have never met face-to-face. Of course, GitHub is not the only way that people communicate. But for someone making a hiring decision, seeing evidence of past collaboration can make it easier to arrive at a “yes” decision.
Software engineering has its fair share of arrogant personalities (just like any high-profile profession). But learning and cooperation are essential to long-term success. Those can only come if you have enough humility to realize that you can learn from those around you. Despite the logical aspects of building software, engineering is a field where you are often choosing the “least-worst alternative.” Opinion and judgment are often the only tools we can use to make a decision. Being able to see other points of view — and even accepting a decision that you do not necessarily agree with — is important.
There are, of course, other core skills and attributes that factor into our hiring decisions. But I have learned that these four qualities are critical for success on our engineering team — and they are very much interconnected.
As I pointed out, I wrote this because I am often asked what I focus on, but these characteristics are not limited to the engineering team. Every Aha! team member has a critical passion for their craft. We look for smart people who admit they do not have all the answers and want to constantly improve their skills and share that knowledge with others.
And a humble confidence must be present as well. It helps us to build a strong team of high achievers who respect and challenge each other to get better and better.
What qualities do you think are most important for software engineers?