The Illusion of Code Quality

Code quality is something that I believe every developer strives for.  We want code to be the best it can be and there are tons of opinions on things developers can do to make quality high. Over the years as teams have moved to Agile from Waterfall, and as build and test automation has become better, a lot of the code quality metrics that experts have developed are becoming less helpful, or, dare I say, counter-productive.

The larger a team gets, but more importantly, the higher turnover gets (developers leaving the team/company and new developers without context come on to the team/are hired), the harder it is for code to remain high quality over time. We’re all human, we can’t keep everything in our head, we can’t mind-read the original developer who left the company and wrote this code. The worst part is that we don’t know what we don’t know. We duplicate effort because we didn’t know there was a design document on Box, or we don’t go update it.  There’s also setup information on the Wiki that should be changed, but we’ve not asked anyone where it is yet, because we didn’t know to, so our sweeping changes to the project aren’t reflected there.  We’re also on a deadline, and there were already existing comments that StyleCop saw, and it can’t automatically tell me that something in my code is now out of sync with the comments, so now developers can’t make any assumptions about the comments being right.  Any of this sound familiar?

That’s ok, though! That’s human nature! We aren’t computers (I’m glad we’re not) and we’re not good at keeping documentation in sync, especially when most teams now use Agile (I say that loosely), but still carry assumptions over from the Waterfall days that are literally duplicated with automation today.  So what should we do to help keep down the illusion of quality and actually introduce REAL quality into our code? Continue reading…

Personal Branding for Software Developers

I recently gave a talk on branding for software developers at TriJS.  While I didn’t get a chance to record it, I did upload the slides for your viewing please.  The slides are readable without listening to the talk and have a few protips and specific actionable things that you can do to boost your personal brand as a developer.  It’s one of those things where you don’t really need it until you want to change jobs or you need to promote something, then you wish you did.  If you don’t know how to get started, take a look at the slides and let me know some of the things that you’ve done to increase your visibility as a software developer!

TDD 0 to 60: How to Introduce TDD to Your Team With No Unit Testing Experience

Does your team use Test Driven Development or even unit test at all?  If you’re like a lot of teams I’ve come in contact with, that answer would be a resounding “no”.   I’m not sure what the biggest barrier is for most people, though I think it’s a combination of the following:

  • “There’s barely enough time to write the application code, let alone test code!”
  • “I’m not even sure what kind of test to write.”
  • “We already have QA guys for that!”

There are a lot of things that hold back many teams from it.  Where do you get started?  Let’s address these common questions and show how easy it is to get started with testing and TDD. Continue reading…

Automating the Web with Selenium and WebDriver

I recently gave a talk on browser automation and using Selenium with WebDriver.  Not only that, I gave a demo of using Selenium, WebDriver, xUnit, and creating a fluent API to create a framework that makes tests easy to compose.  Check them out and let me know what you think!  Selenium is a fantastic way to get a ton of value from automated front-end tests.

What I’m Doing /now

This year I’ve decided to focus on a few things to become a better developer, and do things that make more of a difference in my life, my family’s life, others’ lives, and my career, but with less work.  There is no shortage of project ideas that I could explore, places to visit, meetups to attend, or emails to reply to, and that’s kind of the problem.  Recently, I ran across someone who had a /now page on their website.  It’s a movement started by Derek Sivers.  It’s similar to an /about page, but answers the question “What are you focusing on right now?”.  It’s the elevator pitch to what you would tell a friend that you hadn’t talked to in a year, which is really great to know, but that’s now why it’s great. It’s great because it forces you to put down into writing your priorities. It forces you to look at the short list of the things that matter to you, and it gives you really, really fast feedback if you’re “focusing” on way too many different things.  So, from now on, I’m going to keep a section of my site up to date on the /now page.

I’m always interested in ways to help automate my “0-60″ introduction and help people better understand where I’m at, so that we can both help each other out better.  How do you keep acquaintances and random internet passer-bys up to date on where you currently are in life? Is there something better?

Check out my /now page to see what I’m up to…right now!

Code This, Not That

Below are the slides from my recent talk at TriJS on JavaScript and replacements for some of the ways we solve problems in JavaScript, and alternatives that are better and less error prone. It’s also got a few interesting bits of knowledge that’ll definitely surprise you, like the truth table…let’s just say JS gets a little crazy.