Blog of Rob Galanakis (@robgalanakis)

Augmented Coding

First, a shout-out for the inspiration for this post: Patrick Smacchia and the NDepend developers have given me my first free software license as a result of this blog. NDepend is a pretty awesome static code analysis tool. You can find more info here: http://www.ndepend.com/Features.aspx

NDepend, or any static code analysis tool, is one of many tools in a toolbox that contribute to something I’m now calling ‘Augmented Coding ™’. We’re turning a corner with code development, where we need to get past the idea that coding is just typing text into a window. Joel Spolsky and numerous others have commented how a programmer’s job is more assembling components, rather than actually coding. The most productive programmers understand, and have learned to embrace, this (or they’ve gotten the fuck out to lower-level areas where they can just program closer to the metal).

We need to progress out of the age of the Text Editor.

Skills of ‘principle’ are essential, obviously. But actual ‘technical/trade’ skills will help you develop those skills of principle much more effectively. Great programmers need to be touch typists.  My naive college professors for 3D art used to say, they are supposed to teach you the principles, not how to use the programs. But somehow, myself, a middling artist at best, had some of the best work, because I could fly around Maya, and understood and could writer shaders, and knew all the shortcuts in Photoshop (oh and I taught myself ZBrush, which makes even crap look decent). And now somehow I, a middling typist, can create proper code in a fraction of the time, because I keep my hands off my mouse, because I have ReSharper and use it, and use shortcuts as much as possible (when I say ‘proper’, I mean, things readonly are marked readonly, I have truly immutable classes instead of private setters, things are named/laid out according to conventions, I don’t have unused or improperly scoped members, etc.).  And particularly with NDepend and code analysis tools, codebases are too big for a single person to intrinsically know areas of dead code, unused or heavily used code, non-conforming standards, etc.  If you’re working in a codebase with more than a few other devs, and you think you don’t need static code analysis in your codebase, or it isn’t worth the hassle of getting it setup, you’re wrong- do it and thank me later.

In future posts I may go over what exactly I do and look for when assessing the necessary technical attributes of the fully Augmented Coder- both technical aides like code generation and static code analysis, and better use of existing tools like your IDE or version control.

One thought on “Augmented Coding

  1. […] Disagreement.  Fundamentally, there is a breed of developer that is opposed to Augmented Coding.  They tend to endorse (and exhibit) high proficiency with simple tools (text editors, […]

Leave a Reply