Someone on Quora posted this question:
You choose to be software engineer. Why? What incidents inspired you, what motivates you, what is it that still keeps you going?
When I was in high school, I was having lunch with a friend who invited me to the “math lab” to see what he was doing on a computer. I wasn’t sure what he was talking about, so I went mostly out of curiosity. This was 1972 and their “computer” was an ASR-33 Teletype connected to a time-shared system over the phone. My friend had written a program in BASIC that simulated a pin-ball machine. He figured I’d like to play the game. I was more interested in the code. I looked it over and asked a few questions about it. But mostly it made instant sense to me. “I thought everybody says computer programming is really complicated? This looks really simple.” He shrugged.
This was the fall semester of my sophomore year. I was in Advanced Geometry as my math class, and I was bored to death. The programming classes had always been restricted to Seniors in the AP program. As luck would have it, the Seniors that year weren’t interested. Nor were the Juniors. So the opened it up to us Sophomores in the advanced math (not AP) class and almost all of us gleefully said, “YES!” Go figure. I think most of us went on to become software engineers.
I learned BASIC on a Teletype, then FORTRAN using punched cards. When I graduated and went on to college, I enrolled in Engineering and quizzed-out of FORTRAN class. (I hated FORTRAN; it was a required class and I didn’t want to have to sit through it again.)
To me, programming has always been like playing word games, like Scrabble. Only you don’t get “points”; rather, you measure your progress in terms of whether your programs run, and how much you can keep adding to them to make them do more and more stuff.
I got out of the Engineering College and ended up majoring in Math because they had a “Computer Math” option; that was as close to “Computer Science” as they had at the time.
When I looked around at career options, I noticed that programmers were being paid REALLY WELL — just about at the top of the charts. I couldn’t believe I could get a job where I’d be paid top-dollar to sit around all day and, well … play word games!
On one hand, I really LOVE programming! On the other hand, I’m sick of it.
After 40+ years, “programming” bores the crap out of me. We, the software industry, have revolutionized virtually every other industry that exists. Except our own. We use the same process of “playing word games” to write code, compile it, test/debug it, and repeat that ad nauseum until we get something that comes close to what we (or the folks who hired us) want.
I get a picture in my head of what I want, then I set about writing code to create it. However, it’s more like waiting for a Polaroid snapshot to develop, only it takes months rahter than minutes. (Unfortunately, many people reading this today in 2014 won’t understand that analogy, since Polaroid photography has gone the way of the dodo bird.)
Programming is really just a process of creating simulations. You make models of things, most of which are not physical in nature. Sometimes the models reflect physical processes, but most software today models ideas and concepts.
Most programming today has boiled down to what I call “plumbing” — getting data in and out of things, stuffing it into “holding ponds”, filtering it, then skimming off the cream and stashing it away for future use.
The rest is “eye candy” — the “user interface” and “user experience”. And most of that has far less to do with programming than with graphic design, especially when it comes to web-based technologies.
There are estimates that over the next 10 years, American companies will need to hire over 10 million programmers. Whew! Why? Because the need for software-driven applications is far exceeding our ability as programmers to create. In other words, demand is exceeding supply. And that equation won’t change.
What WILL CHANGE, I believe, is the programming process itself. We cannot produce enough programmers fast enough. So we’ll FINALLY need to transform the way software is created, allowing programmers to become an order of magnitude more productive. That will change the nature of programming as well, because it will cease to be a “word game” and turn into something very different. I’m not sure what, but I bet it’s going to be a highly visual process that looks more like digital circuit design than programming.