My experience as a Project Lead

My experience as a Project Lead

·

4 min read

Being a software engineer, I always wondered how cool my life will be as a project lead. We could assign tasks to our juniors, flaunt our coding skills, and manage different dimensions of a project. I had a perception that things would get much easier at this stage. As I started working in that role, I realized that things are not as easy as they looked.

As software engineers, we are more focused on developing a certain feature and smashing the timeline. Basically, we're focused on only one thing at a time. However, once we're on the other side, things change drastically and we need to change our mindset to fit into this new role. So here I am, sharing with you my key learnings as a project lead.

Let's look at the main responsibilities of a software developer and the person who is managing the whole project.

Being software developers, our main focus is:

  • Understanding the requirements.

  • Developing features on time.

  • Following the code conventions and guidelines.

  • Standup calls with clients.

Now, let's see the tasks of a project manager.

  • Providing estimations.

  • Deciding the architecture according to client requirements.

  • Guidance to the team members

  • Code review of team members (developers)

  • Client calls

  • Setting up deployment workflow.

  • Sometimes working on a complex feature.

  • Overall management of the project and so on.

The list becomes endless and managing these sometimes become a nightmare. Luckily with time, I got better at managing these. Let's look at the above points one by one.

Providing Estimations

I believe this is the most important aspect of project management. Analyzing the requirements properly not only gives a brief roadmap of how we will proceed with the development cycle but also saves us from a lot of headaches due to time and resource constraints. What I follow here is dividing tasks into as much smaller units as possible and trying to find the solution and estimate accordingly. If we're unsure of how we'll fulfill the requirement or the solution requires more analysis, get in touch with a senior or the right person who knows the requirement or has done it before. In case we're unsure if the solution will work, adding extra time for a separate analysis or POC may help you find the correct path. Finding red flags at the start is better than waiting till the end. Demand as much time as possible to estimate better.

Code Review and guidelines

As a junior developer, I used to hate being asked by seniors again and again to follow code conventions, clean code and refactor it. As I grew up, I realized how much time and effort we've saved making correct code conventions and guidelines and making sure they're followed. Think of a situation when we don't clean our rooms, looks messy right? and difficult to find things as well. The same happens with the codebase!

Few things that helped me:

  • Adding pre-commit hooks to the codebase.

  • Timely check and refactor of the codebase.

  • Adding proper code conventions like (JS files - camelCase, scss/css files - kebab-case, etc.)

  • Adding mandatory checks for PRs approvals.

Understanding minute details

Being experienced till now in development or any other field, we have to be always one step ahead of our juniors and teammates. Sometimes they may not be able to think of all the scenarios and roadblocks of a particular feature. Our goal is to make them think of every in and out of the tasks assigned to them.

Guiding Teammates

Being a senior doesn't mean just giving the task to juniors and then it's his/her headache. Make an environment so that juniors don't hesitate to ask you questions. We can schedule separate meetings to discuss important things and guide them enough so that the path is clear for them. Regular knowledge-sharing sessions can be conducted so that we learn from each other. Also, don't forget to organize some fun sessions every week/month whenever possible. Knowing your teammates better help in better coordination between the team.

Overall management of the project

Things change when you're responsible not only for your work but for the whole team. As a project lead, we need to cater to changing requirements and timelines. If anything bad happens we're indirectly responsible. Things may not go in the way we thought they would, and sometimes being judged by clients/others for not performing well. These things are common when you reach this stage and it takes time and effort to put things in place piece by piece. The key here is not to give up easily and keep improving. Remember, With great power comes great responsibility as well.

Conclusion

I used to think managing something is very easy and anyone could do it until I did it myself. However, making small improvements made me like this part of my profession as well. Now, I got more respect for my seniors and am thankful that I got the correct guidance when I was in my learning phase. I am thankful I got this opportunity to explore something new.