Pointed Development

Programmer Competency Matrix – Education and Experience

| Comments

I’m good at some things. I’m bad at some things.

I was looking through the *nix spellbook and – quite by accident – stumbled across the Programmer Competency Matrix. Again. I’ve seen it before on Hacker News (here, here, here, here, here and here, too), but today I actually took the time to read through the matrix and mentally quantify my abilities.

Because I like applying arbitrary opinions to my skill set and abilities.

Objectively, of course.

Your Code Is the Only Meaningful Project Documentation

| Comments

Have you a valediction, boyo?– James Cromwell as Captain Dudley Smith, L.A. Confidential, 1997

I recently had the most interesting chat about documentation on the way to the local coffee shop.

My department has been having a lot of discussion around documentation. We’ve been working through software design specifications, functional design specifications, business requirements documentation… all for a single release for a single project, and we have many releases and many projects. It’s a lot of writing and a lot of work and it takes a lot of time. Apart from the specifications, we also have process documentation, corporate mandates and email and wikis and SharePoints and intranets and thousands of Word documents scattered all over the network, not to mention all of the undocumented tribal knowledge that’s scattered throughout the entire organization.

It’s really kind of a mess.

I’m Not Arguing With You Over Your Terms of Service

| Comments

I’ll use your service until you screw me over.

I like the Internet. I’ve been on it a long time, and I’ve always tried to utilize the latest and greatest Hot New Thing. I like to give companies the benefit of the doubt when it comes to my information: I know they need to make a profit and I’m fine with that.

But don’t screw me over and don’t try to hide your marketing strategy from me.

When Facebook went public, I removed my account. In all honesty, I probably shouldn’t have opened an account in the first place, but it was fun and neat and easy to use while it lasted. I just couldn’t get over a couple of comments made by the current Facebook CEO and I wasn’t comfortable with certain aspects of their terms of service and privacy policy. Also, let’s not forget the whole governance fiasco.

I removed my account and took all of my data with me.

Embracing Change

| Comments

If you only have a hammer, you tend to see every problem as a nail. – Abraham Maslow

Microsoft technologies have been the primary bread and butter of my career. I dabbled in a few open source technologies early on, but quickly found equilibrium with the Microsoft stack. I worked exclusively on Windows: Open source technologies quickly became relegated to something of a hobby status, and I didn’t even bother diving in to other technology stacks or languages. I dove deep into the culture of Windows development with a fervor.

But I never anticipated becoming that developer. I always considered myself a technologist, yet I began to see C# as the answer to every solution to every problem in my career. .NET had become my hammer. Meanwhile, technology continued to roll forward despite my decision to remain singularly focused within my own little programming niche. Neat Things were happening all over the technological landscape that I ignored simply because I didn’t believe the new (or old) technologies were a good enough replacement for my hammer. Smart people were doing smart things and I was missing out.

Finding Quality Developers Is No Easy Task

| Comments

This post took days to write. I didn’t expect it to take quite so long, but I think the fact that it took so long hits right at the core of hiring developers: It’s hard.

It’s no secret that finding great developers is hard [0, 1, , n]. Innumerable methods exists for weeding out the bad candidates from the good, and everyone has an opinion about what works and what doesn’t, including me.

Hiring developers is an attempt to mesh the science of programming with creative problem solving and a whole lot of wisdom. It’s an attempt to combine the technical needs of your project with the candidate’s experience, desires and humanity. Finally, it’s a coordination of all other internal and external factors including resource management, benefits and pay, work environment, team personalities, etc.

What follows is an outline of my process for finding great developers.

From Avid Gamer to Architect

| Comments

A Love Letter to Games

I’ve been a life-long gamer.

I began my gaming career as a child, when my parents acquired an Atari 2600 in the early 1980s. Shortly after their divorce, we acquired an Intellivision, which I now consider the single greatest console of all time. The Intellivision captivated my interest in gaming until the mid 1980s, when I was gifted an NES around winter of 1986. I instantly fell in love with Mario, Contra and Punch Out on a little 13″ color television that I had in my bedroom: I’d sit on the edge of my bed, mere inches away from the TV, fully absorbed in squishing goombas.

It was a great time to be 8.

It’s Bugs All the Way Down

| Comments

Wherein I learn that some developers don’t know how to play well with others and get upset about it.

First, apologies to Stephen Hawking and Dan Rosenberg for the title.

Second, some back story…

Years ago, I was responsible for a web-based application that consumed a small XML payload, performed some calculations and spit out a small XML answer.

The application consumed and produced very precise coefficients, such as 0.000000000000007.

As the application matured and time progressed, we eventually had to split the calculation model from the validation model in order to handle change-management procedures. Additionally, we were slowly aligning our core platform with a future-state vision, little-by-little moving chucks of code from Platform A to Platform B.

In order to prevent a platform war and to Maintain Focus, I’m going to simply state that I developed on Platform A, while another team within my organization developed on Platform B.

To validate code changes in Dev, we’d run tens of thousands of rows of test data through both the validation model and the calculation model.

Test data was always constant.

Production data was variable.

Uh oh.

On Tightening Focus

| Comments

Find a balance and focus.

I’m currently working on a draft specification of a high-level, distributed software platform that’s ultimately going to replace its degenerate sister-platform that I helped extend several years ago. It’s the first greenfield project I’ve worked on in a long time, and having a clear vision and sharp focus of its purpose has helped strengthen the overall design.

I didn’t get to this clear vision or sharp focus over night, though. I’ve had a lot of help along the way and an even higher-level architect to direct my work, point out fallacies and correct inconsistencies.

The ultimate design is now very clear: An explicit plug-and-play interface which fosters extensibility and modularity. Each module has a very specific, well-defined purpose.

It’s obvious.

20 Days With the Google Nexus 10

| Comments

It’s pretty great. I suck at virtual keyboards.

UPS delivered the Google Nexus 10 on November 16th, 2012. So sheltering was I of my new toy that I managed to keep the protective plastic around the device for 15 days until I finally purchased a cover, one designed for the Samsung Note (the cover works perfectly, by the way, despite the slightly smaller formfactor of the Nexus 10).

My primary intention for the Nexus 10 has always been to use it as a device to connect to my development machine, with a secondary goal of writing.

After 20 days, the Nexus 10 has proven it can handle both tasks admirably well. However, without a physical keyboard or mouse, it’s much better at general “research.”