Become a 10X SDE
Becoming a 10x SDE is a journey, not a destination. Keep working hard and striving for improvement, and success will follow.
- Learn the fundamentals: A strong foundation is essential for any developer looking to become a 10x engineer. Make sure you have a solid understanding of algorithms, data structures, and computer architecture.
- Keep learning: Technology is constantly evolving, so it's crucial to stay up-to-date with the latest trends and developments. Devote time each day or week to learning something new.
- Practice, practice, practice: The more you write code, the better you'll become. Look for opportunities to apply your skills and work on personal projects to hone your craft.
- Collaborate with others: Working with other developers can help you learn new techniques, gain perspective, and improve your communication and collaboration skills.
- Embrace feedback: Seek out constructive criticism from colleagues, mentors, and users. Use their feedback as an opportunity to improve your programming style and overall approach.
- Develop soft skills: Success in software development requires more than just technical expertise. Work on developing your leadership, communication, and team-building skills to become a well-rounded developer.
- Focus on efficiency: A 10x engineer is known for being able to do more work in less time. Look for ways to automate repetitive tasks, optimize code, and streamline workflows to boost productivity.
How to make IC dev hours productive?
To make our dev hours productive, it involves various factors that can contribute to reaching goals and achieving success. Here are a few things that can help:
- Plan ahead with sprint planning: Detail out tasks to avoid wasting time on unclear objectives and remain focused on your end goal.
- Clearly list minimal requirements: Ensure focus by listing out the minimum production requirements for the design task.
- Breakdown large tasks: Make daunting tasks more manageable by creating smaller subtasks.
- Avoid context switching: Switching back and forth between tasks can increase the amount of time spent. It's best to finish one task before moving to another.
- Block off dedicated times: Create protected time slots during the day to handle important tasks without being interrupted by meetings or other distractions.
- Utilize task management tools: Stay organized using apps such as Todoist, Trello, or Asana to manage and prioritize tasks.
- Take appropriate breaks: Taking regular breaks helps to keep you refreshed and more focused on tasks.
- Continuously refine: Continually improve your development cycle by using agile techniques and retrospectives.
Becoming a tech lead
“Hi Jamie, how is work?”, I was checking in with Jamie, who is being groomed into a senior engineer. In AWS, a senior engineer is automatically a tech lead.
“Work is fine. I had to spend a lot more time answering questions though. Like yesterday I spent two hours with Owen troubleshooting his test environment, we found a a subtle > bug…Owen’s project is back on track now, that is a good thing at least.”, Jamie answered.
“Cool. How about Tommy’s data streaming project?”, I asked.
“Tommy? I don’t know. He didn’t ask me anything, I am guessing he is doing ok.” Jamie is not so sure.
“Then how is your own project?”, I sensed something unsettling.
“Well, here is the thing.” Jamie sighed, “I got the code done. But I never had the time to test it. There always seemed to be another thing in front of me: someone needed my help, > an ops ticket, a question from product management …”
“I feel your frustration.” I laughed, “I’ve been there. But first let me say ‘Congratulations, you are transitioning into a tech lead - a force multiplier! You are going through > the necessary growth pain.
Being a tech lead is more than just being the best engineer in the team and help others when they have questions. There are some profound mental shift you want to be aware of:
-
Your performance is measured by your team’s performance as a whole. So you want to know what is going on in your team members’ projects: make sure they are on the right technical direction; unblock them if needed through mentoring, coaching, pair programming and troubleshooting etc. Now nobody wants micromanagement but we all need a support system - to get help and bounce ideas. You want to know the status of each project, to make a decision when you need to offer help proactively.
-
Manage your time wisely. Every moment when you decide to do X, you can’t do Y. It is an opportunity cost. Does X have more value to customers, our company and your career than Y? You need to answer the question.
-
Understand the big picture of your team’s roadmap, and make a conscious decision on your next big thing, rather than being stuck in reactive mode forever - one damn thing after another. You still need to keep building your technical knowledge foundation but as a tech lead, “what” to do, often becomes more important than “how” exactly to do.
For example, your unfinished project, do you think someone else in your team can take over? Can they benifit from it?”
“Yeah” Jamie started to get it, “I can delegate the test work to Owen once he completes his project this week. It will be a good learning for him to appreciate multi-state pipeline design. I can move on to drive our next generation X project, that is more important long term architecture change. How about that?”
“Now you are on a tech lead’s path!” I exclaimed.