He then decided to switch things up. He moved into the education space to ensure other people could have access to a high quality level of programming education. But Gene didn’t go back to his undergraduate alma mater. Instead, he joined App Academy, the top coding bootcamp in the U.S., as an instructor. After a few months working with beginners, he helped the bootcamp create a new type of program, one that would cater to veteran, experienced programmers: Engineering Interview Prep.
In an interview conducted at our office, we asked Gene to answer some of the most important questions applicants have about the program and about getting better programming jobs in general.
The following has been edited for clarity and length.
What does Engineering Interview Prep offer that other accelerator courses do not?
I’d say at a guess that we have smaller class sizes, which means more personalized attention with more experienced instructors.
A lot of people believe that an engineer’s first company should be able to provide career support to help them move up. Is that even possible for most companies and why don’t engineers take this opportunity to move up?
It varies greatly. In a medium-to-large organization there are often well structured pay grades and role levels, with a clearly defined path to career progression.
Alternatively, at startups, you likely won’t be given an opportunity to advance your career formally, since engineers will often take on much more responsibility across all facets of technology, for example, an engineer at a startup will need to both build the backend and frontend systems, and will also be involved in the setup of marketing campaign tech (like tracking leads), internal corporate software engineering, and monitoring systems, all under the same title/paygrade.
The Engineering Interview Prep is an App Academy course. How do Engineering Interview Prep students benefit from being part of the App Academy structure?
App Academy is able to provide the existing infrastructure surrounding the course content itself. This includes admissions, student experience, and post graduation guidance. We have many great resources already available on such topics as negotiation, whiteboarding, and resume building for example, which the Engineering Interview Prep students immediately are able to take advantage of.
Sharing the learning space with other students helps too, by having a group of peers who are also going through the job search process.
What are the types of engineers that take Engineering Interview Prep? For example, how many years do they have in the business and what are their specialties in, usually?
The average Engineering Interview Prep student has approximately 1-3 years in the software engineering industry already, and most do not have any sort of university/college level education in the subject (although some do).
The typical student is ready to take the leap into a larger organization, higher pay and needs help to understand exactly what they’re going to need to know to have success during the interview process at these large tech employers.
This includes both soft and hard skills, including how to answer tough interview questions at all levels of seniority.
We aim to get all our students a pay rise, at least in the $20k range, but often much higher.
What’s usually their main reason for joining Engineering Interview Prep? How can Engineering Interview Prep guarantee a salary of $120K?
Most students want to be successful when they go for that high paid job at a large tech employer. If they’re dreaming of working at Google, they want to *make sure* they pass the interview, and most of them don’t have access to a senior engineer to “validate” them in a way that the feel is representative.
Why did you join Engineering Interview Prep? What do you get out of it personally?
After being a software engineer for over 10 years, I felt that I’d really mastered the practice of building scalable code, and I wanted to focus on improving my verbal ability, to practice group leadership and to educate others.
The most rewarding part of the role is when my students get placed, and specifically when I hear the high compensation offers it makes me feel like I personally did a good job.
I enjoy that my success is tied intimately to the success of my students.
What tends to happen when a job applicant reveals their desired salary first?
The main problem with stating your desired salary first is that there’s a chance that your desired salary is a fair bit below what the employer would be willing to pay.
By announcing your desired salary, you’re essentially pegging your maximum offer to the number you state.
You can be guaranteed that the received offer will never exceed your first stated desired salary.
How does one respectfully decline to reveal their desired salary when asked? How do you avoid filling out the question on applications?
A good strategy is to use circumlocution when discussing salary and be vague in your answers, without directly declining to answer. Use a combination of the following statements to express that you’re likely in the right range for the role, without directly expressing a number:
- “I don’t have enough information about the role to evaluate it yet, but on [Glassdoor/Indeed/elsewhere] I’ve seen your company offer in the range of [high number].”
- “My desired salary is at the higher end of that range, perhaps even above it,”
- “I am confident we’ll be able to make an agreement when the time comes.”
- “My priority is to find a company that offers [mentorship/a great product/an excellent team/whatever matters to you].”
This also signals to your potential employer that you’re going to negotiate any offer that they submit to you.
How much more does a senior programmer make as a consultant compared to an employee?
Consulting can lead to much higher income than full-time work, up to 2 times higher.
The other advantage is that you charge for every hour worked — many startups (and large companies) have a “work until the job is done” mentality, and although you signed a contract for 40 hrs/week pay, you’ll likely end up working much more than that, sometimes 60+ hrs.
However, the downside to consulting is that you need to be capable of managing your own business. Finding work takes time, time that you won’t be able to bill anyone, and invoicing, taxation and chasing payments will likely take a few hours a week.
Consulting also leads to less regular income, so managing your personal finances closely is a must.
How many years of experience do you need to get a job as CTO or tech lead at a startup?
This is highly variable. I’ve seen people jump straight from zero years experience to a CTO role, however, that’s very rare.
The thing to consider when answering this question is the competition for your role. A company with widespread brand recognition will have a much larger field of competition for the job.
Alternatively, in software engineering, if you start a company with your non-tech-savvy friend, you can claim the CTO title with zero experience.
Brand recognition often correlates to the stage of funding the startup is in. A healthy company, who have raised series A, working towards profitability will likely hire a CTO with no less than 6 years experience in technology.
How does one start to specialize in software engineering? Do they go back to school (Engineering Interview Prep?), do they take on extra projects at work? Then, how do they go from being specialized to being an expert?
Specialization actually starts from day one of your career. If your first job is in the med-tech industry, you’ll likely learn a lot about the medical industry throughout your tenure at the company. This includes the industry size and competition, as well as standard practices and any legal requirements — in the case of the med-tech field, HIPAA requirements for example.
In your second job, you can already charge more for your expertise in med-tech when compared to someone with no prior knowledge.
Alternatively, if you decide to change focus to say autonomous vehicles, there’s still some overlap in the technological side of things, but all that knowledge of med-tech now becomes useless.
A really good strategy when it comes to specialization is to focus on technical specialization, as opposed to industry.
For example, specializing in AI systems will enable you to ask for more $$$ than your competition, while still allowing you to move between industries, since AI is applicable to a large number of industries.
So when do you use a microservice over a monolith or a monolith over a microservice?
As you can imagine, having to manage multiple microservices is more difficult than a single monolith and requires more time.
In most start-up environments time is the most scarce resource, so iterating quickly without much overhead is necessary. It is for this reason that most tech companies start with a monolith.
As the monolith grows, it will give diminishing returns in development speeds.
A point in time which many tech companies go through is when they build version 2 of their infrastructure with a more modular, microservice approach.
The trigger for this is usually when the existing infrastructure restricts the development in either a feature that is impossible to build, ie the system was just not designed to do what the company now wants to achieve with it, or when the amount of time and hence money being spent on responding to bugs in production systems, and discount client invoices because of such issues.
Hopefully though, a well trained eye can be attentive to the precursors of such abrupt triggers by monitoring a teams development speed and noticing when the returns start to diminish, and weigh it against the cost of building version 2.
When that day comes, there’s another great martin fowler book that I’d recommend for anyone watching, Refactoring: Improving the design of existing code, which goes into great length about tackle this problem.
Although, keep in mind, when building version 2 with microservices, be careful not to fall prey of what Fred Brooks described in The mythical man month as the second system syndrome, which is the tendency of small, elegant, and successful systems, to be succeeded by over-engineered, bloated systems, due to inflated expectations and overconfidence.
What are some unique things that companies are looking for when hiring for a senior technical role?
In a senior technical role, the employer is looking for an engineer who is able to take a larger range of responsibility.
Senior engineers need to be able to think about the pro’s and con’s of architectural or system design decisions — and they have to live with them!
In many tech companies the code you write as a senior engineer will be code that you are responsible for for many years to come – basically until your formal role changes.
It’s very rare that you architect and write something that you simply pass off for others to manage. Whenever the system crashes or has bugs, you will be contacted, and you’re expected to be available to fix the issue.
During the interview process, this is usually assessed by asking more design questions, and less algorithms/data structure questions.
What about when hiring for management and HR positions?
Management in tech doesn’t always have to be someone who has had direct tech experience, in fact in many bigger companies, the CTO has less technical experience than their senior employees.
Team leaders or managers need to be knowledgeable enough about technology to understand the effects of high level decisions, such as team structure (how many employees and who is working on what), the costs associated to the system design (do we host on amazon? do we need a cdn?), as well as being the “face” of the tech team to external partners/clients.
Ultimately, in software engineering, they are responsible for the technology, and the CEO will look to them to fully own the decisions made, and correct them before issues arise with clients.
Apply to App Academy: http://bit.ly/AppAcademyOnline