Recently, I have written a lot of technically oriented articles. If you interest, please kindly follow the link below.
Some of my friends message me that you may consider writing some no technical articles. Indeed. I do have some thoughts/experiences I want to share after four years in the leadership position.
1. Codeless, but Code efficiently.
What makes you happy? For me.
Families, Code, Learning, and Writing.
Since 15 years ago, I start my first job as webmaster in one of the startup company, and I just fall in love with coding, I want to learn the new language, I love learning how to write clean, maintainable, and scalable Code.
Every 2 ~ 3 years, I will learn a new programming language. The Idea behind is, I like to really feel/experience it, rather than just google and read their difference.
Those experiences boosted my career evaluation with a positive impact.
However, I have read some articles about engineers entre the leadership position, such as Engineering Manager, or even higher positions, the first challenge is the “Time”; because of the job’s functional changes, so you won’t have enough “time” for coding.
When I first became an Engineer Manager. I didn’t believe this, which I learned my lesson. At that time, I even wanted to get assigned the whole user story to myself.
Please don’t do that, and you will end up putting yourself and your project at risk.
I got it, and I got it, you still need to code, because of the love and passion, so when I said Code efficiently. It depends on your company structure and functional setup.
- You can be part of the key user story, but don’t code it all. It’s a good way to lead by example.
- You can code the Proof of concept (PoC) and make sure all the best practices on the place beforehand to the development team.
- You can code for testing new tools and new architecture solutions, which make sure your team and your mindset always future proof.
2. If you have 20 priorities, you DO NOT have any priorities at all.
When you are a Senior Engineer or Senior Developer, your priorities usually are based on the JIRA ticket; however, when you start moving to a Leadership position, you will start getting a lot of priorities.
It just likes the switch from the synchronized to asynchronous. As a leader, you may have more than one priority at the same time. In the programming world, depends on the CPU core, you can concurrently run the jobs. However, in the real-life, you need to prioritize your priorities.
- If you have 20 priorities, you DO NOT have priorities at all.
- Think about your vision. Think about your road map. Make sure those priorities are counts for those vision and road map.
- Focus on 1 or 2 priorities, short term, mid-term, or long-term.
3. There is NO best or perfect solution at all, and the only best solution is based on the context and business values.
No matter the size of the organization, from a small start-up, medium size, to for sure, the large corporate company, we will always face the situation about tooling, service provider, and even programming language discussion.
In general, it’s easy to judge, but hard to make the decision and alignment because of context different, requirement different, and also most importantly, the timestamp is different.
One of my previous experiences, the first day in the company, in one of the technical review meetings, the keyword around the current tech stacks: wrong architecture, the wrong decision made before, and wrong structure of the Code, etc.
I will usually not judge any current tech stacks or decisions, reason being:
It will never have the best / perfect solution; the current tech stacks, architecture, or decision, is always have its background context.
Judgment, will never help, face it, and make it better.
4. Coding / Design Principles are great helpers for management.
A Tech oriented role has a lot of differentiation between a management/leader role in responsibilities and accountabilities; however, there is also a common area.
An Engineer, Programmer, or Architect, your job is making sure the application, codebase, or solution, run in an efficient, cost-optimized, and scalable pattern to deliver the business value.
As a manager/leader, your job is making sure the team, an organization run in an efficient, cost-optimized, and scalable pattern to deliver the business value.
The fundamental end target state is the same, which means the pattern can be share.
For example, you can use the facade pattern to design your team or workflow. You can use the singleton pattern to make sure the accountabilities are with the team in place, etc.
However, in general, and the realities, you still need to learn a lot outside the tech parts, such as finance budget management, strategies, articulation, and, most importantly communication, presentation skills. Etc. Which I’m still learning every single day.
5. Compassion is the key to build a great team.
Please kindly remember that no one expects you to know everything, including yourself.
And the reality is, you can not know everything, and no one knows everything.
Everyone has a strong area and also will have a weak spot. By know, recognize this.
- Encourage the team to find the weak spot, work with them to improve it.
- Encourage the team to keep learning.
- Encourage the team to compassionately support and encourage each other.
- Leadership is on serve position, and it helps each one in the team to be a better version of themselves.
- Great leaders create leaders.
Be in a leadership position, and it’s a personal choice, it’s not an easy journey; however, it’s also a self-challenge, a learning journey.
Please keep a positive mindset, enjoy every day, enjoy every challenge you will face.
Please share your thoughts about how, why your choice this journey or what’s the most important learning from this journey so far.
Keep safe, and keep learning.