As a junior programmer who’s desperately trying to grow, I try a lot of things. Things like learning new frameworks, programming paradigms, languages, project management and so on. One thing I tried to do is to lead. I worked with a few teams already from my company, and the level of skill that the tech leads provide to the teams are something I have always envied.
How Exactly Should One Start?
There’s no one for me to lead. I’m a junior at a software contracting company. There’s limited decision making on our part, even fewer if you are a junior. I’ll just learn to lead on my own then, I thought. My plan was very clear. I wanted to try to build a semi large scale business software. With the help of my programmer friends, I thought we could all learn from this experience and all grow together. It made sense to me. I thought everyone want to grow, so it must mean they will all follow along with the plan.
It started great. We would have meetings every week. We talked about how the software would work, what the erquirements are, what framework/language should we use. However, soon I realized one thing that people all have their own schedules. When it comes to their personal life, little piority will be given to a side project that is not theirs. That’s when it hit me.
It’s the one thing that most adults navigate their life around. It doesn’t have to be money. In fact, most times it has nothing to do with money. Stake can be a lot of things like priority, experience, time, enjoyment, career direction, timing and so on. If there isn’t enough stake for one to care, commitment often mean nothing. This isn’t a bad thing though. I realized this and moved on, but what’s important is the lesson for anyone who’s trying to lead. People will not rally behind you because you give a good motivational speech. They do so because your motivational speech mentioned their stake. Theon Greyjoy tried his best persuading the iron borns to fight for him to keep winterfell, but they hit him in the head and left because all they wanted to do was to go home.
Why do tech leads in a company can lead people however they want and people still follow them? Simple, the stake is people’s job, which is linked to the company’s stake, revenue. In conclusion, trying to learn to lead in a personal project is a lot harder, and the exiernence gained is probably irrelavant to real world situation. Their might be exceptions if they group is collectively more committed, but this experiment ended as the project now shifted to OSS.
Aside from the failed experiment, I did learn a few more things. One of them is to have good documentations for the project. When I started the project, I acted as the PM and the tech lead. I came up with the business idea, the feature requirements, tech stack and the initial implementation. I explained everything during the meetings, so I thought the occational lack of meeting notes or proper documentation is not a big deal. I was wrong, clearly. It turns out, documentation is rather important, and that’s exactly why people spend days to create air tight instructions on how to get started, how to implement certain type of feature, how to test or run. I know all that because I came up with it, but people who didn’t need a reference sheet to even get started. As a result, I spent hours and hours teaching different people on how to do basic things. This gets even worse when new people join the project. They don’t know what you talked about during all the past meetings. They can only rely on the documentations.
This is another thing I learned from this experience, and even more of it comes from when I attempted to lead again in my hackathon team. We have all done it some point in our programming life. You want to build something, some feature or some UI. You think it’s like a common thing that just does not need too much explanation. For example, if you are building a social network app, naturally you will think of Facebook, Instagram, Twitter when you explain the feature concept to people. You would think that people must all have the same life experience as you and are all into the same thing as you are. You use all those social network apps, so you think they all use them too. You think when you mention that “we should do double tap to like” feature you want in you app, people would immediately think of Instagram and understand what you want. Well, this is clearly not the case. Take the time to explain to people what exactly it is the feature you want because as a PM/tech lead, you need to make up the user story. People will not magically understand things in your head without you saying them out loud. I remember during one of my meeting, I mentioned that we need to implement accessibility features in our app. What’s in my mind is that our app will be usable to people with any physical conditions, so it means things like alt-text for images, title for div’s, making sure it works with screen reading software and/or high contrast mode. I thought everyone knows this, but it was a wild assumption. I know it because I follow Microsoft news closely, and accessibility is the bottom line of all of their products. I know this also because I had to implement it once in my past work. My wild assumption made me think that people all know that accessibility is about, but it turns out people think it means to make the frontend able to access the backend through RESTful API call. I only found out about this 3 meetings later.
So explain yourself because no one understand you, or at least you should assume so.
These are all I have learned non-tech wise. Although the experiment failed, the project is still on. I added an open source license to it and maintaining it as a OSS. Some people from my past team is still interested and all of them are still in the contributor list. I plan to walk the OSS path alone because I realize that I cannot force my vision to people without giving them back something. If you are interested in the project, the link is here and any contribution is welcomed.
Like my content?
Buy me a coffee if you like my content!