Being a Lead Software Engineer was a big career goal of mine. It was much more to me than just another career advancement.
It marked a chance to help teach, learn, and build some of the best software my teams could create.
I wanted to share some things I learned to help others along similar journeys.
Leadership is Hard
Let me preface this by saying managing people is hard, and software engineering adds a whole host of new challenges to leadership. These tips may not relate to your current team, and that’s okay. Some of the best resources I found for leadership had little to do with software, but the theme carried over just the same:
‘get the job done while keeping everyone encouraged to be part of the team.’
Getting off on the Right Foot
First impressions are crucial in Team Leadership. From communication skills to setting team goals: the first meeting as a team lead will set the stage for how others will view you in a position of leadership. Plan for this step ahead of time and include:
- Team Goals
- Definition of Done
- Define Meetings
- Setup Documentation
Let’s dive into these a bit more.
Team Goals - A Moving Target
Creating and communicating project goals with your new team is crucial to maintaining a sense of purpose in your project. This helps your team members to know what they are working on. It also gives them an opportunity to speak up when the team is veering from its original purpose.
‘Maintain and curate these goals frequently and stick to them!’
These goals help steer your team goals and their individual career goals. Without them, its no different from a ship with no destination, and a crew questioning mutiny : Where is this project headed if our team goal is two years old? Heck, where’s my career headed?
Show them the Definition of Done
As much as vocalizing team goals is important, creating a good ‘definition of done’ is crucially important.
Show them through your own example what your definition of ‘done’ is. Create a sample
project with commits detailing all the things you expect out of the code base. Include things like:
- Code formatting and ordering. Tools like CheckStyle and Intellij offer exportable configurations to share these standards team wide.
- Unit Test Coverage Expectations. Jacoco is an excellent tool to measure basic coverage. More advanced tools like PITest can really take this to another level.
- Integration Testing - Karate is a good option for most REST API’s.
Don’t forget to revisit this every few months or as you roll on or off new team members.
Meetings and Respecting Time
Define your meeting and timeslots and stick to them! Try not to overburden your team with too many or too long of meetings.
These simple gestures show respect for your teams time and will give you a reason to stay focused during crucial timeslots.
Document Everything
There’s often an expectation to see things develop and grow in new interesting ways under new leadership. And your teammates will expect this change too. The best way to show this new growth is by documenting everything along the way. Changes to the goals and definitions, general meeting highlights and outcomes, or just things your team likes to do on their off time. Maintain a Team Blog page everyone’s proud of.
Listen to Your Teams Needs
Being an effective team lead is difficult and a lot of work. Hopefully this helps a few folks make more effective teams and sow seeds that create a better working environment for everyone!