Programming – Fantastically Frustrating

dI Thought I Wanted To Program…

When I was a kid, I wanted to be a programmer. My dad bought a Tandy Color Computer II and I couldn’t tear myself away from it. I would program it in Tandy Basic every chance I had. I was 5.

The original Nintendo Entertainment System was released to the U.S. public (the first time). My dad bought me one for Christmas. I played countless hours and tried to figure out how I could create a game for it. I designed a few but never got around to creating one. I was between 6 and 10.

We were given an old DOS-based PC. I found a Basic interpreter and programmed a text-based boxing game. It was more of a “choose-your-own adventure” game to which I knew all the right answers. But I was proud of it. Then I got curious about what the “format” command did. format C:? Oops. I had no idea how to recover from that one. No OS to install. I still wanted to program.

Mom bought an Acer PC with an Intel P-90 processor. 4 MB RAM. It was fast, then. And then she bought me a “Teach Yourself Visual C++” book with Visual Studio 1.0 included. Somehow C++ was fascinating to me. I had no idea what they meant by pointers or inheritance, but I didn’t care about the terms. I was just happy to have it printing “Hello, World!” properly. I must admit I hate “Hello, World!” I don’t much care for the simplistic lack of creativity in almost every programming book known to technology. But that didn’t stop me from wanting to be a programmer.

Java was released to the general public as beta when I was 15. I downloaded it on my 28.8 kbps modem. The library just happened to have a book, so I borrowed it (yes, I returned it). I fired up good ol’ MS-DOS EDIT. Blue screen. Grey text. I don’t know how my eyes survived, or how I managed to write programs without suggestions from an IDE, but I did. As frustrating as programming is, I was finally able to create a very, very simple program that displayed graphics (I couldn’t figure that one out with C++ up to this point). Now I was sure programming was for me.

In high school I took the stupid “what should you be” test. I was fully expecting to see something in the computer science field. Programming in particular. Instead, when I got the result, I laughed to see “Poultry Vet.” I am not joking. Oh well. I still wanted to be a programmer.

So I Did

And I do. It took me a little while to convince the professional world that I really was a software developer. I had to start my own Web design business to have experience to share. That worked out well. Not the business. The experience. Well, that, and being a rogue developer when I worked at an insurance company. I started as a salesman. I’m terrible with sales. I worked the night shift, which was somewhat quiet, being all inbound calls (yeah… I can’t even sell something to someone when they want it). One day the company decided to give everyone access to an Internet library. They had tech books. One was the gigantic JavaScript Bible.

What did I do in my spare time between calls? Program. I wrote a web app to keep track of my sales and such. The IT people freaked out.

“Who authorized you to do this? Where did you get the tools?”

“Um… you gave me the tools. Notepad. And the Internet library.”

So began my post-Web design firm programming career.

…And I’m Still Here.

I can’t tell you how many times writing code has given me ulcers (not real ones) as I sorted through code which didn’t work…but should. Only to find the stupid-simple mistake three hours later, and then berate myself for being so dumb. Not that I am dumb. I happen to think I’m kind of intelligent. After all, I have written a lot of working software.

Anyhow, if you’re “still here” too, you know what I mean. And if you’re thinking about being here, you will understand. I guarantee it.

I have found programming to be fantastically frustrating. I love doing it, but it can also be one of the most infuriating activities to undertake. The reasons are just as diverse as the field of computer science itself. Still, they can be boiled down to a few simple categories.

Computers Do What They Are Told

No, the computer isn’t doing it wrong. You wrote it wrong. Or someone before you did. Learn this early on and you will be okay (and love to program longer, and find bugs faster, and be more humble, and many other benefits).

Along the same line, blame your code first until you can prove otherwise. Far too many times I have blamed the “user” only to be humbled by a simple logic error I made. It happens. A lot.

Also, remember this sentence—burn it into your brain: “YES THEY WILL!” If it can be done [in the software], someone will find a way to do it. Assume nothing. It always happens. Always. Program so it cannot happen if it shouldn’t. Please.

A suggestion to help alleviate frustration for yourself and others: Please comment your code well!

People Are Opinionated

Especially developers. We have a toolset we like. A language we like. Technology we prefer to work with. And sometimes, we will defend it to the death even if we are sorely wrong.

There is no magic language to do it all. There are tools (I’m not talking about the people). Use them well. Learn what they do. Would you use a screwdriver to drive a nail into a board? Okay, okay. Some of you might. But you shouldn’t. Hammers are for that.

We Avoid What Is Difficult

And try to move too fast. Why is security so often the last thing to be implemented? Or redundancy? Backups? Recovery plans? Or all those other things that get put on the back-burner until bad things happen?

Simple. We do the less-complex, fun stuff first. Our customers want to see something viable, tangible. And quickly. The foundation does not get laid before the house is built and it comes toppling down eventually. Or sometimes rather swiftly.

Agile lovers: cover your eyes…
I strongly dislike the Agile methodology the more I work with it. Or, perhaps, the more I work with broken versions of it. I don’t think Agile was really designed so we could get software out the door more quickly. Sure, that’s part of it. But that isn’t the end. It is another tool to help break complex work down into smaller, more manageable pieces. That gives us better quality software if done well.

And, in my opinion (remember, people are opinionated—and this is my blog), Agile is not the answer to software development as a whole. It is popular. But it is not effective in every situation, or for every team.

By the way, no extra charge, I absolutely hate the gobs of meetings that come along with it.

I Still Enjoy It

Even with all the angst that comes with software development, I thoroughly enjoy it. One would have to be crazy to develop for a living if they hated it.

I suppose one could argue a person has to be crazy to love it.

Maybe so. But I don’t think I’m crazy. And ignorance is bliss.

April 5, 2017 Cole Kelley Raw Rants No Comments