Software Engineering Leadership — 2
Read Part 1
⚓️ Building Teams: Why does anyone want to join our team and continue with the team?
- Establish Tech Culture: Once a hiring decision is made, think of not just using their skills to get the job done, but start the observation of what new the resource can learn. As they are learning, satisfactory levels will bump up that will eventually result in attracting new people by mouth to mouth word spreading about the team and its culture. It's a cycle.
- Provide time to think: right before the blind execution - engineers will love it. 2.1) Fresh graduates — usually tend to write first and then test. This behavior comes out of their enthusiasm. 2.2) Experienced engineers — They want to think from TDD (Test Driven Development) + design first and then write the code next. Balancing between these resources and establishing collaboration mechanisms will lead to running at rocket speed and also build self-sustainable teams.
- Attitude and focus are the key ingredients to look for during the interview. The longer a leader or an engineer can maintain the focus without losing or getting bored (Self motivate) is the better. Nothing but, look for how good they are at controlling the random thoughts and keeping themselves context relative. Obviously, general tech and leadership skills come next.
- Until the resources feel to own the product, they can’t excel. Maybe historically, women tend to own at a greater level and that comes naturally. Owning a family of kids and so work at a deeper level. Whereas men will go on a take it easy policy until it is interesting to them and will go out of the box. A good balance of various natures yields better ideas and is well organized.
- Not only just focus on the work, end of the day we are all people and life who have self instincts. Look after their health, mental stress, frustration. Leaders should be thriving for their people in a way of their beloved (Family, Kids).
- Be ready to move the resources around where they best fit. How? An engineering leader is expected to collaborate with other leaders and gaining an overall understanding of opportunities and challenges is important. When we do our best for our people, they will remember us forever. That's called “impact”.
- Keep guiding people to self-motivate. It's wise to create leaders than followers in a way to carry your legacy forward through transformational leadership, by rewarding and also punishing for good.
- Finally, Trust your people and keep your mind open.
🌳 ️Making Decisions:
- Decisions are made out of the data we had in our hands. Listen and collect more data than needed. Structure and construct the data that can lead to identifying various paths to traverse.
- Experience helps to make decisions without knowing all the details. Keep an eye open to find where to spend more time while collecting the data points.
- Always maintain the audit history and skill sets of employees along with how well the resources will react without supervision when the problems arise. Rank them from skills, debugging, reactive nature, leadership, and keeping context relative themselves.
- Keep track of the external teams and their contacts. Leaders tend to forget to send the communications to the external parties and to the teams they collaborate with, which creates a great impact and brings recognition, out of the busy schedules.
- Cost vs Value vs Effort. Rank these dimensions and get an average before sorting.
- Political vs Value propositions: Always love your rivals. Such an attitude will calm your mind and put you in a better position to get the practical winning points. Like, when people are against the priorities you listed then make all participants go for voting. This technique makes everyone realize the value proposition is the priority than being political. If you lost, you may need to rethink and reanalyze your decisions before judging the priorities.
- If you know how to write an if-else condition, you know which attribute will get the priority to evaluate in your design. Similarly, when we start drawing flow charts, choosing various paths across those conditional attributes to connect the functional flow will give the priority list.
- There are always scenarios you will end up running in several tasks in parallel. Especially when working with other teams. That's the time, you first need to prioritize the rough contracts between teams and the corresponding components and services how they interact with each other. These contracts always evolve and force the teams to collaborate to go in the right direction.
⏰ Deliver Programs on tight Timelines with Limited Resources:
- Quality: Irrespective of the timelines and resource limitations, when you miss the product's usable quality, the work may end up in the trash. So, At first focus on the level of quality needed in the systems design and functional development that helps to scale in the future. But, reduce the efforts on the other areas like distributed systems support and corresponding functionality for eventual funding.
- Scope: This area is huge. Before building compare with the existing products or tools that can suffice the requirements and do the cost comparison. Find out the additional tools beyond the actual product to build like analytics, maintenance, and support, and use them!
- Cost: Note that, well know tools that might have been already well tested come with some compromise in the way of their own execution. Maintaining such tools may also demand skills and resources. Accounting such cost information will be beneficial.
- Due Diligence: Legal is what you can’t forget. Ensure when to step in. There is a huge difference in such due diligence from a start-up to an enterprise. But make sure you account for it as you travel.
Stay tuned for Part #3.