In this episode from July 2016: Learning a healthy fear of legacy code; git 2.9.0 released; the myth or reality of 10x programmers; TeslaCrypt ransomware developers terminate project; the danger of specifying specific thresholds; and Bill Wagner talks about what might be in C# 7.
Sharpen the Saw is a somewhat delayed repost of a semi-regular newsletter of information I publish for the professional development of software developers. While targeted primarily at developers working with the Microsoft technology stack, content will cover a wider range of topics.
To subscribe, send me an email and I’ll put you on the list. Membership is moderated.
Always a way to improve the code you write every day.
Learning a Healthy Fear of Legacy Code
It can be tempting to treat Legacy Code as untouchable, to put up a sign reading “Here be Dragons” and to go to great lengths to avoid making any changes at all. This is a mistake.
Equally, it can be tempting to make sweeping changes to Legacy Code, assuming that you know better than the original developer. This is also a mistake.
Finding the sweet point, the balance point between fearful paralysis and reckless bravado, is both vitally important and difficult to achieve.
Software and Updates
A new or upgraded tool can be a beautiful thing.
The new release of
git includes a number of new features, including an improved compaction heuristic for diffs (though, it’s disabled by default) and improved rename support.
A great developer does more than just write great code.
10x Programmers: Myth Or Reality
The existence (or not) of the 10x developer is an interesting question, one that I find particularly intriguing.
In fact, I’ve found myself on both sides of the equation. One time I completed a feature rapidly, throwing away a partial implementation that another developer a significant time building. Another, I saw a fellow developer complete in days something I thought would take several weeks.
Does my success in the first case make me a 10x developer? Or does the second case make me a 1x developer?
I’d suggest that neither is the case - no one is going to be the fastest/best/rockstar programmer in every situation. It comes down to knowing what to do and making effective use of tools.
Staying safe online and writing secure systems are both harder than we think.
TeslaCrypt ransomware developers terminate project
Here’s that rarest of security stories - a happy ending.
The developers of the TeslaCrypt ransomware decided to terminate the project. Instead of leaving the remaining victims high and dry, they were persuaded to release the master key, allowing a third party to developer a free tool that recovers the files.
Sometimes the answer is random.
Some Things Can Never Be Spoken
We can easily agree on any number of things as being good and worthwhile. It’s better to have fewer bugs, more unit tests, higher test coverage, lower cyclomatic complexity and so on. Yet, as soon as we start directly targeting specific thresholds for any of these, any worth as a measure of quality disappears.
This doesn’t just happen for software developers. Economists have noted the same effect with the Phillips Curve - while the curve seems to describe a relationship between interest rates and unemployment, any attempt to control unemployment by manipulation of interest rates simply fails.
What you choose to target is important - and often the best things to target are not the obvious ones.
Video of the Week
Take some time to feed your mind.
Something C# 7 This Way Comes
While the Roslyn Compiler for C# 6 is open source, the design process that lead to the language was substantially behind closed doors. For the next iteration of the language, the design process is happening in public.