Signs of a Senior Software Developer:
- Acquires a large foundation of knowledge and continues to learn.
(Spends as much as 1 hour a day learning more about code. Which is why the Senior dev gets more done. Example: “That project was going to take two weeks. But while studying a came across this open source library that already does that. I solved this problem in an hour by referencing this project and using only a few lines of code.)
- Learns what the industry best practices are for a specific project before starting to code.
(Humble, willing to learn, understands better developers exist.)
- Avoids code debt.
(Frugal with time and code. Understands that debt piles up. Coding it correctly now will, sometime in the future, make a 2-week job take 1 day. Doing it wrong now will, sometime in the future, make a 1-day job take 2 weeks.)
- Follows the keep it super simple (KISS) rule.
(Simplicity is so much more elegant than complexity.)
- Follows the 10/100 rule.
(Code blocks are short. No classes over 100 lines, no methods over 10 lines. You code will natural turn into well-designed code just by following this one principle. You will likely end up using well-known design patterns. If you recognize those design patterns, that is even another sign that you are a senior.)
- Uses interface-based design.
(IoC containers or not, the code is decoupled and uses interfaces, not concrete references that are hard to test.)
- Follows the don’t repeat yourself (DRY) principle and recognizes when they do repeat themselves.
(Writing code takes time. Why would anyone want to write the same code twice?)
- Knows what SOLID stands for AND can show an example in actual code of each principle and why it makes sense.
- Writes unit tests to test code.
(Are you still putting your tests in the Program.cs file of a Console Application? You’re not, right? Oh, you are? Seriously?)
- Doesn’t outshine coworkers, but instead, makes his coworkers shine, too.
(When a quarterback wins the Super Bowl, even if named MVP, the rest of the team wins the Super Bowl too. Similarly, when a project is a huge success, you might be the MVP, but everyone in the project participated and contributed to its success, and everyone improved their skills in the process.)
Are you a Senior Software Developer?
It baffles me that many developers don’t think that acquiring a foundation of knowledge is necessary. In 2010, I read the entire Pro C# 2010 and the .NET 4 Platform: http://www.amazon.com/2010-NET-Platform-Experts-Voice/dp/1430225491. I read it over time. One or two chapters a week and it took less than a year. I did the first 6 chapters really fast. However, I only did a handful of the coding examples. Still, I feel that it made me very knowledgeable in C#. Since then, I always read the “What is new” when a .NET version is released. I’m loving the new multiple level null check feature.
When I started working with WPF, I also watched every single WPF single video available on the now discontinued WindowsClient.net site as well as all the Videos on the Expression Blend site.
I think the key to being a Senior developer is always making the better decisions. Many developers accomplish a task and move on. Some developers design a solution and build upon it. The accomplished task usually is hard to maintain code and everyone wishes it had been done a different way or that it was part of a bigger solution. The designed solution is something that developers can work with, enhance, and improve easily.