I am a software engineer who does a range of development on an Ubuntu desktop at the moment. I mainly work with PHP, Python, Ruby, Java (including Android dev), C, and different databases such as MySQL, PostgreSQL and MongoDB. I run a VM to do my IE testing when I am doing web development.
I need a fair bit of memory and fast storage more than a blisteringly fast CPU when I am working with IDEs and working with large database datasets. I also need a fair bit of space on the disk when I am working with large database dumps.
The packages I use would depend on what development I want to do.
- When doing PHP/MySQL, the basic LAMP stack with xdebug and PEAR is great. If I need to do profiling then I install kcachegrind. MySQL workbench is available in the 12.04 repos too.
- When doing Ruby I always need ruby-dev installed alongside ruby, and ruby-gems is a must.
- When doing Python, easy_install is a must.
- When doing Java, a JDK is a no brainer, I think 12.04 has openjdk6 installed by default anyway. A nice addition is the openjdk-6-doc package. The Android SDK would be an addition to this for Android dev. I always end up using Eclipse when doing any Java development.
- I always seem to need buildessential installed. Not just for C development.
- Eclipse would be a good IDE to install because it covers a lot of languages. Installing a good terminal editor like vim would be very useful too.
The level of documentation I'd like to see would be like the Ubuntu wiki. In fact, it would probably be best to just rely on the Ubuntu wiki, as it discusses setting up development environments and servers really well. Perhaps Dell could contribute directly to the Ubuntu wiki.
In my development PC I have found the perfect hardware to fit all my needs are around the following:
- 8gb ram, useful for database work and running VMs
- SSD, useful for database work
- A half decent CPU. I run a 2400k, but that is much more than what I need.
- Good battery life. If I am developing at work or home I will have a desktop, and I believe most developers do anyway. I see a laptop as mainly an "on the go" development platform, more than as a desktop replacement.
- GPU with good video output. If I am developing on a laptop, I will always plug in a secondary monitor where possible.