- Masters their primary programming language and support library. If you’re a .NET developer around here that means C# and the .NET Framework. This one is fairly obvious, right? These tools are your bread and butter.
- Masters their development tools especially the debugging tools. You spend a lot of time here and whatever you discover that can make you faster is likely to have a big impact on your productivity. Being effective at debugging can save you days on a single nasty bug.
- Writes unit tests for as much of their code as possible. This is the best way
to avoid embarrassing yourself with buggy code and to avoid regressions.
- Uses Internet search. This should be one of the first steps you take when tracking down a problem. Odds are somebody else has hit the same problem and posted something on the Internet about it. Also uses search to avoid NIH (not invented here). A great software developer would not re-invent software if it already existed and were freely available. If the software is expensive then they would do a make vs buy evaluation.
- Automates tedious and error prone manual processes whenever possible especially in the build and test processes.
- Knows some flavor of regular expressions. Regex use comes up over and over again in software development, automation and computer administration.
- Masters a command line interface (preferrably Windows PowerShell if you’re a .NET Developer). Automation for one-off jobs is usually best accomplished via a shell especially when it comes to file system (source tree) maintenance.
- Masters software diagnostics tools. Download and use the Windows Sysinternals tool suite – these are great diagnostic tools and they are free. Also check out Wireshark or Microsoft’s NetMon packet sniffer.
- Manages distractions – turn off toast and exit Outlook when you need to
get into "the zone" and stay there to finish a complex coding or debugging
task. If you can manage an office with a door you are that much more ahead of the game. Where I work, the best we can do is work from home to avoid distractions – unless it is summer and you have little kids :-).
- Continuing Education: reads a book every month or so to stay up on the
latest techniques and/or technologies. Reads blogs and/or listens to podcasts – there’s a wealth of shared experience out there that you can learn from.
This is just my opinion. I’m curious about what others think. What would be in your top ten list?