Ultimate Software Developer Setup?
wicked coding asks: "I'm a professional software engineer and I'm planning on building my ultimate setup for longer hours coding and hacking, but I'm kinda stuck when it comes with what to choose. What hardware would you choose to use, if money was no object? Obviously there may be some constraints on space. Leave no stone unturned, I'm looking for suggestions on desks, seating, lighting, keyboard and pointing device, monitors and even the computer system itself. Ideally it needs to be as comfortable and ergonomic as possible. What software would you choose to use, if the intended targets were Java and OO PHP5? Currently I'm using Eclipse on Gentoo. Is there a more suitable IDE that works with most popular OSS (and not so OSS) languages including XML, SQL, CSS, PHP, Perl, Java, and C/C++?"
If you think you're going to produce better code by splurging $$$ on a shiny desk, maybe you should give up programming.
The accessories you need are a pile of paper and some good pencils, with which you can design your code nicely before you even fire up your IDE.
You need to prioritize. First worry about your fingers, eyes and arse
1) Get a slick 1600x1200 or better LCD screen
2) Get more screens to broaden your field of view
3) Spend $100+ on a really good keyboard. I choose Happy Hacking.
4) Spend $500+ on a really good office chair (or $5 from a failed startup)
With this as a starting point, you can feel physically comfortable, freeing you to address your mental confort.
Evil people are out to get you.
Is my personal favourite.
:wq
What hardware would you choose to use, if money was no object?
More people on your team...
"All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
The one thing I'd count on for development is using virtual machines to host test different target platforms. If you'll be developing primarily for one platform/environment, you can still use VMs to simulate the different machines of the production environment for testing purposes--clients and servers.
Personally, I like VMWare, but I'm in the Windows world. If you're going to be developing and distributing exclusively on and for Linux, you could use something like Xen.
Regardless, I'm hooked on virtual machines, and highly recommend using them for your work.
A lot of things you mention I don't care much about. But I recommend ridiculous amounts of RAM. Even if you get more than you think you'll need, you'll find a use for it.
My latest giant RAM sink is VMWare. I run a virtual copy of Windows for browser testing, and a couple more for virtual servers. Virtual servers are much better for testing than real ones: when you're done trying something out, you can revert the virtual disk back to a known clean configuration.
I'd recommend just taking a trip to your local computer store and trying out the best they have to offer in terms of keyboards and mice.
If you have extra pennies to spend, consider more than two monitors (and their associated video cards). There is a real sense of 'space' when you can spread your GUI based apps over a number of displays. (Personally I think it helps reduce percieved 'stress'.)
Also consider getting the most powerful system you can afford. Having a window open slowly is just depressing. Fire as much raw CPU power/speedy disk/ram as you can at the problem and app/window opening should be faster than turning the pages in a book.
Last, but most importantly, make sure the system is quiet. Theres nothing worse than sitting next to the desktop equivalent of a Boeing 747 all day.
Ripping an new rectum in the fabric of spacetime.
Not stop playing on your big brother's computer before he finds out.
Honestly, I'd have given you a real answer if you had included a real budget.
If money were no object, that's what my setup would consist of. A dual G5 and a 30" cinema display (2560 x 1600 resolution!). The apple pro keyboard is sufficient but I would upgrade to a laser mouse of some sort (Maybe one of the new 5 button bluetooth intelli laser mice...) Between OSX and Virtual PC you can test your code in both Windows and OSX. OSX also has x11 if you need it. You mention PHP so I'm guessing you're doing a lot of web development... with this setup you can test every browser Apache AND IIS, Windows AND *nix. I'd buy a license of Zend Studio for PHP development as well as a copy of BBedit (I use both, BBedit has some indispensable features). As for the physical environment, you can't go wrong with one of these: http://www.sittingmachine.com/ Pretty much the most comfortable desk chair ever.
Kiteboarding Gear Mention slashdot and get 10% off!
Seriously though, it sounds like you're trying too hard.
Don't build a desk that's comfortable enough to spend huge amounts of time at, it's not healthy physically or emotionally. If you plan to waste your hours at your desk, you'll do it, whether or not it's good for your career.
Paper and pencil are nice, but for some things, the big-ass whiteboard is really handy.
I want a multimonitor setup, but I have a caution here. I currently have a TV running most of the day to the right of the computer monitor. I find that if I shift the direction of my eyes instead of turning my head to watch the TV, my right eye feels sore by the end of the day. Pay close attention to how you feel.
Contribute to civilization: ari.aynrand.org/donate
For $500, it'd better have an integrated toilet. If you're writing for hours at a time, you won't want to be bothered with bodily functions. Auto-flush capabilities would be a plus, because you don't want to stop hacking to tame the smell that would destract from, well, hacking. Hire a nurse, too, so she can feed you Bawls intravenously so you can work FOREVER.
Repeat after me: RAID != BACKUP.
I have a CVS machine, I backup every day the whole CVS repository, onto another server and my laptop. If you change something, and weeks later you find that it screw something else, CVS (or other versioning system) is a life-saver, I need more than the latest source code I'm working on. You cannot get this with a RAID. As for storage, I use Eclipse, which is 200 MB in my install, my source code after about one year still fits in a floppy disk (including all of the database schemas). So I wouldn't say that storage is a big need. RAM on the other hand, yes. I used to work on a two monitor set-up, then I got a Mac, and have been very comfortable with one monitor and Expose. But yes, a dual head setup can be nice.
please excuse my apathy
I'd like to point out that a RAID array is not a backup!
I had a raid array set up on my computer. You know, when the PSU starts lettin' the smoke out of your motherboard, there's a good chance that RAID means "Redundant array of inoperable disks". You always need an off-computer backup. No matter how many disks you have in your array.
In fairness, if parent didn't put the disclaimer in his comment (bitching), there would've been 20 people responding that had no idea what he was talking about saying that Windows does so do multi-tasking.
I'm a big tall mofo.
I'm planning on building my ultimate setup for longer hours coding and hacking
Planning on hacking huh?
If you mean by hacking, hacking into other computers, I think a nice jail cell would make a great "setup" for your activities.
You've never had a real development job, have you?
monitors: two of the normal aspect ratio dell 20" monitors, although i imagine the wide screen 24" ones would be a step up. or the apple cinema displays. i'm not sure three monitors give you any added benefit when they're very large, seeing as you'd have to either move back or turn your head quite a bit in order to make use of them.
mouse: logitech mx 1000. it does not have the email notification lights that the mx610 does, but it doesn't require batteries. the wireless base station also serves as a recharging dock.
keyboard: old IBM clicky keyboard all the way, although keyboard preference is highly subjective
Wow, almost nothing you said here is true. In general, CRTs are brighter, more contrasty, and have more accurate color representation than LCDs. They may not look quite as sharp, but they can change resolutions and look just as sharp as at any other resolution and response times beat LCDs any day. While the disk is your biggest bottleneck and RAID can help alleviate it, it's not the RAID level you're talking about. RAID 1 (Mirroring) merely mirrors your data on 2 drives, it does nothing to speed up reading/writing and in fact may slow it down some. A RAID 0, 5, or 0+1 will help out with speed but each of these has their own drawbacks.
Here is my guess at the point you were trying to make...
"It's better to be uncomfortable at a desk so you won't be tempted to stay there for a long time. Instead you will get outside more and spend more time being social."
That almost sounds right except for:
1) The poster said he is a "professional software engineer". Most likely, he has no choice but to sit at a desk. If he was some Everquest addict then you might have a point.
2) Sitting comfortable is healthy. Back misalignment and carpal tunnel syndrome is unhealthy. That is why when you are uncomfortable you feel nociception. Nociception is your body's way of alerting you to physiological damage.
Whiteboards are awesome. When the solution won't come together on the screen or on paper then a whiteboard can be a real hammer. Its a mystery why it works so well but it does.
.. get a Hardware Lisp Machine.
:-)
I got a Xerox 1108 in 1983 - a superb development system.
At the present time, I would suggest flexibility. For me, this means having a server were all of my design artifacts, code, etc. are under source code control. Then, no matter if I need to use a Mac, Linux, or Windows box, I can get the environment that I need almost instantly.
If you do a lot of Java work, think about investing in IntelliJ - it is better IMO than Eclipse and NetBeans.
For Lisp, currently I like the Linux-SLIME-Emacs-SBCL combination (and free!), although if you want to deliver small fast executables, Lispworks is great.
VisualWorks Smalltalk has a good deal for small developers: for $500/year you get all their development tools (great web services support, etc.) and the $500/year is a prepayment on royalties. It is an awesome environment but I find Smalltalk a hard sell (everyone wants their stuff delivered in Java).
For Ruby, I think that Eclipse + the Ruby plugin is a pretty good combination.
I live about 100 feet from a trail head, leading to wilderness area: that is the best "add on" for my coding environment because I like to take lots of work breaks. For a physical trainer, I went top dollar: bought an Italian Greyhound puppy who lets me know when I have been working too much and not walking him enough. We also have a baby parrot who hangs out a lot with me (shoulder, back of chair, or top of flatsceen monitor) - he is very little trouble and adds something nice to my work environment.
I work out of a home office. My wife insisted that I get good office furniture (great orthopedic chair, nice teak desk, etc.)
Good food: I like to take a lot of food breaks while I work. My wife and I have a fine recipes web portal (CJsKitchen.com) and one of us is almost always making something tasty because that is our main hobby. Good nutrition and exercise are important for coding or any other intellectual activities!
My last bit of advice: enjoy coding
Well let start with the basics, the computer(s). I would sugest that you get a separate system for each platform you want to develop for, don't get the latest and greatest system unless you are going to make a program that will take years to develop and by the time it is done the best model will become the standard. But go with the Normal Systems, For PCs 3-3.5 ghz P4 and a comparable AMD is more then enough. a new iMac G5 and a Sun Blade 150. This way you have systems that support most of the currently living platforms. Go with the medium video cards but try to diversify especially on your PCs.
Next Operating systems, Well there is Windows 2000, XP, 2003, and long^H^H^H^HVista when it comes out. 2 Different Linux Distributions like Red Hat/Fidora, and Debein or Gentoo. Free/Open/Net BSD, OS X 10.2-10.4, Solaris 8,9,10 for Sparc and Intel. On the Intel systems I would strongly suggest VMWare so you can have many test environments and different OS.
Next Displays The bigger the Better, the more screens the better. The more text you can fit on your screen the easier it will be for you to view code even ones that are well nested. Also get ones with clean display LCD are good, with anti glare.
Next Keyboard, Get a keyboard that you really like that feels good to you and offer the appropriate feedback. While you do a lot of typing I have rarely seen a programmer write programs like writing a paper with constant typing. So get what you feel best with.
Mouse, a 3 button, 2 button and scroll wheel, Mighty Mouse. Don't try to use anything with to much features as a programmer you will design your program to work with your interface if you have a too complex mouse your application my not work well with normal people.
KVM Switch. You don't want to be cluttered so a good kvm switch that allows you to swich platforms and use you favorite keyboard and mouse.
A stable File Server. You will probably like having a good file server with a large drive, mirrored! and Gigabit Networking so you are not copying files all day.
A Good Color Laser printer. Samsung has a good one for $500 bucks but if you are an HP Guy or a Xerox guy, Laser Printers while cost more then an ink jet, offer lower cost of ownership, You want color so when you print your code with syntax coloring your printed code is in color and helps you track threw it easer.
Large and adjustable desk. You want to adjust the angle of your keyboard many times and large enough to have many papers on it so you can track information.
White Board, whiteboards are great for short term flow charts, and working threw problems, or having a to do list. A big one adjusted so you can access it threw your chair.
Chair. The perfect chair is near impossible I would like to have 3. First the kneeling chairs for good posture (Perfect for deadline coding), second a good executive chair (For the reading and analyzing paperwork, and documenting code ) , then an easy chair (For working out problems, and waiting for long compiles)
Lighting: Standard Florence ceiling lights (Well maintained with no flicker), A large window for natural sunlight, A project spot light, and a spot light facing upwards. The Florence light combined with large window helps brighten up your day and the Florence light reduces the shadows from the window, but if it is dark or cloudy outside then use the spotlight faced upwards for mood lighting, and use the spotlight facing down to help you focus on what you need to do.
All the phones in the office should not ring loudly or play anything extremely distraction. a low pitch phones work best.
Privacy, if you in your office that is the best if not go with tall cubical wall and let them have 4 corners (3 with a window side) and a door, at least for me I like to take 10 minute breaks every couple of hours and I prefer to lie back in my chair and rest my eyes, and when I am in a good private environment I can avoid people distracting me saying that I am sleeping on the job.
Proper Temperature. Not to hot where you are sticky and uncomfo
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
I don't know... I hear you on the ergonomic things, but then I don't think comfort, in general, is conducive to good programming. Having the right desk, the right light, the right chair, the right mouse, etc. - IMHO these are all distractions. and of course if you have no injuries or other physical limitations, etc.
When you need to do good work, you need to eat healthy, lay off the caffeine and alcohol, and get the sleep you need. and ideally, get some exercise. Get out and walk or do pullups or something while you think. That doesn't cost money. Then you can do great work anywhere.
must... stay... awake...
The parent specifically says he's doing BUILDS which eat up all the CPU...
Then this idiot AC says "Rah rah rah VMWare" and gets modded +1 Informative?!
Sigh...
+++OK ATH
Monitors, monitors - everybody says monitors ... Want to get some serious hacking done ... a four port KVM to one nice 20" LCD (or better.)
I strongly doubt there is a KVM in existence that doesn't noticeably degrade video quality. The degree to which it's noticeable may vary from person to person, of course, (in the same way that some people claim a 60Hz or 75Hz CRT flicker is "just fine"), but KVMs can't be part of any ideal setup unless the noise from running multiple systems becomes an issue. In that case, I would suggest building a server room and making use of KVMs (as opposed to VNC, etc. approaches), but only in a limited context.
Hot-key over and use the browser from another machine.
And when the awkward hotkey combinations, beeping, screen blanking and possible confusion as to what's connected where gets to you? LOL. The guy is looking for a dream setup to do programming, not systems administration.
Seriously, for the price of a good quality KVM, the requisite cabling and addressing any possible connection issues, purchasing an extra LCD monitor is almost always the better choice.
The thing about this: I think our minds are distracted somewhat unconsciously. Every time the hard drive whirs back up, I'm more likely to become distracted, and more likely to let something slip, but it took me a long time before I recognized this pattern.
+1 for IntelliJ IDEA. Its refactorings and intelligent features simply blow Eclipse away. In my opinion, that's the difference between something that's been built for doing its one job extremely well (IDEA) and something that's been built to be a "platform", extensible with "plugins", more of a "framework", etc. (Eclipse). If I'm faced with a stubborn screw, I want an extremely good screwdriver. Not a tool platform onto which a trurning assembly can be added, which can be extended with a screwdriver plugin - which can only be installed, if you've also got the Hammer Extension fitted, though. Oh, and if this screwdriver costs a few quid, as opposed to the hamm-screwy-turny-platform thing, which my granny gives me for free, I'll still prefer the right tool for the right job any day. -- OK - I'm finished; the soapbox is available again. Who needs it next? Dan.