5 Things I've learned as a tech lead

Its not all about knowing the most

For those of you that don’t know about 4 years ago I learned iOS development in a 1 week crash course at my place of employment. I also took a Udemy course (by far the best one - I love you Angela Yu!) and was a baby iOS developer on a team with people who’d been doing it for years.

I knew my way around a mobile app for sure, but not a native iOS app by any means… But I didn’t let that stop me, I took the opportunity to absorb everything I could from the team.

I spoke up when things didn’t make sense to me, I asked questions, I challenged the architecture of features, and normally I was practicing at home on the weekends and in the evenings, doing algorithmic problems, and studying system design. I already understood the challenges that were coming with the features, took notes, and studied potential solutions while everyone else probably went home and didn’t think about work at all after 5pm.

I didn’t realize it at the time, but I was creating a culture on the team where it was ok to not know, to respectfully challenge the thought processes of the seniors and soon this behavior allowed me to rise to a leader like position. My Scrum Master at the time even devised a plan and began to dub me as the Technical Lead. It was crazy, I remember having meetings about it, almost as if it was a marketing or presidential campaign.

So as someone who went from baby to lead in less than 6 months, I can tell you, it’s not all about how well you can code in a specific language. There are other skills that can balance out your lack of experience in a specific stack until you level up.

Here are just 5 of many other things you need to make the move.

Find your ‘Cheer Leader’:

If you have someone of status that believes in you and your vision, they can help promote yourself more than you can alone. This asset is invaluable. They will have your back, keep you in sync things you’re unaware of and help improve your visibility within the organization because this is also beneficial for them. A Scrum Master is a perfect complimentary role for a developer to create this symbiotic relationship. A Product owner is another great person to know since they’re directly tied to the business end of the house.

Find the people who are smarter than you and support them, they’ll help you when the can as well. It’s human nature.

See the Vision:

This point involves more than just code, design patterns, and cutting edge frameworks. Here I’m referencing ‘The Vision’.

Problems are only really problems when you’re unsure of what you want the outcome to be.

While developing the iOS app for my last place of employment my vision was: “This project has to be clean, and simple”. We wanted well documented easy to maintain solutions, with performant code. That was the test of every solution.

So when it came time to make decisions, when I would hear debates back and forth and the decision would come to me, my answer would always be: “Which route is forward thinking and the most simple. It needs to be simple enough for a drunk baby to understand.”

This thought process took that application from a 2.6 to a 4.8 app within a year.

Use your personality (to grow your network):

Think about it, have you ever wanted to help someone who’s a jerk? Have you even wanted to ask the team jerk for help?

NO.

After the first time you interact with that person, you learn to avoid interacting with them as much as possible. Don’t be that person.

Being friendly, fun and empathic (but serious when it’s crunch time) allows you create a vast network within your organization. This point can’t be overlooked. No matter what your personality is, use it to grow your ‘underground network’ within your organization. It can never hurt to have people on your side that know things and can give you insight into the future.

Build your network properly and you will have eyes and ears everywhere. You will hear about things before they occur and become a trafficker of information. Be extremely valuable for everyone in your network. You don’t have to ask them to participate, it should occur organically. Develop these reciprocal relationships and this group will be your single most valuable asset during your time at any company and after you leave.

There’s no room for a hero:

This one is a universal rule in business yet people still forget it all the time. We’ll keep in scoped to dev teams for now, but every single thing you accomplish is due to the teams effort and hard work. You are a culmination of the teams efforts. Therefore, there is never a you when referencing anything about what you’ve done or what was accomplished. So the terms ‘I’, ‘me’, or ‘my’ should always be ‘we’, ‘our’ or ‘the team’.

“There is no I in Team” is such a great saying.

You and your team are one. When I came up with a great idea and brought it to the team for feedback and presented the idea to the stakeholders it was ‘We came up with…’

I would give the kudos to the team members before our entire development organization, pointing out their strong points and accomplishments and how valuable the work they were doing was.

When you’re on stage and everyone is saying how much of a super star you are as the lead, your only response should be something along the lines of “Nothing happens without this team of rock stars, they are the super stars”.

The team will shine and will respect you for giving them the spotlight, I guarantee it.

As developers we tend to be introverts, shy and work hard to get things done and don’t speak up for ourselves when the trophies get passed out. When you have a lead that says “This great feature was successful because of ” and that name is YOU, it gives you the fuel to keep going even harder.

This is especially effective when you’re in the trenches with your team figuring out issues, staying late, sacrificing your family time, bringing research they may not have thought about to them until a solution is created. Then for you to still give them all the credit is a powerful statement. Whether this behavior comes naturally to you or you have to consciously make the effort, be sure to assimilate this into your career.

Cultivate a collaborative environment

One thing that I helped implement in my last job was the ‘Dev Sync’. Its simply a meeting of the minds of the team to discuss any persistent issues, discuss architecture or feature designs, serve as a pep talk or general team time, and to raise any issues that may be plaguing a particular person.

If you’re not doing this on your team, I highly recommend it. You must require it follows a protocol that you can define. For example: Have an agenda, time boxing, action items, etc as to not waste anyone’s time.

But we were able to generate such strong ideas from that meeting, and it created such a great team culture that it spread to other teams and eventually the entire development organization.

My point is, this 1 hour a week created an engineering team that in the frame of productivity, clean, bug free code and culture surpassed all before or since. We often refer to this period as ‘The Golden Era’ (yes most of us are still in contact) because it was the best time of our careers.

Cultivating a creative, productive and effective team should be the responsibility of the Team/Tech Lead in my opinion, not the manager. Unless of course your manager codes with you and there is no tech lead.

You want to create a safe space for your engineers and you to be able to discuss whatever is on their minds without ‘management’ interference.

TL;DR

So this is what I do…

I constantly think about ways to make our jobs easier, to help our teams be more effective and have a great environment to achieve in. ALL of these topics are ways to improve your career and are transferrable to all other endeavors, including running your own software or consulting company.

If you know someone that will benefit from these sorts of discussions, send them an invite. Join a network of people working together towards a common goal.

Remember, here are the ways I can help you

  1. Being a Subscriber to my email newsletter: Once a week you’ll get a short discovery or insight to help you with your career in Software Engineering. If you’re on a Dev Team, it’ll be useful. Promise 😁 

  2. 1:1 Consulting: Have project you’re working on? Need some insight or guidance? Let’s talk about it. My Round Table and I love to throw ideas around and whittle them down to something that can be implemented quickly so that you can start your feedback loop right away!

  3. Development Coaching: I’m just a part collective that has many years of experience in Software Engineering. We can coach your development team in proficiency and collaboration.