Saturday, July 14, 2012

Selecting a high-end software development computer

Computers can be tagged as a multipurpose device. Nowadays it is being used in all the profession. Also, there have been lots of changes in the way computers are built in the present era. Their overall architecture evolves very rapidly. Someone from non-IT background asked me about the ideal configuration of the computer that he can own and my answer to that was “it depends”. The requirements and the usage scenario matters a lot while selecting a computer or a notebook. As an example, the journalist may need a computer to maintain the track of the notes and upcoming unpublished articles. The basic configuration is enough to satisfy his needs. On other hand, the software developer may need an advanced configuration because he is expected to run a whole lot of his programming software and some in background as well. Once we narrow down on our usage scenarios it becomes very easy to select one from the authorized reseller. Let’s discuss each and every component of the computer and decide upon the ideal configuration. We will also discuss some of the key terminologies used by hardware vendors for marketing their products.

Microprocessor (Category: Performance): As we all know it is the heart of the computer. It synchronizes the operations of all the hardware devices present on the mainboard. For a developer, the ideal processor configuration would be 3 GHz (minimum) because the development tools are getting feature rich day by day. These tools consume lot of CPU cycles to provide the smooth operation to its users. The processor L3 cache also contributes to the speed to some extent. The number of cores is equally important along with the individual core speed. This is due to lot of programs being run at the same time e.g. lots of windows services runs in background while computer is in use, anti-virus real time scanning, outlook for emails, some music, developer’s tools, etc. These softwares perform better when they are allocated a separate core to run them. Their stability also increases a lot if ran on separate core. The processor with thread level parallelism performs even better. This essentially means that n number of threads can run on the same CPU core and hence can utilize the core speed to the fullest. If the development scenario requires virtualization then the virtualization enabled processor can be selected. These processors are programmed to provide better performance, reliability and security while working on the virtual machines. The processors are categorized as 32-bit and 64-bit. The 64-bit processors are required in case the programs needs more physical memory to operate e.g. opening 3 GB log files from production environment or attaching a large files in the email or using lots of extension plugins to extend visual studio IDE, etc.

This lets us to put the configuration for the ideal development machine is: 3GHz - x64 – 4 cores/8 threads – VT

Physical memory – RAM (Category: Performance): The development machine needs more RAM as compared to a non-development machine. The ideal development machine runs lots of programs including virtual machines hence they consume more RAM. I would put in 8GB RAM as bare minimum requirement to run a high end development computer. The RAM speed – FSB (front side bus) is equally important for the RAM to operate at the speed of processor. E.g. 800 MHz RAM will waste more CPU core cycles as compared to 1066, 1333, 1600, 1866, 2166 MHz RAMs. The metrics to identify this efficiency is known as bus-core ratio. This metrics is associated with the processor because it defines the efficiency of the processor. The bus-core ratio can be explained as the number of front bus cycles consumed per number of clocks generated by processor. For a developer machine it is advisable to keep it to maximum compatible value. The RAM processes the data at 1’s of the clock. Some RAM’s processes the data at the positive slope of the clock only which are known as DDR2 whereas some processes the data at both the positive and negative slopes which are termed as DDR3. Due to above reason DDR3 performs twice as better as compared to DDR2. This helps us to categorized RAM as DDR2 or DDR3. The development machine shows up considerable responsiveness while running the softwares on DDR3 RAM.

This lets us to put the configuration of RAM as DDR3 - 8GB – more than 1333 MHz FSB.

Hard drive (Category: Performance): It depends on the number of softwares a development machine is expected to store. It contributes to the performance of the machine to a great extent. Based on their architecture they are categorized into two types: HDD and SSD. HDDs have rotating platters to store the data. The data is retrieved by the flux generated by rotating magnetic platters. The SSD do not have any rotating parts but it contains the chip design logic to store the data. SSD’s are 10 times faster than HDD but they are 4 times more costly. During the operation of the computer the major bottleneck could be the reading of the data from the hard disk in case of page faults. SSD can speed up the data fetch as compared to HDD and thereby improves the performance of the machine considerably giving better responses while doing software development.

This lets us to put the configuration of hard drive as SSD – 120 GB

Notebook screen (Category: Display): The screen of the notebook should be non-reflective while developing a software otherwise it may not be operated smoothly in the natural light. The non-glossy screens, however, reflects the colors in a dull shade. I feel this matters a least in software development scenario because software development is all about writing a code rather than building a user interface. This may not hold true for content writers or graphics designers and they may have to opt for glossy screens

This lets us to put the configuration of screen as 15.6” Matte finish

Graphics processing unit (Category: Display): The GPU matters a least in a software development machine. Let’s select the default option

Keyboard (Category: Operation): The keyboard is the equally important component while selecting the software development machine. Make sure the keyboard keys layout is exactly same as the one you are using right now. E.g. placement of delete or insert key is not different otherwise you may have to put extra efforts to remember the new locations of each key. The keyboard may be a backlit one if you are going to work in dark. The separate numeric pad may or may not be present as it is seldom used during software development. Another important requirement of software development is the usage of the function keys. The function keys should not be clubbed with multimedia buttons otherwise the user has to press fn key along with function key to make it work while debugging or applying any shortcut using function keys.

Speakers (Category: Operation): Only if you are a music fan. Select the default one as there are no options available

Number of USB (Category: Operation): The number of USB matters a lot because some developers have a habit of using external mouse, keyboard, and USB modem along with USB headsets, printer/scanner, USB device chargers. Hence it is advisable to get as many more USBs as possible. The ideal count would be 4-5.

The excellence of the development machines lies in their individual components and hence they should be picked up with utmost care. The developer should avoid getting attracted by the marketing tag lines of providing a fastest computer on the planet. Instead have a look at the individual components and compare it with the other brands and select the one that suits your requirements. It is also true that the most advance computer of today’s date will get outdated 3 years down the line and hence needs to be upgraded or a new purchase. Hope the post covers everything to look for while purchasing a new development machine.

No comments: