Landing Your Software Engineering Dream Job
So you’ve decided to switch organizations — for whatever reason — or you’ve just graduated (congratulations!) and are getting out there to start your working life in software engineering. Where to begin? Finding a company to work for can be daunting, exhausting, and sometimes overwhelming. A lot of this comes from uncertainty. Will I like this company? Will they like me? Am I skilled enough for them? Will I be engaged? Will I be able to learn? These and many other questions come across your mind when looking for your next gig.
In this post I’ll talk about three pillars — or elements, if you will — that have helped me over the course of my career in choosing a software company to work for. Looking back, whenever I didn’t enjoy my work in an organization for an extensive period of time, it was because one of these pillars was missing or weak. I hope these tidbits of information serve to help you choose an organization where you feel happy and fulfilled. With that being said, let’s start!
What is the organization’s mission? Does the company’s work have a positive impact on the world? Is it something you believe in or at least could see yourself believing in? Do you see yourself clicking with the company’s values? Any decent organization will have a clear and concise mission statement on its website. If it does not, or you do not click with it, you can easily rule out the organization with no time wasted. During the interview, ask about the longer term vision for the company and what problems it is trying to solve. Not only will you get more data for yourself to help make an informed decision, but you’ll also be showing interest in the company which will help you stand out with your interviewer.
Many people go by the false idea that free snacks, games, and beer on tap are what makes a culture. Consider that those things — although fun — are only the cherry on the cake. Rather, look at the people that make up that organization. Those people understand the concept of working smart & hard while having fun.
Gauge their attitude. Are they friendly? Do they ask you intelligent and non-cliche questions? Do they have a “code” they adhere to? Does the physical environment exhibit what they are saying? When was the last time their development team celebrated something, and what was it about? Culture is hard to gauge until you are in it and these questions can help you at least get a sense of it.
The Technology Stack
Whichever technology stack and tools you are interested in, there a few key things to look for. First, is the organization using recent iterations of that technology or is it out-dated? Second, does the development team take a one-size-fits-all approach or rather a reasonable degree of use-the-right-tool-for-the-job approach?
I am not going into the merits as to which programming languages or tools one should use. These decisions generally depend on the problem the team is trying to solve and the developers’ skillsets, amongst other things. That being said, you want to be in an environment where people are constantly learning. Do ask how the team keeps things evolving, up-to-date and how they apply the tools they choose to solve problems. Bonus points will be given to you if you ask why one technology was chosen over another with clear reasoning behind it.
How does all this exhibit at ACL?
I have been at ACL for about eighteen months now. All of the above pillars lined up when I was looking for an opportunity, and they still line up today. Here’s a sneak peek into our daily lives.
Mission. We build software to fight corporate crime and enable executives to run their business in a data driven fashion. The result ranges from jailing notorious fraudsters to saving organizations millions of dollars, which in turn can be spent for other purposes (and suddenly you have a beer keg and tonnes of games).
Culture. Especially for R&D, we have a #relentless and GSD culture (that is, get sh*t done). Our brigade structure allows us to focus teams on projects and deliver software every single week. We bring the moose to the table, which is the equivalent of talking about the elephant in the room. Research spikes to explore new technology and solutions happen on a regular basis. On top of all this, the physical environment is a brand new office in downtown Vancouver with most of the perks you can imagine, including a gym.
Technology Stack. We predominantly use Ruby/Rails for the backend, heavy on React and AngularJS on the front end and have a few specialized services in Node.js and Java. We are now scaling one of the Rails applications using a suite of Scala-based services. Our services are deployed exclusively on AWS and we constantly improve that process with tools like Terraform and Docker.
Let’s talk about a potential elephant in the room (or in ACL-lingo, the moose on the table). You have probably noticed that there was not a single mention of compensation or title/seniority. This is not to say that these are less important or that ACL doesn’t give them the importance they deserve. Far from it. I ask you to consider that if the three pillars mentioned in the beginning are solid, compensation and title will follow. Even startups that have all of the above three nailed down will make sure their employees are properly compensated with different perks driven by a tighter cash flow. Of course, depending on where you’re at with your life, you may value one more than the other.
Wrapping it all up
Focusing on a company’s mission, culture and technology stack has led me to make choices that keep me fulfilled, especially in tougher times. I hope that following the same guiding pillars can be helpful for you in looking for your next gig, wherever that may be.