Why should you, a software developer/engineer, want to pass most of your time in a dumb terminal instead of in a powerful and costly IDE? I have five reasons to convince you.
- instant access to unix programs. GUIs facilitate the job of naive users but the real power resides in the command line tools which perform the real work; moreover, cli programs can be chained in infinite ways using their universal plain text interface.
- the classic 80x25 terminal has short lines and a short number of lines: too much logic in a line stands out because the line wraps on the subsequent one. Too long methods are spotted as well, because they don't fit in a single or double screen and require multiple scrolling.
- transparent remoting with ssh. The same can be said for VNC, but it can be very slow and it's not always supported while many servers have a ssh daemon. It is so fast I did not notice the latency between my local machine and other boxes in my Lan, so I have given them different colored prompts to easily distinguish between environments.
- uninterrupted flow; not using the mouse makes you move very quickly in the cli environment, once you know what to write and how to leverage the text- based tools.
- every executed command is registered for possible future repetition and modification. Try record a procedure of 90 control panel clicks instead.
[12:29:32][giorgio@Indy:~]$ history | awk '{print $2;}' | sort | uniq -c | > sort -nr | head -n 10 4924 vim 1326 svn 879 nakedphpunit // it's an alias for phpunit --bootstrap=... 616 sudo 438 cd 266 ls 238 osstest_sqlite 207 phing 135 ./scripts/regenerate 127 grepOf course most of them were only typed the first time and then recalled. From these data you can infer that I use the command line interface a lot, and I've never been more productive. This statistic is a typical leverage of command line tools in a construct that took me less than a minute to write and that I can repeat whenever I want in a few seconds.
Sooner or later, the time comes when a developer feels constrained by his graphical interfaces and resorts to use the command line directly. If he avoids the command line, probably it's because he does not know how to work with it. Don't be so proud like this developer and take some time to learn: the cli will repay you soon.
I like the idea for calculating your most used commands! I get: cd, svn, dir (ls -l), less, grep, jed (editor), sudo, ruby, mate (TextMate), git.
ReplyDeleteActually,good post. thx
ReplyDelete