Image via Wikipedia
Adam Gonnerman wrote an insightful post about how showing the average user the Linux command line (or the DOS command shell on a Windows box, for that matter) can create a sense of fear and intimidation. It’s an interesting piece and I highly recommend reading it as well as the conversation in comments.
As I look at my own comments in that discussion, I’m reminded of how much my thinking about computers has changed over the years. When I was in college, I was a total command line snob. I looked down at GUI’s in general and thought they were the road to making every computer user stupid.
I think this was a common mentality for a lot of us who were into computers back when I was in college and before. After all, when I first started college in the Fall of 1992, Windows was still something you started from the DOS command line after you booted the machine. And the computers in the college’s computer labs were set up under Novell. You’d enter your login credentials, get dumped to the DOS prompt, and type “win” if you wanted to start that stupid GUI.
Even Linux distributions tended to treat XWindows as an afterthought at the time. That same freshman year, I loaded Slackware Linux onto my IBM XT clone (I will admit that I was nowhere near the cutting edge in terms of the computer I personally owned). It involved downloading a couple dozen images and burning them onto 3.5″ floppies and then using a special boot disk to install the system on the computer. XFree86 was an optional install and the distribution was — again — set up to have you log into a command prompt and then start XWindows from there. And since trying to get XWindows to work on your particular configuration was no easy task back then, it struck me as mostly a waste of time.
So I came through a time when using a computer meant you had to be a wizard with a command prompt. It wasn’t optional. You learned all the magic commands and you lerned how to use them extremely well or you were hopelessly lost. It was a glorious time, especially for those of us who loved the challenge. So to me at the time, the growing popularity of GUI’s (by my senior year, all the computers in the lab were running NT 3.5) and the ease of access they offered was destroying the challenge. It was making computers something useful for anyone rather than the playground of the geeky elite. And I was just enough of a snob (and had just enough of my self-worth invested in my geekiness) that this upset me.
So what changed? To be honest, I changed. I quit keeping up to date on computers. I became the average computer user myself, and I found that I liked being an average computer user. So I let go of my elitism.
I suppose a few readers may be surprised to hear me refer to myself as an average computer user. After all, how can a software engineer — someone who is well versed in programming computers — be merely an average computer user? Well, the answer to that is that I’m an embedded software engineer. And that’s a rather different kind of computer programming.
I’m currently developing the software for a very unusual device. It’s a computer, but you won’t see it sitting on anyone’s desk. It has no keyboard, mouse or monitor. In fact, if you look at it, all you see is a big metal box with a bunch of cables coming out of it.
Inside, there is a bunch of analog-to-digital converters and I/O expanders that allow the processor to read or assert logic levels on various signals on the circuit boards inside that box. My job is to develop the software that accesses those ADC’s and those I/O expanders with all the signals, do stuff with the data read, and assert certain signals based on that data. I spent most of this afternoon making sure I could communicate with the ADC’s and I/O expanders. Tomorrow, I’ll spend a significant amount of my time making sure that the readings I’m getting from the ADC’s are valid and mean what I think they mean. I’ll also spend time making sure that I can read and control the logic signals from the I/O expanders as I expected.
This is a typical programming project for me. I spend most of my time looking over data sheets for devices like ADC’s, I/O expanders, microprocessors/microcontrollers, EEPROM’s, and power management chips. I also read schematics and hardware design specifications that explain how these devices are configured and are supposed to work on the system I’m currently working with. I’ve learned to write assembly code for PowerPC‘s, ARM processors, Blackfin processors, and a few others I’ve probably forgotten about.
Quite frankly, after I’ve spent all that time learning about the stuff I need to know to work with the devices I program, I don’t want to learn about the computer sitting on my desk anymore. I just want it to work and work relatively well. I’ll let someone else worry about making sure all my programs work correctly and that my computer is secure and safe from viruses. After all, the computer on my desktop is just a tool to me now, and tools are good if they’re easy to use. It gives me more time to focus on all that embedded stuff that’s part of my job.
So I quit being a command line snob.
Whoa, I actually understood most of this, lol.
Sam is a semi-command line snob. I like to stay far away from it, but I’ll use it if I need to (I know a few basic commands) since I run Ubuntu on my laptop.
Well, my job still requires me to use the command line for certain things, as I noted on Adam’s blog. But for the most part, I’m happy with a graphical interface.
And many of my coworkers probably laugh at me because I’m helpless in vi. 😉
huhuhu i can understand it too
And that’s how you met your “language” requirement in college. 🙂
I think it’s true that getting a job in a field where you use what you love tends to cause that apathy towards that same thing at home. My husband is an accountant, but surprisingly I have to take care of the family’s finances, because he hates doing it.
It?s not so much that you?ve decided to be less of a snob (although that may be a consequence of your choice) but rather that you?ve decided to be less proficient at what you do. The command line is simply a collection of tools that have their area of application just like any another tool set, including GUI applications. Command line tools clearly excel at some tasks that their GUI counterparts are poor at (the unix find command being an excellent example). To decide that the command line is no longer interesting to you is to decide that you?re not going to be as capable an engineer as you could be. It?s like a mechanic saying they?re no longer going to use end wrenches, only socket wrenches, because they?re so much easier to use. Well, that just means at some point the boss is going to have to call in another mechanic to do the job that you can?t do.
Personally, I strive to understand and master a wide range of tools in order to improve my ability as an engineer. It helps me produce better code, in a shorter amount of time, which ultimately means more opportunity for me and more success in my career.
Dare: Thank you for your comment and welcome to my blog.
Erin: Apathy is right.
Real men write programs (and documents) in COPY CON.
No seriously, the COMMAND prompt in Windows is up there right at the top of my most frequently used programs, followed by askSam; askSam is one of the reasons I don’t switch to Linus.
And if I do instal Linux, I want it to come up with the command prompt so that I can type Gnome of KDE for whichever GUI I want to use.
Actually the reason the command prompt is my favourite program is that I use it to transfer data files to my laptop and back again. I have a batch file that copies the files I need and that’s far simpler than doing the same thing in Windows. I wouldn’t even know how to start.
Well, actually I have four batch files:
dsk2flsh.bat
flsh2lap.bat
lap2flsh.bat
flsh2dsk.bat
Anyway, your post reminded me of the good old days, when things were simpler and easier, and the function keys were on the left where God intended them to be, instead of on the top, where modern ergonomically challenged and challenging keyboards put them.
Steve: Yes, batch files (and shell scripts in Linux) can be handy things. We use them here at the office for automating various processes that must be repeated regularly.
Of course, the other thing that I’ll note is that I remember a time when most computers’ basic operating environment was a BASIC interpreter. Heck, even the IBM PC’s, XT’s, and early P/S2’s (but not the clones) would boot into a BASIC interpreter if they couldn’t find a disk with DOS or another operating system on it. Some of my fondest adolescent memories are of programming in Assembly code on a VIC-20. I didn’t have an assembler, so I had to hand assemble everything and poke the machine code directly into memory.
Pleasant memories. But I’m glad they’re memories. 😉
Ah yes, my first computer was a NewBrain, with a HUGE 32k of memory and built in BASIC in ROM.
I used to write programs with random PEEKs and POKEs, and would run them and see what kind of screen displays they produced before it crashed.
Jarred, thanks for the kind mention. Good post. It reminds me of the excuse one of my brothers, an engineer, gave for putting off getting a personal computer at home. He said it would be like a doctor keeping a patient at home.
I’m all in favor of people getting their geek on, but not at the expense of losing a potential switchover to Linux. Snobbery isn’t necessary.
I’m glad i have tech support for my PC issues. Makes my lappy love me more. 🙂 I’m also very glad that I can run the command window in XP (if that’s what it’s called) and fix the internet or restart the wireless router, if I need to. Simple useful geek hacks. 🙂 To close, Gods bless tech support and also Macs are shiny. 🙂
“I don’t want to learn about the computer sitting on my desk anymore. I just want it to work and work relatively well. I’ll let someone else worry about making sure all my programs work correctly and that my computer is secure and safe from viruses. ”
Jarred, you kind of read my mind in that sentence. That’s also my point. It really irks me when someone sees non CLI users as dumb or something like that.
I already have enough to do. There is no sense in having to add the burden of learning some codes or commands when I can get others that will just do the work for me. To hell with the CLI.
Hey man, I notice there is no easy way for me to subscribe to the blog. Where’s your RSS link?