Technical Debt - The Unseen and Surprising

TL;DR; We accrue technical debt in different, often unseen and innocent ways: 'Unexpected' - created by unpredictable or aggressive change. 'Unintended' - created by something missed at the design/development phase. 'Tools and Tech' - opportunity cost of not leveraging faster, more effective tooling and technologies. 'Team changes' - codebase incoherence due to number of contributors (who may no longer be part of the team). As with all work - get it into the backlog so it's visible. Weigh up not only the cost of clearing technical debt, but also the value gained from clearing quickly . If you can't 'sell' the benefits of a refactoring - you probably shouldn't do it. 'Technical Debt' (Tech Debt) is explained nicely by Wikipedia : Technical debt (also known as design debt or code debt, but can be also related to other technical endeavors) is a concept in software development that reflects the implied cost of ad

Deliberate Practice for Programmers - Learn a New Language!

In the last post - we talked about why deliberate practice is important, and that I aim to approach my practice with: Purpose - I’m spending my non-refundable time on something, I want it to count. Plan - Before I start, I think about how I’m going to structure my practice so that it (hopefully) meets it’s purpose. Progress - Ensuring I take time to reflect on the practice, and adjust as necessary. To get specific (we’re programmers, after all) - this translates to: Defining Purpose Creating plans to exercise ‘something’ that I encounter in my career - for example (and this list is far from exhaustive): Learning a new programming language. Working with different IDE’s to develop and debug. Traversing and processing data. Effective automated testing. From unit to end-to-end. Creating build and deployment pipelines. Working with different databases and ORMs. Performance profiling and testing. Finding memory leaks. Rapid prototyping. Paradigm shifts - e.g. object-

Programmers Need Deliberate Practice

TL;DR; Consistent, effective practice is a key part of a healthy, enjoyable career. Most people practice without purpose. This means they either quit and/or learn less than they could. Read this for inspiration on how to take a more considered approach to your practice. Note: I’m English, but opted for the US English spelling of ‘Practice’ throughout (as opposed to ‘practise/practice’) to avoid confusion with the difference in spelling within the term ‘Deliberate Practice’. Practice? I think we can all agree on a couple of things: People who are experts practice often. Experts are extremely disciplined with their practice. This will generally come as no surprise when I mentioned, and people will rarely argue those points. They make sense. Thanks to the growing number of interviews and podcasts - experts are getting more limelight, and we’re getting more sneak-peeks into that practice routines, habits and rituals (podcasts like Tim Ferriss’ are awesome for this). However

Using Private NuGet Packages in Azure Web Sites

After wayyy too long – I’ve finally started breaking up my code into re-usable components and putting together NuGet feeds for them. In many case – I’m trying to put these together into a state that is suitable for others and releasing them as Open Source on GitHub . However, there is some code that I don’t want to go out to the public – but I still want to be able to break them up into components and generate NuGet packages for them. Enter the awesome MyGet . MyGet allows you to create your own private NuGet feeds amongst a whole load of other cool stuff – now the next challenge: how do I get Azure to build my site and restore the package from the private feed? Enable NuGet Package Restore This is super-easy, and in many cases you might have already done it . Right click the Solution and click “ Enable NuGet Package Restore ”. This will create a “.nuget” directory within your solution folder. In here are a few key files: NuGet.Config NuGet.exe NuGet.targets Now – we just

Installing Windows Live Writer on Windows 8

It’s been a LONG time since I blogged – and I figured I’m going to get back ON IT! So – first things first, I needed to install the awesome Windows Live Writer. So I Google “Windows Live Writer” – and it brings me to this download page . The problem? This installer doesn’t work on Windows 8. I get the error message: Couldn’t install programs You already have a more recent version of Windows Live. Another quick Google later – and I came across the Windows Live Essentials Page – hit the “Download now” button and you’ll be good to go :) Side Note: I know that upon expanding “System Requirements” – I can see Windows 8 isn’t listed. But it’s not immediately obvious and the browser knows my OS anyway :P

Could not load file or assembly msshrtmi or one of its dependencies

So, I recently upgraded my Azure Tools to October 2012, and everything decided to fall apart in my deployment environment . Great. Thanks Microsoft. I installed the latest tools, fixed the code caused by the breaking changes in the Azure Storage Client Library  and then having tested locally - fired off a deployment to Azure. I then got greeted with a YSOD saying: Could not load file or assembly msshrtmi or one of its dependencies Erm, say what now? I don't even have a reference to this anywhere in my project. However, I know that when that is the case, this is normally some low-level GAC'd thing that is causing the problems. A quick Google reveals that I am far from alone on this issue. I ended up trying out the steps outlined Trying out  this stackoverflow answer . I skipped over this code-based solution as frankly, it seemed way too hacky for me. I tried removing all the 'PlatformTarget' references, as mentioned here . All to no avail.. I Found This F

I'm Debt Free!

Hello Ladies and Gentlemen! I've just logged into my Internet banking and confirmed it -  I'm finally debt free . The last payment on my last loan went out yesterday, and the only credit I have now is on a air miles card that I pay off in full every month. My money is my own again. This is awesome stuff - not only for the financial gain, but also for the immense emotional relief this gives me. To Be Cathartic.. There was a lot of bad emotion and memories attached to this loan in particular, here's some mental associations that spring to mind: Not being able to afford proper food - basically living on pasta and ketchup during the worst parts. This of course had the knock-on effect of making me unhealthy, I was sick - a lot. No hot water or heating - this actually did wonders for my ability to take cold showers! The banging of the front door as debt collectors wanted to get money I didn't have. The constant stream of red letters, legal threats, phone calls ha