I’m A Dinosaur

As many of you know, I’m a computer programmer. I have a long resume of applications I have written for a variety of clients, and I’m very good at what I do. But for a long time I’ve been feeling like a dinosaur in terms of my profession, and this morning it occurred to me why.There is less and less science in my profession.

I’ve been saying for ages that we’re moving in a dangerous direction. As a Java developer, we’ve been focused more and more on turnaround and less on quality. We’ve built tools like Hibernate and Rails that infinitely improve the speed with which we can develop, but remove us further and further from the code we write. When errors occur, they are immensely difficult to track down and resolve because we don’t honestly know what is happening inside the box.

This is all in response to budget concerns from business. They want us to cut down on the costs of our development time. And we want to keep them happy, so we work with them. We come up with things like Agile and rapid application development and we use CASE tools to build our applications faster and better. But this is a Wal Mart approach. You end up building cheaper crap instead of proper products.

The whole idea these days is that we start building when the client says, and we slowly use the building process to flush out what it is they want. This is anti-scientific and foolish. In science, we seek to find answers based on a thorough understanding of the question, and on a proper evaluation of the process to result in an outcome. I used to teach this in a Systems Analysis class. Once you have your problem determined, you research it to understand what it actually is. Then you begin to plan what you will need to do and use to make this happen. It is only with that knowledge that you can begin to build.

If I was building you a timesheet system for your work, I would need to first understand what that means. Is it a simple app that lets you type in “Today I spent 15 minutes calibrating the Jorgoens Flange” in a text box? Is it a complicated application which allows for multiple cost centers, project tracking breakdowns, and year-end reporting? Obviously, the two are very different systems, and there are a myriad of options in the middle.

If I went to a chemist and said “I want a more effective explosive compound than TNT, something new, and that flashes green,” I would expect that he would do more than just start tossing random chemicals he feels are pretty good into a beaker, and that each successive explosion would tell us more and more about whether we’re on the right track or not.

My degree is a science degree, and I pride myself on being a scientist. And that is why, at least in the Wal Mart world of information technology, I am now a dinosaur.

Jim

2 thoughts on “I’m A Dinosaur

  1. Put a dinosaur in a room with a bunch of suits and see what happens. ;)

    As I’ve been completely removed from the development world I can’t speak to that, however I can speak to the fact that today’s languages certainly are removing us from the tool we’re really working with!

    When I went through college (COGS, NS) we didn’t just work with C++ and Java, we also worked with Pascal. We worked with Pascal not only because it was an excellent training language but because it was very functional and flexible! One of the main reason our core Prof decided to use Pascal was its ability to dip into assembler and really get to know what you were doing with that processor! What really happens when you assign the value of a variable to another variable? What really changes when you throw an ASCII code into the display buffer? Where do those sparks come from when you jam a screwdriver into that red lead inside a CRT monitor? (Ok, so he liked to digress, but you get the point…)

    I loved college… :)

  2. My problem isn’t with the language or how far out from the ones and zeroes we get. It’s with the approach we are taking. Agile and Hibernate are fine tools for the job, it’s more the build it before we know what it is attitude that bothers me.

    When I taught C programming, we were well into the days of visual programming, but I made the students learn old DOS-based C so they could appreciate things. And frankly, I did a kick ass job. In a single two hour lecture they went from fearing pointer notation to writing they’re own doubly linked list code. I did that by explaining what we wanted to build, and then having them draw it out conceptually on the board. The logic was entirely up to them, though admittedly I helped in the tiniest of ways. Then they were asked to code it. In the end, the class looked at me with their completed code and I told them the only change I would offer was to rename the functions to push and pop, the standard verbiage for doubly linked list functions.

    If you don’t know what you’re building, you wind up building the wrong thing and working with that until you get it right. I’d rather take the time in the beginning to know what I’m building and then do it quickly and efficiently. But business in general has no desire to see software go through any analysis and design, they want to build a prototype and tweak it until they think it’s right.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>