IT

Beyond Technical Depth: What Else Makes a Capable Engineer?

Keep working for a better life

Posted by Bruce Lee on 2024-10-10

About Me

Welcome to my blog! This is where I collect my observations and notes on programming and technology. The main subjects range from implementation details to broader ideas about programming.

Main Topics

  • Engineering Projects: Exploring implementation details and how technical systems work.
  • C/C++: Notes on language features and programming techniques.
  • The Programmer’s Perspective: Ideas about developing a career and a way of thinking as a programmer.

For more, visit the categories page.

Contact

If you have questions or would like to discuss something, please get in touch through the About page.

Thank you for reading and for your support. I hope these notes help you on your own technical journey!


A Starting Point

This is a collection of other people’s writing that I have found useful. Rather than repeating each argument myself, I link to articles that explain principles I think every engineer should consider and put into practice.

This document will continue to evolve.

Learn How to Approach Your Own Questions

First comes a classic that everyone entering computing should read. Getting an answer to a technical question depends both on how difficult the problem is and on how you ask.

Read How To Ask Questions The Smart Way carefully, understand its reasoning, and try to follow its advice while learning.

Another useful discussion of the details of asking questions is tangx/Stop-Ask-Questions-The-Stupid-Ways, particularly its README.

Know Git and Tools Such as vcstool

As our technical abilities improve, we become able to handle larger projects. Efficient version-management tools help us keep our attention on the programming itself.

I often use vcstool, which manages multiple repositories and supports version-control systems including Git and Subversion.

Have You Refactored Code? Learn How

Not every project is worth refactoring. To be honest, I have often finished a small project and then simply set it aside.

Beginners may recognize the feeling: the program runs, its behavior is correct, and the sense of achievement makes it tempting never to revisit the messy code.

What if we applied the principles of good refactoring while writing the code in the first place? It would not eliminate every future refactoring, but it could certainly improve our coding habits.

This article describes approaches to refactoring that can also be read as advice for writing new code:

https://www.builder.io/blog/good-vs-bad-refactoring

Remember That Work Happens in Teams

Whether you start a company, join an employer, take on contract work, or lead a small university project with junior students, technical decisions are only part of the job. You also need to work with people. Some knowledge of team organization is therefore useful.

The short guide below is not meant to turn you into a management expert. Its aim is to help you coordinate work competently.

You do not have to wait until you are a senior student or a project leader to learn these skills. Understanding how teams work also clarifies your own goals and responsibilities, and helps you become someone others can work with effectively.

The guide discusses authority and responsibility, communication, coordination, negotiation, and team efficiency. It also emphasizes candor about technical problems and capability limits so that team members do not build unrealistic expectations of one another.

GitHub repository: lazyparser/minimalist-team-leader

Preparing a Technical Talk

A technical report should be direct and reasonably simple. Avoid unnecessary complexity, but do not make the presentation so abrupt that the audience cannot follow it.

This article offers a useful perspective:

https://chelseatroy.com/2022/08/03/how-i-do-and-dont-prepare-a-talk-for-a-technical-conference/

Responding to Technical Failure

Google’s writing on postmortem culture is worth studying:

https://sre.google/sre-book/postmortem-culture/

Developing Technical Taste

Technical taste may not have an immediate, obvious effect on every task. Still, learning how to develop it is valuable. The ways we discover technologies, study them, and choose how to build products deserve attention.

This article discusses those habits:

https://shankarganesh.blog/2024/08/29/growing-taste-to-build-better-products/

A Few Other Perspectives

Balancing Conviction With Willingness to Change

The phrase “strong opinions, weakly held” has been popular in technology circles. In some respects, I agree with it: state your view clearly, but revise it when circumstances and evidence change instead of defending it at any cost.

This critique may prompt further thought:

https://commoncog.com/strong-opinions-weakly-held-is-bad/

Rethinking Development Processes

I encountered agile development while studying the ysyx project, and I liked the approach. It is still useful to consider arguments that challenge it:

https://www.theregister.com/2024/06/05/agile_failure_rates/


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. All the images used in the blog are my original works or AI works, if you want to take it,don't hesitate. Thank you !