by deliriumchn on 5/22/23, 8:42 AM with 71 comments
Is there any good reads, courses, videos, lectures etc I should know of? I work in small startup for the past year so I don't have anything to take example of nor I have any opportunity to lead a team (except one guy I'm mentoring)
by akatechis on 5/22/23, 1:48 PM
For me, what has worked CONSISTENTLY are 3 things:
1. Take initiative: I can't stress this enough. If you act like a team lead, people will recognize you. And if they don't, you should consider whether this is somewhere you want to be. An organization that doesn't help build its talent, is not one where you will accomplish your personal growth objectives.
2. Speak to your Manager: Assuming you are doing #1, make sure that your manager(s) are aware of your career goals. You need to get "buyin" from others in the organization that are able to carve out this kind of role for you. They will also have good advice for you. Not every manager/team lead role is the same, so YMMV in this regard. It may be that there's a bigger need for a people manager vs a technical manager.
3. Stay at a company for 3+ years: The number might be different, but in my experience this is the point, after which you have been around enough time to have been involved in many different projects. Not only will you know a lot of the tech stack and it's limitations, you will also understand MUCH of the business itself. You'll have positioned yourself at the intersection of the business and the technology, and become an indispensable part of the organization.
One of the companies I worked at was a personal finance startup, and over the years I learned so much about saving, spending, credit, loans, income and investing IN ADDITION TO the technology we were building and everything that was powering it, that I was asked to be a part of nearly every discussion.
by intellectronica on 5/22/23, 10:45 AM
As for attitude and behaviours for making the jump, it's a combination of actively looking for opportunities (that's the easy part), and positioning yourself as someone who is an obvious choice for such a position, which is basically when you consistently have an attitude and reputation of total ownership, supporting others, never complaining or taking it easy and instead always thinking and delivering at a wider scope, being the person people come to for making a decision on what and how to do, rather than a person who is being told what and how to do.
Some people do all of that naturally. Lucky them. Others don't, and it's a journey to adjust. You don't need to be a "natural", but if you aren't you need to learn to behave like one before you can credibly go into a leadership position.
by sokoloff on 5/22/23, 9:54 AM
In terms of advice, don't overlook or look down on yourself in regards to just mentoring this one guy. It's a perfect starting point and maybe check in with the founder or your direct boss to express that you'd like to progressively get more involved here.
My (and many people's) first leadership role was a team of two, which I later grew to a third dev and we shipped an entire Playstation game after I made and overcame many mistakes as a team lead. I'm glad to have had the chance to make those mistakes in a small team; the same mistakes on a team of eight may have been impossible to recover from as my first experience.
In that type of a role, you are still hands-on coding 70+% of the time, which in many ways, I found to be an incredibly enjoyable mix, and gives you a taste of leadership to help you decide whether you want more or that or not. I enjoyed that journey and, when it comes time to retire, I'm somewhat likely to take that level of 3/4-IC and 1/4-team lead role again.
by ssss11 on 5/22/23, 10:29 AM
If you like mentoring people, sharing knowledge, delegating tasks (yes, even the tech work you love) and dealing with things blocking the team like politics with other departments then go for it.
It can be rewarding but it can also be very draining and stressful, and isn’t for everyone, and I wish someone would have prepared me better the first time.
by dangitnotagain on 5/22/23, 8:58 AM
From the way you describe your experiences, it sounds like you’re a young adventurer on the journey.
These things come in their own due time, and if they are appropriate, they will mature and flourish from within you.
You will be chosen when there is a need, and you are able.
In the meantime a few thoughts to prepare yourself.
- be superbly well organized. Take written notes. Compose your thoughts carefully (self edit.) provide written accounts to your overhead as well as peers/delegates.
- know your stuff. Go the distance to prepare and know that the best answer is never the most exciting, it is the most EFFECTIVE.
- A leadership position is not one of vanity or even “self development”, it is one for getting the job done in the most stable, reliable, measured, and complete way for those who pay you to solve their problems.
I would choose someone boring and methodical to lead over a hotshot any day.
by gwbas1c on 5/22/23, 1:42 PM
Even though the book is old, the concepts in it haven't changed: Developers need to work with minimal interruption, management needs to serve development.
Here's the thing: "Team lead" and "manager" are very, very different roles. "Team lead" is very hands on, because you need to be able to jump into the code base to help team members understand the bits; and you need to be able to speak to management with detailed technical knowledge.
(As you can probably infer, I've been a team lead and really, really enjoyed it.)
In my case, "team lead" was about a 50/50 split between hands-on coding and leadership. At times, it was basically me doing the hardest parts of development with assistants who I would directly assign tasks. Other times, I worked with other developers and directly mentored them in tasks because I had the most experience in the code they were working with. Other times, I was merely a peer making sure that process was followed.
At one point I had to "manage up" and explain what the boundaries are between QA and development. This was mostly to avoid situations where other developers were spending a week scratching their heads trying to reproduce a bug. It turned my reputation from being "difficult" to being a leader overnight; because (surprise surprise) sometimes you need to tell QA that their responsibility is to clearly communicate bugs.
As far as management, part of it is making sure there is just enough process that people can hand off work from one person to the next. The processes need to be flexible so they don't get in the way, and they don't exist for the sake of existing. It comes down to things like making sure bugs are documented so that someone doesn't spend a week trying to figure out how to reproduce it; and that the actual steps to reproduce aren't buried in a chain of 100 comments in a ticket. (But that's just part.)
The other part of management, and any leadership role, is realizing that you're not a boss. You merely have a more powerful role in a team, and you need to use your power wisely. Everyone should feel like they are doing what they believe is right.
by genericlogic on 5/22/23, 10:08 AM
To get into management, you generally need experience in management. I know that sounds silly but it's true. If I'm interviewing for a management position and I have two candidates, one who has experience and one who doesn't, I'll take the person with experience.
So your question becomes how do I get the experience. I would start with finding a work place that values the concept of promoting from within.
From there you need to advertise your intentions of wanting to move into a leadership role, without being annoying. You need to socialize and relationship build. Gently broadcast your intentions.
You need to be able to tell people why you want this role. It needs to be clear reason. This is more or less your sales pitch.
If you do these things listen to people's feedback. It should be enthusiastic and positive. If it's not it means that people don't see your potential yet. Figure out why.
This is your feedback loop. Take training, work on your presentation skills. Find another mentor. Keep building your network. Ask your manager if you can take over a meeting or take over a small responsibility for them. Gently reshape your role into a lead role. Do this until you get some positive feedback.
From there start to interview. Your first couple of interviews are likely going to be terrible. Don't lose heart. Ideally these are internal interviews. If you don't get the job reach out to the hiring manager to get open and honest feedback.
Keep interviewing and keep working on all of the above. With a little luck one of your connections will pay off and someone will take a chance.
by a13o on 5/22/23, 11:50 AM
From that point forward, as you progress thru your company's advanced IC track, the ranks parallel eng management ranks; and soft skills will take up more and more of your time. Eventually you're responsible for mentoring and steering an entire frontend team and you will not even get half your time to do heads down IC stuff. The rest of your time will be spent mentoring via pairing or reviews, jockeying for resources for your initiatives, interviewing, and spiking big unknown tasks. Not to implement them mind you, just to size them for someone else to implement.
The way forward then, is to practice all those not-programming things that are programming adjacent.
by devjab on 5/22/23, 12:04 PM
I was, and am, a good leader in terms of decision making, being assertive and having a general focus on the well being of the people around me. A lot of the MBA and management literature is focused on this, as well as how you communicate. It was nice to pick up some extra tools in those areas, but I wouldn’t say that it would have been necessary for me to do throes courses. What I am not a natural at is planning. It was during my stint in management I was diagnosed with ADHD, so that sort of stood in the way (and still does), and I had to spend a lot of time on “resource management”. This is where you have delivery targets and employees (resources) that you need to juggle to meet your targets, and it’s going to be a constant chaos. I wasn’t apt at this, I likely never will be, and as a result I got an immense amount of value out of the MBA courses targeting this area. Then there was the part I hadn’t really known about before, the budgeting and value realisation. I mean, I obviously knew what budgeting is, and how it’s nice to deliver value, but I never knew just how much finance and “bookkeeping” you’re going to do as a manager. Again, the MBA courses dealing with learning how we are all cogs in the machine were irreplaceable for me in teaching me how much of a different mindset you’re going to need as a manager compared to being an employee.
What ultimately led me to abandon management was that I didn’t actually like to manage people. I like people, I like working with people, but I don’t like managing people. I think you need to ask yourself if you would want to become a manager at Walmart, or a nursery home or something completely not-related to SWE and if the answer is no, then I think you really need to consider what exactly you want. Because management is a discipline in its own right, and it’s almost nothing like mentoring or being a technical lead.
If it’s really what you want, then get into networks with other managers. Look up where you can find MBA courses, edx.org has some cool intro CS courses, maybe they have something similar for MBAs to help you sip your toes in it.
by idlewords on 5/22/23, 1:43 PM
by pfannkuchen on 5/22/23, 3:49 PM
by cauliflower99 on 5/22/23, 10:01 AM
- Express to your manager your interest in stepping into a leadership role over the next 6-12 months.
- Write down a list of responsibilities / behaviours a good leader has in your company. Take on one of these responsibilities one at a time to show that you both interested and serious about a leadership role. Advertise to your manager how you are progressing with these extra responsibilities each month via email so they had a written record.
A leadership role has much higher responsibilities and so your manager (if they are a good manager) will not promote you into the role without knowing you can do the job first. Leaders lead by action, not be theory. I know some great leaders who have a very poor theoretical understanding. And I know some horrible leaders who know the theory inside out.
Focus on action.
by snowman647 on 5/22/23, 10:36 AM
I'm working as a manager and transitioned to this role for the same reason you mentioned. However, I had been talking to my LM for some time, and he found an opportunity for me.
Simplest way for you to get one more mentee and form a team of 3. The next step is to add one more person to the team. Once your current team lead receives a promotion, you will be next in line for their role. That's the path I'd follow.
by walljm on 5/22/23, 2:06 PM
* Listen to the people who report to you. They aren't always right, but they often are, and if they are pushing back then there is a good chance that they might be seeing something you don't.
* Much of leadership is about communication. And much of communication is about planning. And much of planning is about knowing and understanding all the components of the problem you're trying to solve. So cultivate a deep understanding of your people, their talents, your business, your boss, and spend time thinking about how to best optimize all those things.
* Its hard to lead in an area where you don't some expertise. You don't have to be the best, but you shouldn't be a slouch in the subject matter either. In order to earn respect you'll need to be able to understand what you're being told by your team, and you'll need to be able to articulate why you are making certain decisions, and that is seriously difficult if you don't have a good understanding of the domain.
* Good task management and organization is remarkably similar to good distributed systems architecture. Teams should be organized so that communication and integration dependencies are minimized, because communication overhead grows logarithmically as the number of people who need to be informed increases.
not nearly a complete list... but a start maybe. good luck! good leaders/managers are a scarce resource.
by barelysapient on 5/22/23, 4:38 PM
1) Engage with your manager. Explain your interest in the position you want and ask for their support. If you can't get their support; learn why and either outgrow it or find another manager that will support you. (Not all managers want to develop their team)
2) Ask about and seek to understand the challenges your manager is working against.
3) Internalize those challenges, the broader company goals and create your own personal plan to help achieve those things.
4) Do that plan; gain the support of your team members through influence. Recognize and celebrate their support.
4a) Become comfortable using influence and vision to influence others. Even as a manager, senior manager, or director, you rarely have the pure authority to achieve what you want. Even if you do, the team will chafe under that style. Success is influence; inspiring others to jump in and pull with you.
5) Measure your progress and get feedback. Even unfair or invalid feedback is valuable because its a perception that you can manage against and overcome.
6) Celebrate success. Evangelize and learn from your failures.
7) Ask for the job.
by siliconc0w on 5/22/23, 4:13 PM
What I didn't really realize is that 9/10 if you ask people for their help, they'll usually give it. So if you just ask, "hey can I goto the leadership summit?" They'll say no. But if you ask, "Hey I'm trying to understand what a management direction for my role might like and I think I would learn a lot from the discussions at the leadership summit, do you think I could tag along - maybe virtually- for a day or two?" - They'll probably say yes and throw out an invite. Now you're in the room and can build relationships with the leaders that decide the next manager. (or wisely learn attending these types of meetings isn't what you want to be doing)
by maedins on 5/22/23, 3:48 PM
Goodreads link: https://www.goodreads.com/book/show/63079576-the-staff-engin...
by aenis on 5/22/23, 12:47 PM
I did this when I was 4 years into my engineering career. After 20 years I ended up a CTO at a large (~40bn) company. There are good things about it, but I am still the happiest when I have time to code and build stuff. Managing others is nearly entirely about emotional intelligence, empathy, and it's better to be an extrovert as your days will mostly be all meetings. Money is fine, but I am not sure I'd do it again if I were to start from scratch. With all the hindsight I think I'd advise myself to join a startup instead.
In any case, don't neglect the company culture. If you want to learn management, don't do it in places with zero strategy and short term focus - you will only learn to never attempt it again, most likely.
by magusd on 5/27/23, 12:55 PM
There's no structure, there are no guidelines and that's because it's mostly dealing with people and people are almost always completely different from each other.
If you want to learn how to be a good/better management, focus on being a better person and helping the people around you get better.
by maliker on 5/22/23, 11:01 AM
There’s a lot of day-to-day stuff that I had read about but only really understood when I did it: how to agree as a team on a technical roadmap, how to give feedback, and how to hire. Probably the most difficult thing which took years was learning how to control my emotions; when you’re a manager and things are breaking, you can’t just jump in and debug, you’ve gotta figure out how to help the team perform at their best. Sometimes this is getting people the right tools, other times it’s giving them time to work things out, in extreme cases it’s changing the team members. I found making these decisions stressful until I had a lot of practice.
by dyeje on 5/22/23, 2:26 PM
Just make sure you’re very explicit about this goal when interviewing / in your 1:1s. The reality is that the ratio of eng to manager means there are just less positions available. So you want to make sure you’re not wasting your time interviewing / working somewhere that just isn’t going to have the opportunity for you.
by osigurdson on 5/22/23, 4:56 PM
I think we should go back to coupling technical leadership, product management, project management and dev manager functions. This is exactly what you would see in a cash strapped startup and it seems to scale to ~50 people. This of course requires very strong leaders who would have full responsibility for the bottom line but I think it could be much more efficient that today’s ensemble of overlapping hierarchies.
by dpflan on 5/22/23, 10:41 AM
Do/have you lead a tech team already (officially or not) at least as technical leader? Do/have you lead large architectural projects with many devs?
by CedricTeyton on 5/22/23, 10:29 AM
1 - https://review.firstround.com/collections/advice-for-making-... 2 - https://adplist.org/
by atomicnature on 5/24/23, 10:01 AM
So, it is best to setup a vision, start taking on extra work, and aim for larger targets. In the process, you'll get more done, and you'll need people to help you with getting even more done.
by Clubber on 5/22/23, 12:09 PM
When did this become a thing? Throughout my career, backend tended to pay more.
by TheChaplain on 5/22/23, 3:55 PM
You need the full and unyielding support from _your_ supervisor.
My partner had the most unfortunate luck, the company joined recently had a reorganization and the team consisted of... well, let's say "less motivated" characters that were not picked by other managers during reorg.
Without a good supervisor, they would have left long ago.
by koliber on 5/22/23, 7:00 PM
There are two books I highly recommend to anyone considering this move. The Manager’s Path is one. The Making of a Manager is the other.
If you have any concrete questions, I’d be happy to answer them. Contact info is in the profile.
by chad_strategic on 5/22/23, 6:47 PM
I have 11 years of code experience, but I have little to no desire to be a senior developer. The crazy thing is I have 20 years and combat experience in leadership. So being on a software management team would easily be a walk in the park.
I have had a few interviews, with a re-polished resume.
by dboreham on 5/22/23, 1:55 PM
by ayewo on 5/22/23, 3:44 PM
by itake on 5/22/23, 4:18 PM
1/ Find a company with EMs are also expected code. These companies have more EM's, smaller teams, and thus more opportunities for the EM title and less "competition".
2/ Find a company with high churn due to worklife balance and grind it for at least 2 years, but preferably 4.
by awwx on 5/22/23, 9:41 AM
by hk1337 on 5/22/23, 10:11 AM
by heybecker on 5/22/23, 11:25 PM
by Anders_A on 5/22/23, 11:03 AM
by stcroixx on 5/22/23, 4:04 PM
by dherikb on 5/22/23, 11:43 AM
by xyzzy4747 on 5/22/23, 12:53 PM
by jasmer on 5/22/23, 10:27 AM
Always easier within the org though, your placement will depend on the opinion of one or two people ultimately.
It's much more difficult to change jobs as 'software manager' they tend not to hire like that, it's odd and good managers are not valued enough.
In many orgs they skip manager and just go to directors.