Tech Lead

Tech Lead

A tech lead drives projects and teams to meet their goals

Becoming a tech lead is the most common growth path for software engineers as they grow to senior and staff levels.

What resources do you recommend to learn more about engineering management and leadership especially in a startup context?

CTO at Early-stage startup profile pic
CTO at Early-stage startup

I recently became CTO of a small early-stage startup where I'm leading all technical efforts, including by still doing some coding, but am mostly managing other engineers and focusing on the broader technical needs of the company. Previously, I was a technical lead and IC at startups where I had led small teams of other software engineers on product development, but was more in the weeds technically/coding a lot and was not responsible for people management. I'd like to learn about resources I can utilize to further develop my engineering leadership and people management skills.

What resources would you recommend to learn more about the following:

  • How to build people management skills as a first time engineering people manager? Are there open source or free trainings or resources that are good for this?
  • The latest engineering leadership topics, especially in a startup environment (e.g. how other leaders are tackling common technical and leadership challenges)
  • How to meet or connect with other engineering managers/leaders (e.g. startup CTOs, VP of engineering, or technical founders) outside my company to learn from their experiences or share lessons or knowledge with each other

Interested in any types of resources including blogs, podcasts, YouTube channels, or virtual or in-person communities or meetups (particularly in NYC) etc. I have some favorite resources so far, but it would be great to learn about what resources others in the Taro community find useful. Thanks!

Show more
270 Views
3 Likes
2 Comments
2 months ago

What do mobile testing strategies look like at top tech companies?

Senior Software Engineer at Series E Startup profile pic
Senior Software Engineer at Series E Startup

I work in as an iOS engineer. My current company is a startup that's scaling up fast. In classic startup fashion, testing was historically not a top priority here. As a consequence, we struggle with lots of manual QAing and low code confidence when modifying pieces of poorly tested legacy code.

This has improved in the past year simply by unit testing every new piece of code by default and by introducing unit tests in legacy code as we touch it, boy scouting style.

At this point, I think we need to step it up and I'm looking forward to formalising a testing strategy for our mobile team.

Here are some ideas I have:

  • In the realm of unit tests:
    • I want to introduce API contract tests because our back-end API lacks documentation. In these tests we'd unit test the way we build our requests to API endpoints, and we'd have a sample JSON response from the server to test that the app can parse it into our data models as expected.
    • I want to introduce localisation tests because our app supports many languages but we are always manually testing localisation. In these tests, we'd assert that the outputs of our formatting logic are the ones we want for different locales.
  • In the realm of user interface tests:
    • I want to introduce snapshot testing, because right now the only way we can test that our views are rendered as expected for different view configurations (for example RTL vs LTR, empty content, loading content, content in verbose languages, etc.) is manually.
    • I want to introduce UI tests (sparingly, only for key flows) because we have no e2e tests. Currently, key flows are tested manually and frequently to prevent regressions, which takes lots of time.

What other testing strategies can I propose to establish some standard we can use to further improve our code confidence, reduce bugs, and rely more on automated testing?

How do the top tier tech companies approach mobile testing?

Show more
552 Views
19 Likes
Editor's Choice
4 Comments
14 days ago

How to convince my engineering org to participate in large-scale migration?

Senior Software Engineer at Series C Startup profile pic
Senior Software Engineer at Series C Startup

Context:

(1) My team owns a service for which we're rolling out a new version with a big revamp of all the public interfaces and a ton of breaking changes.

(2) This is a legacy system that is being refactored to resolve some severe issues that its consumer systems have been complaining about for a long time.

(3) This service has many consumers in our org across multiple teams that depend on it for a lot of critical functionality.

(4) We need to migrate all consumers to the new service. My team cannot parallely support both the versions and the legacy system has to be deprecated before the new service deployment.

Challenges:

(1) Originally, the plan was for my team to roll out the new service and migrate all of the consumers to the new service as well.

(2) Now, we've had a huge scope expansion in the refactoring itself due to which the project timeline has extended massively.

(3) My team feels that working on such a long timeline project is risky and prone to further scope expansion if new consumers start using the old legacy system in the meanwhile.

(4) Another challenge with this is that my team has no context or understanding of all the consumer systems.

Questions:

(1) What approach can I use to now change the plan and convince the managers/tech leads of the consumer teams to own the migration of their consumers code to the new service?

(2) In general, what approach would be ideal for such a large-scale migration - Centralized migration by the service provider team vs distributed migration by all the respective consumer teams?

Show more
141 Views
3 Likes
1 Comment
3 months ago

How to thrive in a new role that's much bigger than what I'm used to?

Senior Software Engineer [L5] at Google profile pic
Senior Software Engineer [L5] at Google

What should I think about and focus my efforts on when I get a project and a role that's of (1) bigger scope and (2) tighter deadlines than I'm used to?

Context

A reorg has suddenly thrust me into the TL role for a very high-profile project on a new team. This project is part of OKRs 4 levels up the chain and has the eyes of several director level people across different functions. From what I've heard, this project already suffered from "too many cooks in the kitchen" syndrome, and on top of that, this project has delivery date set in Q3, which is quite aggressive from our org's standards.

I've landed in this position because I was transitioning to this team prior to the reorg, AND the EM/TL/PM/2 L5s has been reorg'ed out, and they needed someone who had previously TL experience and was willing to do it.

I've previously TL'ed a team of 4 people, with important but "normal" priority projects. This is clearly a great opportunity for me, but I am afraid I'm not ready to handle it and I'm at a bit of loss as to what I should be focusing most of my effort on. With the tight deadlines I have, I feel like every day will be a battle so any advice on how to approach this will be appreciated.

I have one other L5 supporting me who I trust very much and a new EM who's rumored to be very good. We currently have 4 SWE including me and we'll be getting more at least 4 more engineers, with lots of adjacent teams helping out. I do also have good standing and connection in the org overall and I know how to get a "normal" project in our org over the line (I did an in-org transfer).

What I'm thinking about right now

  1. Knowledge Transition: since a lot of critical members of the team are leaving and I am taking over, I feel the biggest priority in the near term is to absorb as much knowledge from them as possible. So far, they have some prototypes, and I wanted to get my hands dirty, so maybe I should focus on is to understand the work that's been done really well, and the design choices that's been made already?
  2. Gather support: I feel like biggest personal risk is that I don't know how to show up in higher-stake meetings with directors. Is it any different? Where do you all see the risk is?
  3. Enable the team: I know the biggest responsibility I have, more than anything, is to make sure the team is able to work on the project and help us deliver this. Aside from the L5, I don't know a lot about the people. I feel I should putting my focus on ensuring they are as successful as possible, not focusing on my own technical knowledge as much, for us to succeed. Is that a good way to think about it?
  4. Self-management: I anticipate I'll be very stressed and pulled in many directions. I already feel this way. What are some tools I can leverage in "crunch time"?
Show more
333 Views
10 Likes
Editor's Choice
4 Comments
4 months ago

How can I safely plan a difficult project for which I have little context?

Senior Software Engineer at Series C Startup profile pic
Senior Software Engineer at Series C Startup

Context:-

  1. My team is going to work on a new project which involves upgrading a service and migrating/enabling all of the dependents to use the new service.
  2. This service provides a business critical functionality for our teams and the new version attempts to solve a lot of high impact pain points with the previous version.
  3. We have just inherited this service and none of us have worked with it or any of its dependents before. We have some support from the previous team that worked on this project but only in a consultation capacity.
  4. This is a project that has been attempted multiple times by various teams over the years - unsuccessfully or with little progress. My perception is that it's going to be a difficult project with low-moderate chances of success.
  5. There is a lot documentation but most of it is somewhat outdated. There are a lot of PRs as well but these are for the unsuccessful attempts so I'm not sure how impactful it would be to go through them.
  6. The plans for the previous attempts only had internal milestones for the team and a single big-bang completion milestone for stakeholders.

Questions:-

  1. How can I identify smaller, independent high-level milestones that are relevant for external stakeholders?
  2. How can I come up with broad estimates and capacity requirements for the external and internal milestones if I'm not clear on what these milestones would require for completion?
  3. How can I think about de-risking this attempt of the project and improving the probability of success?
Show more
219 Views
8 Likes
Editor's Choice
2 Comments
3 months ago

How to remove yourself from being a bottleneck?

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

Due to unforeseen circumstances from past 6 - 8 months, I've been the Senior most engineer in my team, (I have a total of just ~2.7 YOE). My team consists of ~12 SDE 1s (New Hires) and 2 SDE2s (The other SDE2 being promoted very recently). My manager does a great job filling the role of Senior Engineer which reduces bit of pressure off of me.

However, due to necessity in the team I've ended up being SME in all the services owned by our team. This leads to everyone reaching out to me to help them with their queries, I try to document some of these and add in the Wikis so that it can be easily accessible for others next time. However, when it comes to certain tickets and issues, I end up having to pick that task up myself (Manager does not ask me to, but at same time i know that for someone else the ramp up time required to fix the issue would be too high).

I recently tried to reduce this (2~ months ago), this led to our overall ticket health getting worse and I had to again start looking into them myself and guiding each on-call cycle with right action items for the tickets etc.

This involves me helping them to do the following :-

  • Prioritize correct tickets to look into for the on-call cycle.
  • A potential fix for the ticket so that they know where to look into.

Due to which it ends up taking 6+ hours weekly to keep this running. I don't really mind doing this; however, I don't feel like this is a scalable solution and would eventually want to slowly scale down from doing this and have my team being able to be self-sufficient.

What's the best way to go about this without affecting my team's ticket health?

Show more
2.5K Views
28 Likes
Editor's Choice
4 Comments
4 months ago

How to Balance Responsibilities: Prioritizing Personal Work vs. 'Glue Work' in a New Team Environment.

Senior Software Engineer at Ex-Apple profile pic
Senior Software Engineer at Ex-Apple

Hello everyone,

As a senior engineer L5 in my company for 1 year, I recently found myself in a new team with a new direct manager but report to the same Director in the same Org due to the recent company restructure/company reorganization as part of layoff changes. My Director and I are the direct responsible individuals for the Backend Platform System for the last 1 year. However, I am finding that a significant portion of my time is being taken up by "glue work," such as onboarding new teammates, updating the Wiki, documenting On-call Runbook, mentoring cross-functional team members, providing code reviews for new developers, and unblocking people in their code development. While these tasks seem important, they are making it difficult for me to focus on my own projects.

In my first one-on-one, my new manager expressed a desire for me to take on new initiatives. I am eager to do so, but I need to be able to focus on my own work to make this possible. My manager understood that the frequent on-call support was a blocker for me and asked me to train and onboard a new teammate to take over the on-call support, as well as field requests from users and help others with their work. However, I have still found myself doing a lot of training and providing support even two weeks since my last meeting.

I would like to hear from others who have found a way to balance these responsibilities effectively. How can I prioritize my own work while still contributing to the team's success? I know this will be a difficult decision, and I'm not sure how to approach it. I'm worried that if I stop doing some of these tasks, it may impact my relationship with my manager and team.

If anyone has faced a similar challenge, I would appreciate hearing about how you approached it. Did you stop doing certain tasks and responsibilities, and if so, how did it affect your relationship with your team? Any advice would be greatly appreciated.

Thank you.

Show more
411 Views
9 Likes
4 Comments
7 months ago

How can I help juniors?

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

I am mentoring juniors for the last few weeks. In the past, I've been mentoring people with some professional experience but this colleague doesn't have any. Now, after these few weeks I am wondering:

  1. How much time should I spend helping them? Currently, I have to spend 2-3 hours for person per day otherwise they will be blocked for days. Even though I am trying to explain that they can ask other colleagues as well, they are not asking anyone else.
  2. How can I be sure what are they suppose to know and what's not? For me, I have my own understanding of what they should know but I know for others may differ. In my country the juniors must be part of an academy before applying for a job. I know what they learn there, so I know what hthey should know and what not. Now, after these few weeks I realize they have gaps which they shouln't have. On the other hand, the academy is typically more than an year and it makes sense many things to be forgetten with the time.
  3. How can I measure properly their performance since they are just starting? What is a normal performance?
  4. How deep should I go in explanation of his questions? I believe this is where the high quality questions will help them, but I believe they have a lot of gaps to make a quality question and give the proper context.
  5. How can I help them to improve their questions instead of having to explain for hours one topic and then another, etc?
  6. When should I say I give up on him? I really want to try everything before giving up.
  7. How to stay less emotional when explaining the same things for hours to the same person?
  8. How can I help them to understand me better? Sometimes, no matter how am I explaining specific case/topic and no matter what examples, nothing helps.

I think the colleagues are really motivated and this is one of the reasons I want to help them. I want to be sure I did everything I can.

Show more
1.3K Views
20 Likes
13 Comments
7 months ago

How to turn around my trajectory on my team?

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

I joined my current company a bit more than a year ago as an L4. Within 4 months, I'd launched a high stakes project, and after some churn in the team leadership, I was put into the role of being a tech lead to my remaining team of L3s.

As a pseudo TL, I did well in the mentorship and technical guidance responsibilities, but my code output dropped drastically (due to my projects being in the design phase which were being done by my juniors with me providing high level guidance).

In the last three months, I suffered some mental health issues. My work productivity dropped significantly during that time. I've been very open with my manager about my mental state throughout this process, and they've been very supportive of the things I need to do to recover. Around this time my team also hired an L5, who is now officially the TL.

Due to my drop in performance in the latter half of the year, I'm afraid my manager won't trust me with important projects. I wonder if I need to again prove my credentials to keep me on track for L5. I feel very low about my software development abilities.

This has made me demotivated and disinterested in my work. I took a couple weeks off, yet I don't feel like going back to work. I'm not considering changing teams due to immigration issues. I also don't want to leave a team on a low.

Any tips on turning around my motivation, and trajectory on the team? What can I change in my mindset and working style to overcome my struggles?

Show more
110 Views
4 Likes
Editor's Choice
3 Comments
3 months ago

How to become a top developer in outsourcing company?

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

Even though starting to work for a big company like Meta, Amazon, Google, etc. I believe is a hard to achieve (I haven't work for) somehow it looks pretty straightforward. Learn for interview, get the job, level up. Yes, I am sure it's hard and not many will do it but still you know what should be done (yes, may don't know how). But let me tell you a different story:

I work in a not that famous country in the EU and non of the top tech companies is there. Actually 90+% of the companies are outsourcing companies. As a SE with 10 years of experience in the outsourcing world I can tell you how it works: you work on a legacy code which is so old and so bad (hundreds of people have tried write code there) you can't see good practice at all, no code reviews (sometimes there is bad it is very rare), no unit tests, performance review is only about client's feedback and so on, you got the point. It's about the money only and nobody cares if you are good or not if the client is happy. In very rare cases I have started something from scratch but all of my colleagues were so bad progmmers like myself that we messed up all. It's a deadlock. After 10 years I realized I am a bad programmer and I've seen so many bad practices that I have no passion to do anything anymore. Now to the questions:

  1. Is it possible to apply best standards in an outsourcing company like those in FAANG and if yes, how?
  2. How can I fill all the gaps I have at the moment? Can I fill all the gaps with side projects only? How can I fill them when nobody will teach me anything new. Nowone will review my code and like @Alex said, they are the main source to learn :) How would I know is the code good or not? Could it be better?

The ultimate goal of my career (and maybe in life) is to fill the gap not only in my skills but to create a company (product based or outsourcing) where everyone who join to have a chance to become a great programmer. But before helping others, I need to help myslelf. This is how I found Taro.

Show more
252 Views
3 Likes
7 Comments
8 months ago

Ok to have low code output for IC5?

Senior Software Engineer [E5] at Meta profile pic
Senior Software Engineer [E5] at Meta

This quarter, my skip requested/ gave me an opportunity to lead an org wide efficiency initiative as we are at risk of hitting quotas for some internal services (he mentioned potential IC6 scope) and it’s quite urgent to act on it. My role is to start and lead a large team of engineers on this initiative which involves tons of direction to ensure our org isn’t over quota. I would look my role as a hybrid of TL+ TPM with following responsibilities: analyzing data to find opportunities, creating roadmaps for the program, supporting engineers for execution to reduce usage, project management, understanding and enforcing processes, building knowledge on internal services, coaching engineers, setting Eng excellence culture within the org. All that to say, given limited time and a need for someone to lead, I will be focusing on direction and delegate all of the execution work to the squad.

  1. How risky is it to have low code output as an IC5? Given the year is just starting, does it make sense to explicitly discuss this with my manager and skip that my code output will be close to zero in Q1?

I did read some accounts (anon post on WP) where EM and skip aligning on low code out out but the IC5 still got MM at the end because they had only 10 diffs for a half. I don’t want to be in that position.

  1. Should I deprioritize some direction work and allocate some time for coding on my timeline through P2 projects? This will increase diff count but that just seems not a great usage of my time. TIA!
Show more
240 Views
7 Likes
2 Comments
8 months ago

What should I do in a situation where my manager is well-meaning but incompetent?

Senior Software Engineer [L5] at Google profile pic
Senior Software Engineer [L5] at Google

Apologies in advance for a long question. Not sure how to ask this question without providing deeper context.


I’ve been working with my current manager for the last 1.5 years. While they have recently helped me get promoted to Senior, it’s been a constant struggle. I dread our 1:1 almost every single week because it always run overtime and we are often still not on the same page. 

I see two major issues that haven’t notably improved in the times I’ve reported to them.

(1) My manager isn’t able to coach me, or any of the SWEs on the team. My manager doesn’t seem confident when we have career discussions - I recently asked them what they thought was the difference between good TL and a great one, and they struggled to coherently answer this. Instead, they said they would know better after the next performance calibration.  Additionally, none of my teammate has gotten proper coaching either.  For example, a teammate struggled to submit code due to their poor code quality and thus had low CL velocity, so my Manager simply told them to submit more CLs, which only made them more stressed without a legitimate way to improve. 

(2) My manager lacks technical understanding of our projects and constantly pushes for speed. My manager was externally hired, and to this day, they don’t really understand the complexity of the work our team does. I understand EMs don’t need to contribute code directly, but my manager almost always underestimate how complicated the projects our team takes on are. As engineers, we frequently have to defend our timelines, which is not only frustrating but also pressures some teammates to favor suboptimal design or hastily done CLs that just causes even more churn. 

The weird part is, my manager often seem unaware of their own actions, and when I talk to them about these issues, they are always receptive to feedback and seem willing to improve. However, I simply haven’t seen enough improvement in the last 1.5 years. 

I could leave, since this is having an impact on my emotional well-being. But I do have good standing w/ my own team and the overall org, and I want to use this situation to learn as much as I could. I know that I myself have a lot to learn as a tech lead (Thanks for , it’s really helpful), and I know I can probably get a bit ahead of our projects and start estimating/de-risking earlier, so my Manager doesn’t get overly aggressive with timelines. I know I can also take this chance to more closely mentor my teammates and help them succeed, since they aren’t really getting it from our manager. 

I want to stay, but is it the wrong decision because I have little career support from my manager? If I do stay, what should I focus on so I can really help my team and at the same time learn something valuable for my career?

Show more
1.3K Views
21 Likes
4 Comments
8 months ago

How collaborative, creative, and engineering driven do you get to be in an L5 role in FAANG+?

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

At my startup I was asked to deliver feature after feature + bug fixes by PMs as fast as possible without much time for proper refactoring work or engineering initiatives. Also it was pretty individualistic where you get assigned a task and only work with other engineers during a tech spec review meeting, code review, and syncing with a backend engineer (as an Android dev).

From Alex’s video on getting promoted to tech lead, I saw how you can 1) drive projects as an L5 engineer (vs a PM putting that together with designers) 2) Not have to know how to implement everything yourself for a project, but work with many others and facilitate the team. This sounds 100x more engineering driven and collaborative than at my start up with few developers. Is this common to many people’s experience of the norm in FAANG?

What I liked about Alex's story is also how he had the time and space to do things like document the differences between iOS and Android, as well as go all the way through to making a data analytics plan for monitoring it himself. Seems like a lot of freedom and ownership which I didn't feel I always had the time for personally. Being able to not have to spend 80% of your time coding but rather doing deep work thinking, planing, designing holistically sounds extremely satisfying and rewarding as an engineer. Maybe this also comes with experience at startups as well?

Show more
110 Views
3 Likes
2 Comments
9 months ago

How to manage politics from more senior engineering folks?

Anonymous User at Taro Community profile pic
Anonymous User at Taro Community

Hi all

I recently joined an organization as a senior where I was made tech lead within 3 months of joining. This was somewhat related to recognition of my work among product and my peers.

I advocated for good engineering practices such as automated integration testing and established projects for cross org collaborations to help deliver whats important for the organization.

All of this was quickly realized as a super critical projects by the organization. I created tech specs and prototypes for these projects.

However recently the organization hired a principal engineer.

since he was new I volunteered to help him onboard and asked for his advice on the new super business critical project that was next in our todo team pipeline. He is an ambitious guy so he wants to create his mark in the organization.

But for some reason the way he is approaching it doesn't seem right to me.

He plans to create a new team taking over the business critical project while splitting the newly formed team I lead on the same project that I helped him ramp up on.

I opposed to this asking for rationale for a new team.

there seem to be now two impressions of my work:-

  1. held by my peers, folks I lead and product manager of good business delivery and product timelines. I am respected among both.

  2. the principal Engineer tries to devalue my work in front of senior engg. Leadership saying things like I am overcommitting and under delivering if I do this project with the existing members of my team in public and in front of senior engg leadership.

The automated integration testing project which no one was doing before and we were starting from a basic version to iterate on. This is now communicated to engg management as every team is trying to do their own testing.

My engg management for some reason is siding with him since he has 15-20 years of experience and i have 5. He also is principal and i am 2-3 levels below him.

for some reason I am being micromanaged with no fault of mine.

From engg management perspective I have been just told to lead the project that I am currently leading and just help the team formed by principal engg to start the project.

I have communicated my expectations of being able to continue leading the project. Product is in support of that but engg managment isnt.

I have also tried giving feedback to the principal engineer that his actions are disruptive to the team and becauase of what he is doing he is slowing us down and blocking us from doing critical projects.

My worry is despite doing the hard work the project I have the most context on and I worked on for a while is being given to someone else and second i will not be given credit for the hard work I am doing.

Should I just change teams. I dont want to leave my existing team because I do think they need me but I feel I would rather create more impact where I dont have to swim against the tide. I may also be suffering from sunken cost fallacy here where I knew I led the development of a new critical project

Tia for your help.

Show more
206 Views
3 Likes
2 Comments
9 months ago

Mid Level to Senior Promotion - What should I keep in mind?

Senior Software Engineer at Grab profile pic
Senior Software Engineer at Grab

I am trying to get promoted to Lead Software Engineer, which relates to an E5 level at Meta, if I am not wrong. I have seen several engineers in my organisation coast at the current level I am.

I wanted to understand if there are some key things I should be doing in order to perform at a Tech Lead level, so that I am promoted to one as well. This would be a bit long question, but please bear with me.

Following are some of the things highlighted in a few discussions:

  1. Should have demonstrated complex backend system designs - How do I create this opportunity to build a complex system for myself? Often, the projects we are a part of don't require complex solutions.
  2. Have a very strong code quality
  3. Mentor other engineers - I started having 1:1s with Junior engineers on how to grow. Have not been doing this with Senior Engineers, but I try to jump in calls with them whenever they need some help. Often, the credit goes hidden, and sometimes it does bother me, but not sure if there is some way around it. What are your thoughts?
  4. Handling production outages and incidents - Trying to be on top of it. Recently, have been putting out short term fixes, but alongside working on some libraries to fix it in an extensible way and have a larger impact with other teams as well. Sometimes, having visibility for my work in other teams seems to be difficult, but trying my way around this. If there is something you can recommend, that would be great.
  5. Should I mention in my skip levels that this is something I am targeting for myself? - Right now, my focus is to try to uplift the code quality, work on larger designs (a question mentioned wrt this), trying to uplift the team (I have created a channel where I share stuff that can help the team upskill, brief nuggets of information on how to write good code etc. Doing this almost twice a week for around 2 months now), trying to mentor engineers within the team.

Another aspect is that my team would be getting changed soon due to organisational requirements. Given that, How do I make sure I am on the right trajectory to getting promoted ? (One thing on top of my mind is that I would be asking for junior engineers whom I can work with and try uplifting, alongside asking for opportunities/projects that would have large visibility and impact.)

Do you have any other advice for me?

Show more
1.3K Views
25 Likes
Editor's Choice
8 Comments
9 months ago

A tech lead is responsible for guiding multiple software engineers throughout the execution of a project. They usually have many years of software engineer experience and system design knowledge to help them navigate through complex software engineering situations. They work with multiple stakeholders to ensure that a project is delivered on time. They also set expectations for deliverables and quality of the project.