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.

Read now

Software and Updates

A new or upgraded tool can be a beautiful thing.

Git 2.9.0

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.

Read now

Being Professional

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.

Read now

Staying Secure

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.

Read now


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.

Read now

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.

At NDC London 2016, Bill Wagner (author of Effective C# and More Effective C#) presents both a preview of features that might be in C#7 and information about how to get involved yourself.


blog comments powered by Disqus
Next Post
Tracking time  11 Nov 2017
Prior Post
The day my build broke  04 Nov 2017
Related Posts
Browsers and WSL  31 Mar 2024
Factory methods and functions  05 Mar 2023
Using Constructors  27 Feb 2023
An Inconvenient API  18 Feb 2023
Method Archetypes  11 Sep 2022
A bash puzzle, solved  02 Jul 2022
A bash puzzle  25 Jun 2022
Improve your troubleshooting by aggregating errors  11 Jun 2022
Improve your troubleshooting by wrapping errors  28 May 2022
Keep your promises  14 May 2022
November 2017