Chris Baus

Focus on the fundamentals

For the last couple years I've been entrenched in a project management role which I have enjoyed, but for better or worse, I've probably spent more time in meetings, than writing code. But recently, I've become more involved in development process again, and I'm enjoying my work more than I have in a long time.

To be honest, the guys on my team, which I'm fortunate enough to say are damn brilliant developers, are more in tune with the intricacies of our current platform than I am. Linq expressions don't exactly flow from my fingers like water. At the same time, as a technical leader, I have to be realistic and realize that I'm never going to know everything that every specialist does. That isn't my job.

Contrary to what some may believe, modern day web development is a complex affair involving everything from graphic design, cross browser DOM manipulation, and logic manipulation to network and database administration. Our system even has a healthy dose of scientific programming that I don't dare claim any expertise about. There is a lot to know, and frankly I'm never going to know everything that a CSS specialist would. At the same time it is likely that I know a lot more about Linux network programming than a CSS specialist, and that's ok. It has to be that way.

So as the person responsible for an application from soup to nuts, what can I bring to table, even though I have no idea what that -moz-box-direction line in our CSS file does? The fundamentals.

I've started a list of some concepts I personally value. Each manager might have a different value system, but I do think it is a good idea to consider what you do find important and actively pursue those values.

When I started in this profession, writing DOS TSRs in C was a hot commodity, syntax highlighting was a novelty and in college we had this thing called gopher that we used to extract files from the NYSERnet nodes at Cornell on the VAX. I remember when Java was released, and I can tell you it viewed as a revolutionary language that would change the face of computing, and not some a relic from the dark ages of software.

But through all those changes, the fundamentals that I first learned in my Modula-2 data structure classes are as, if not more, applicable today then they were when I first learned what a B-tree was. Platforms and languages come and go, but data structures, algorithms, and code organization are ever constant. Even these new fangled functional programming concepts have been around since, well, since modern programming was invented. Hell even using a scripting language on the client backed up by a network server (a la JavaScript and web services) has even been done before.

Even if an app is full of multi-layer-meta-MVC-lamda-ORM-closure goodness, if the fundamentals are ignored, regardless of the platform, language, and tool stack the end result will be an unmaintainable, buggy mess. As a technical manager, I believe my job, first and foremost, is to foster an environment with a healthy respect for the fundamentals, and it is important to remind myself of that.