10 Tips for all Senior Software Developers by Alexander Gorshkov
1. Be a critical thinker (don't take anything on belief).
Always check your input and anticipate errors everywhere.
2. You should know the difference between a fact and an opinion.
Base your decisions on (measurable) facts, not opinions of others.
3. Know the depth of your knowledge.
- Don't be afraid to say "I don't know" (you need to know how to find out).
- Don't give rigid estimates for tasks you've never done before.
- In general, it helps to be pessimistic about your estimates.
4. Be a good tester of your solution.
- You should plan a major part of your time for design and testing (say, 60-70%).
- Test engineers should take care only of complex scenarios; trivial things should work, when a product leaves your "factory".
5. Always look for a process automatization.
Write unit tests if possible, write helper scripts/programs for routine operations you perform on regular basis (installation, update, deploy, data processing).
6. Be proactive.
Take responsibility, when using 3rd party libraries/components. As a part of development process, you should go all the way down to find their limitations and applicability in your solution. Always offer a solution to a problem you spotted (if the problem lies in your competence domain).
7. Know your operating system(s).
- Kernel Components
- Memory Management System
- File System
- Window System
- User Management System
8. Build your tool set.
Google popular tools for development in your language, find out how to install, maintain, and use them. Learn how to work with debugger, profiler, and other tools (e.g., memory leak detectors).
9. Extend your knowledge by reading books.
I'd recommend starting with "Code complete" and "Introduction to Algorithms", book some time in your schedule for reading professional literature (at least one book a year).
10. Learn to follow code style guides.
You need to know how to produce homogenous code and use tools for automatic code formatting.