You should be picky in selecting the next team that you work with. You spend more time at work than with your family so it better be darn good.
I’ve seen my fair share of BS over the past two decades and have a decent sense of what works.
I have been a Software Engineering Manager for the past 8 years. I was a Software Engineer for over a decade before that. I worked with Fortune 100 companies and interned at small startups. I’ve been through 3 mergers & acquisitions and did 4 office relocations with one company. I’ve managed diverse teams across Chicago, Atlanta, California, Beijing, and Bangalore. Sometimes all at the same time. These are my thoughts on what works.
1. Work-Life Balance
Every company preaches this but very few practice this. It does not count if you leave work at 5 pm but still keep thinking about work. Some of the things to look for are:
- Do you need to be in a constant production-support rotation?
- Does it get hectic towards the end of the sprint where everyone is trying to make their quota of points? Sheesh — this is not a sweatshop and they should not pay you for the number of widgets you crank out.
- Do you get to take a decent vacation? How about within 3 months after joining? How about 3 weeks at a stretch? How about all the above?
I’ve known companies who do not allow the internet at work. If a pipe broke, you take personal time off. Stop letting this kind of crap continue in our industry. Many companies may not be ready for full remote work or even scheduled work-from-home days. And that’s okay. But they should not frigging ask you to burn your vacation days every time you need to leave early to pick a sick kid. Or have a 1-hour dentist appointment. Or when you need to stay home for a contractor. Or if life happens. Occasional work from home should be an option. They should also not be in the business of monitoring exact punch-out times. Some days we work longer and some days shorter — deal with it.
2. A No-BS Manager
No matter how hard you work, if you are not appreciated, it feels like you are a robot doing it for the money. A manager needs to give a shit about what you are doing and help you to get to the next stage in your career. If your 1:1’s include how many points you worked on in the last sprint, you are a statistic for them. If they are holding your pay-raise a hostage due to your visa situation, shame on them. Do some reference checks on at your end.
Ask each engineer taking your interview what kind of a manager leads the team. Learn to read between the lines and listen for red flags such as:
- occasional nights and weekends
- challenging environment
- only hectic during the end of the sprint etc.
Although they sound harmless, they will all become worse. You should only be hearing:
- good work-life balance
- NO nights and weekends
- interesting work, new technologies
- reasonable deadlines, it’s okay if a story rolls over to next sprint
- cool/reasonable manager etc.
Ask if they do a daily “manager walk”, especially at 9 am and 5 pm. Ask if they micromanage. Some days we are in the zone and some days we zone out — deal with it.
3. Kick-ass Work
This is key. At the end of the day, your work should matter to somebody. You should be making someone’s life better. You may not be saving the world but your work should frigging matter.
When you know it matters, you should use the best technology that enables it. It could be the latest buzzword or it could be a boring stack. What matters is the work should excite you. We all need more excitement in life than Netflix.
Go change someone’s world. Go be someone’s hero. Go make someone’s day.
Ask for the vision of the company. What is the vision of the division? How about the manager’s vision and the team’s vision? Try to see beyond their next story. What are they working towards? The answer will tell you if this is the team for you.
4. Supportive Team Structure
Every team needs a good ratio of lead, senior and software engineers. If a lead engineer is working with 8 junior/mid-level engineers, it’s going to burn everyone out. Or worse, you are on your own. A better structure is to have 1 lead engineer with 4 senior and 4 mid-level engineers on a team. So each of the Senior Software Engineers can mentor each of the Software Engineers. This way the lead engineer can focus on larger architecture level tasks.
See if the team has the autonomy to pick their next team member. Does the manager have a policy to not hire jerks — no matter how brilliant? I don’t need a consensus across all my lead engineers to extend an offer to the next employee or consultant. So long as at least one team is willing to take someone under their wing, that’s all you need.
5. Education and Training
Yeah, yeah. But when was the last time the team did ANY training? When did they buy their last book? What was the last online course that they took? Did they do any of this during work hours or nights and weekends? Did they end up using that training/book/course in their work?
I am buying an average of one Udemy course a week for my team members. Yeah, I know it’s cheap but at least I am not asking them to go to YouTube. I prefer books so I buy those for myself. Our entire Chicago location went to the AWS conference — on the company’s dime and time. That’s two floors worth of people including all contractors.
6. Decent Commute and Compensation
I am not saying a better commute nor compensation. I’ve had people accept a longer commute. Rarely, people even take a pay-cut to avoid a stressful environment. Most have made lateral jumps — both role and compensation-wise. A company should meet the candidate’s expectations for the value they bring. There is a shortage of talent and the company should know that and be competitive with their offer.
Ask HR if the company has been consistent with raises and bonuses over the past 3 years. Ask how the bonuses have been during the recession. It’s a red flag if the HR says that its “confidential information”. Don’t buy into that BS. If they don’t know something relevant, request them to find that information. Don’t be shy to negotiate and talk money. We all need to pay our bills and retire while some of us need to send our kids or grand-kids to college.
7. Greenfield Project
In many disciplines, a greenfield project is one that lacks constraints imposed by prior work. The analogy is to that of construction on greenfield land where there is no need to work within the constraints of existing buildings or infrastructure. — Wikipedia
Lucky number 7. If you get this, you’ve hit gold. We all know that there are a lot of banks, finance, insurance, eCommerce and even tech companies dealing with legacy code-bases and technologies. Many of these industries have initiatives to break free of them. Find out if this team is in one of those initiatives.
I don’t know if you will do good on one of these teams — but if you do, I can guarantee you that the world will be your oyster. This is as close to a startup as you can get while being at a big corporation.
Conclusion
Thank you for investing a few minutes of your life reading this. I appreciate even more if you found this worthy enough to leave a comment, a like or a share. Please let me know if I missed anything on my list and I will write another blog post with your suggestions. If you are looking to join any of our teams, please drop us a line via our career page. If you are not local to Chicago, I will fly you in and provide lodging. If you are on a visa, I am okay with that. If consulting is your thing, drop me a line and I will work directly with you.
November 2019