I am a software engineer, software development / hands-on agile coach, community organizer for PhillyXP, blogger, and speaker with 19+ years of experience creating and delivering high quality software. I have specific expertise in:
I am a lifelong student always trying to improve. I believe code quality is not subjective nor a matter of preference. I enjoy mentoring and coaching developers specifically about code quality, microtesting, and Test-Driven Development. I am passionate about XP, Modern Agile, Lean Software Development, and DevOps. A listing of my talks can be found here.
As teams get more comfortable with refactoring, I often see them practicing what I call speculative refactoring. When they encounter code that is ugly, indecipherable, or too complicated, they decide to refactor it. The problem is, this code has nothing to do with what they are currently working on. As much as I like to encourage the motivation to improve, this is a trap that leads to taking on risk without any of the rewards to the business.
I recommend techniques like Opportunistic Refactoring and Preparatory Refactoring where the focus of refactoring is in support of adding the feature or business value currently being created. The concept of Opportunistic Refactoring, from Martin Fowler, is that the focus of refactoring is on the code that is actively being modified to develop a particular feature. Areas of the application that require the most change get the most time for refactoring. This creates a virtuous cycle; the code that needs to be changed most often will also be improved most often.
Here are a few projects I have worked on in my free time:
A C# implementation utilizing LINQ-to-XML to parse an iTunes library file (PropertyList format). The nuget package can be found here on nuget.org.
A ruby iTunes library parser using Nokogiri.
A .NET Web API app (using my Lastfm.NET library) with an AngularJS / Bootstrap front end. It displays the last 25 songs I’ve listened to as well as my top 25 artists.
A .NET client for the Last.fm REST API.
If you’d like to see some other things I’m working on you can view my github account.
Drop me a line if I can help your development organization, help you with your product, or you just want to talk about music!