Most software developers prefer to work on "fast" computers, and I am normally one of them. Many of my tools work best with lots of memory, and some common tasks become pleasantly instantaneous on a nice, powerful computer.
At work, for example, our teams project is 250-500,000 lines of code modularised into many sub-projects. Writing an extra five thousand lines of code would be considered a "minor" change. Working with this project on a slow computer would be a nightmare.
However, my tiny little netbook, a rather un-sexy and previous-generation EeePC 901SD, is now my main development machine for my free-time-only side-project, which is also written in Java and uses the technologies documented in my previous blog posts. The software is not a toy: it's written to the same quality standards as my work project, if not higher; with no time constraints or deadlines, I can be as perfectionist and nit-picky as I want. Before I started this project, my previous project made heavy use of PostgreSQL, and I wrote hundreds of lines of C, again on a similar netbook.
The surprise? It's been a great experience. Being a very fast typist, the keyboard initially seemed cramped, but quickly became comfortable. I use a lightweight IDE (Netbeans) with a reduced font size, and screen real-estate is not an issue. I use Linux (Ubuntu), which means I have a decent command prompt and unix-like system at my finger-tips.
More importantly, my coding habits have changed. I no longer waste time thinking in front of the computer screen. I design the code in my head while walking to work in the morning, shopping for groceries, or doing the dishes. If I had a screen in front of me, the temptation would be to do something, to try out the idea, instead of reflecting on what really needs to be done, or how to do it.
I can code in a crowded bar, or in 20 minutes on a tram surrounded by commuters, because when I'm sitting in front of a keyboard, I already know what I'm going to do. The rest is pure typing.
The result: I would guess that I've done no more than 30 man-days of development. Less than half of it with an Internet connection. The time spent has been spread over the past four months in chunks of no more than four hours, and mostly shorter than one. But it has all been valuable learning or steady, measurable progress.
This requires a lot more patience than usual from me. Time for my side-project comes at its own pace and cannot be hurried, and I'm not intending to sacrifice anything to make faster progress.
I also learnt this: when I demand to work with only the very best tools in every situation, this is misplaced pride, maybe arrogance. It limits myself and chokes faith in the abilities I've been blessed with. We sometimes write on small pieces of paper, so why can't we sometimes program on small computers?
Not to sound disagreeable, but it sounds to me like your success has nothing to do with the small netbook and everything to do with the excellent habit you developed (thinking through your problems before hand).
ReplyDeleteIe, you should be able to apply the same technique on a beefy desktop PC as well.
netbeans? lightweight? ahahahahaha, you crack me up!
ReplyDeletebut seriously, netbeans is also my main IDE, but with the kind of RAM it sucks up, particularly when your also running tomcat/glassfish, I doubt I could use it on a netbook and remain sane!
@Dan definitely Ian has a good habit (process) here, and maybe that is more important than the tools, but having the right weight tools always help
ReplyDeleteHi Dan, Josh, thanks for commenting!
ReplyDelete@Josh, my normal IDE is Eclipse, so my perspective is somewhat... warped :-)
@Dan, you're absolutely correct. This comment on HN puts it across far more succinctly than I did in this post.
My perfect development machine would be a netbook but with a non backlit screen, like the new pixelqi one, similar to eink. You could work out in the sun.
ReplyDeleteHmmm... funny you should say that - I recently bought a 30" Dell screen because my 24" didnt have a high enough resolution. Eclipse takes up a lot of space when you have all the sidebars on etc.
ReplyDeleteIf i was on a notepad - I think I would have to strictly stick to vim.
Funny, I am doing the same thing. Probably 70% of the development time is spent with no internet connection. It is actually frustrating because it is so horribly slow to do things like run test cases or whatever.
ReplyDeleteThe difference though is because this is a side-project I spend more time thinking than writing due to time constraints. And that is where the gains come from, not from the slow computer.
Well, at that time it was said that the developers within NeXT (the company that is now Apple) used to be given small, slow machines with the very purpose that they think hard and make sure the stuff they write performs well on the smaller configurations.
ReplyDeleteSo there's more to it than just being forced to think.
Next thing, you'll be developing your code with pencil and paper and only then type it up. Like people did with punchcards in the seventies.
As a proponent of having as many monitors in front of me as humanly possible I was coming into this article skeptical, but as Dan Agle put it, the article is all about the thinking out process which is forced upon you when you work in an uncomfortable environment imho. I'll try doing more of that in front of my three 26" monitors.
ReplyDelete@kindly: - in the park, preferably...
ReplyDelete@Dmitriy, this is the point, yes. The post was inspired by me observing the same effect :-)
@Neil glad you got something from the post :-)
You're going to hurt your back, hunched over a tiny netbook typing.
ReplyDeleteNetbeans is a light-weight ide? Maybe I haven't used it in a while but it was awful last i had a chance to.
ReplyDeleteI agree with Sean. Software development is a profession, where you should take care of your health. 99% developers in the IT companies have their desktop towers with 2 monitors, orthopedic chairs...because after many years you would look like Smeagle from Lord of the Rings...
ReplyDelete