Friday, July 5, 2024

20 Things in my 20 Years

Justin Etheredge wrote a great article in 2021 on 20 things he learned as a Software Engineer. I can relate and still find a lot of these relevant today. Hoping it can be of use to you. You can read the full article here

1.  I still don’t know very much.   

   Lifelong learning is essential in software as there are always new areas to explore, reducing imposter syndrome by embracing the learning process.


2.  The hardest part of software is building the right thing.   

   Designing software requires understanding complex and often irrational environments to meet user needs effectively.


3.  The best software engineers think like designers.   

   Great engineers focus on user experience and usability in all interfaces they create.


4.  The best code is no code, or code you don’t have to maintain.   

   Prioritize solutions that minimize new code or leverage existing, maintainable code to avoid unnecessary complexity.


5.  Software is a means to an end.   

   Delivering value should be the primary focus, not just creating software for its own sake.


6.  Sometimes you have to stop sharpening the saw, and just start cutting shit.   

   Avoid analysis paralysis by setting deadlines and starting to implement solutions to learn and iterate quickly.


7.  If you don’t have a good grasp of the universe of what’s possible, you can’t design a good system.   

   Staying updated with the latest developments in the field is crucial for designing effective systems.


8.  Every system eventually sucks, get over it.   

   Continuous improvement and creating a livable system are more important than achieving perfection.


9.  Nobody asks “why” enough.   

   Questioning assumptions and understanding the underlying goals is critical for effective problem-solving.


10.  We should be far more focused on avoiding 0.1x programmers than finding 10x programmers.   

    Preventing underperforming team members is more crucial than seeking mythical super-performers.


11.  One of the biggest differences between a senior engineer and a junior engineer is that they’ve formed opinions about the way things should be.   

    Senior engineers have strong, informed opinions on tools and methodologies, driving better decision-making.


12.  People don’t really want innovation.   

    True innovation often faces resistance, as people prefer familiar, incremental improvements.


13.  Your data is the most important part of your system.   

    Ensuring data integrity is crucial as it will likely outlast the codebase.


14.  Look for technological sharks.   

    Established technologies that have stood the test of time are reliable and efficient choices.


15.  Don’t mistake humility for ignorance.   

    Quiet team members can offer valuable insights and should be actively engaged for feedback.


16.  Software engineers should write regularly.   

    Regular writing improves communication skills and helps in better problem articulation and solution documentation.


17.  Keep your processes as lean as possible.   

    Avoid overcomplicating processes; focus on building, learning, and iterating in small chunks.


18.  Software engineers, like all humans, need to feel ownership.   

    Ownership over the entire process from design to delivery increases engagement and quality of work.


19.  Interviews are almost worthless for telling how good of a team member someone will be.   

    Focus interviews on understanding the candidate’s interest and fit rather than trying to predict their team performance.


20.  Always strive to build a smaller system.   

    Building minimal viable systems allows for better learning and iteration, leading to more effective solutions.

Monday, July 1, 2024

Art of Delegating

 

Delegating is a powerful tool for team development. It took me a while to accept that sometimes, "done" is better than "perfect."

Early in my career, I found it challenging to delegate tasks since I knew the systems like the back of my hand. Since then, I have adapted to be more efficient and to trust my team.

I have used delegation frameworks similar to this one (https://blog.hptbydts.com/the-delegation-diamond) to categorize tasks and identify which ones to delegate. Giving team members stretch opportunities helps them perform at a higher level and fosters growth. #Leadership #ManagementTips