Basically, notes related to the senior software engineer position and notes about being a tech lead.
In general:
- At all levels you should know what each teammate is working on. This is useful for not duplicating work and you can possibly get more knowledge-sharing. Then, as you get more senior, you should know more of what other teams are working on too.
- At all levels, you can improve documentation.
At more senior levels:
- You need to be comfortable drawing architecture diagrams on a whiteboard for your team, and be able to walk them through it. Don't be afaid to start early, you'll get help if needed.
- What's the minimum to get a full working vertical in the product?
- Examine and define next milestone
- Add details
- Repeat from step 2
Note: There should always be a working product.
- The goal isn't to write code, the goal is to be a profitable business.
- Always be learning/growing. Take time to experiment and learn tools better.
- Don't be afraid of asking questions. You might not like it while doing it, but things will feel much better in the long run.
- Automate things (that make sense)
- There's a difference between constaints (real-world limits) and requirements (client-specified wants/needs, maybe negotiable).
- Avoid micro-managing. Define outcomes rather than specific implementations.
- For example, daily stand-ups is not an outcome. Some teams may prefer async updates, some may prefer three-times-per-week updates.