Use of desktops are decreasing day by day in daily life but for coding purpose are there any reasons for using desktop over laptop?
Assuming you have an external monitor and keyboard to connect to your laptop the difference is small.
It is always better to work in a desktop like setting (bigger screen realestate, more ergonomic environment), but you can't take your work with you without a laptop. So if portability is important, get a laptop and a good external screen and keyboard to connect it to. Otherwise you might as well stay with a desktop.
I once worked with a contractor whose entire lifestyle was enabled by her laptop.
Her worldly possessions could fit into a couple of bags -- and one of those possessions was a Mac laptop, which for her was a magic box that made money appear. I literally -- literally -- was often unsure of which continent she was on any given day. Most of the time she was some place in the Argentina hinterlands where she found a good internet connection, but she could have been in San Francisco, or DC, or Hong Kong, or....
I met her in person, once. She was in town for a relative's wedding. I asked where she was heading afterward. She didn't know; either Argentina or San Francisco. She had everything she owned with her, and she'd decide tomorrow.
She did good work, too.
For me, I much prefer developing on a desktop; I loves my multiple monitors, and the physical environment is more ergonomically sound.
But when I (or anybody else) say some version of "It all depends on what your needs are," it's true. It all depends on what your needs are.
The major plus point with a laptop is portability, and that's a huge plus, but a desktop has the following performance and productivity advantages:
- Bigger screen. The average desktop screen is larger than the average laptop screen and you have the option of going all the way up to 30" or so. A laptop can do the same resolution, yes, but the pixels are tiny.
- Multiple monitors. Yes, the same thing could be achieved using a laptop and a USB/PCMCIA video card, but then you'd be tied to a desk.. defeating the point of the laptops' portability as they'd need to be at the same height to avoid getting a crick in your neck.
- Faster/Multiple CPUs. A desktop can have the very fastest of processors and more than one processor too. A top-of-the-line laptop has a fast processor, but it usually tops out at a Core i5 and never the fastest.
- Better/Multiple Graphics cards. A desktop can have multiple high-end graphics cards, possibly linked together.
- Lots of RAM. If you want fast response, you put in as much RAM as you can afford. Not having to swap memory gives a massive performance boost, even if you were using Solid State Drives.
- Choice of Keyboard. You can have a bigger keyboard with dedicated function buttons (Volume, Cut/Copy/Paste, etc) and even a split one for improved ergonomics.
- Choice of Mouse. You could even have a vertical mouse, trackball or graphics tablet, since you're already sat at a desk. It's hard to use a mouse
- Better Speakers. The speakers built into a laptop are very small and often cheap.
- Wired networking. No need to worry about Google Street View reading your emails if you're not using Wifi. If you've another machine on the same network (e.g. NAS device), it's a lot quicker to use Wired networking.
- Remote Access. It's easy to install secure remote access software such that you can get to your desktop PC from your Phone or some other PC. Many routers can be configured to wake up the PC from 'off' (not just sleep), especially if you have AMT.
- Faster/Multiple Hard Drives. SSD is the fastest, yes, but also expensive for lots of storage. If you're doing serious video editing, you'd want multiple hard drives, which is difficult in a laptop. Yes, you could connect a big USB drive to a laptop, but that's a hassle and can't easily be done in the airplane/bus/train.
- Better/More webcams. The webcam built into a laptop is often fairly poor compared to a decent HD USB webcam.
- Expansion. All of the above hardware items can be upgraded at any time without replacing the entire machine.
Very much depends on what you code, how you code and the tools you use/need.
My development projects...
- Are graphics intensive (2D and 3D).
- Are compute intensive.
- Require multiple IDEs and usually more than one instance each.
- Include large volumes of reference material...usually PDFs.
- May target custom hardware.
- May require CAD/CAM/CAE tools.
- May drive me to drink.
So, for me a desktop with several large monitors is more of a requirement than a choice.
I would also suggest that working from a loaded desktop with multiple 24" monitors is going to be the more productive choice regardless. Having your GUI designer, code editor and browser on separate monitors saves a lot of clicks and trips to the task bar remember: "Clicks take time and time is money"...is not just something your grandfather used to say...it adds up...plus...Coding, reading stackoverflow (aka: geekporn) and watching [some geek movie] all at the same time doesn't really suck.
Of course, at the end of the day desktop it is what works desktop best for you. desktop
Desktop. I need my keys to be where they are. When microsoft came out with that stupid "lets turn those Insert/home/pageup/delete/end keys around 90 degrees" I raged like never before in my life. Keep my damn keys where they are, I don't want your garbage. I want my Model-M keyboard I've been using since the days when Comodore roamed the earth. My keyboard gets a lot of wear and I end up replacing normal ones really frequently because the contacts break up.
I need more than one real monitor. I don't want to look at some tiny freaking screen, and I don't want to lug around a 24 inch screen beast that devours the battery life.
I don't want any special over-ridden "make MS Word open" BS keys. I don't need to hit F-Whatever and have my screens flicker around. I want a numpad. Don't screw with my freaking keyboard!!!!
I don't use the mouse often, but I'd sure as hell use one over the trackpad or that TrackPoint garbage. When I'm typing I don't want the side of my hand to touch the trackpad and suddenly the text cursor is all over the screen.
Why would you EVER use a laptop for something other than screwing around in class at college?
I'd go for laptops with external monitors. It's perfect for situations where you get tired of coding on your desk and you want to go somewhere else to code. You can also take it with you around the office in case you want to show or discuss your code with your officemates personally while not having them go all the way to your far away desk.
Laptop with 1920X2000 pixel resolution and 4 virtual desktops.
Yes, laptops severely lack the ergonomics of a full keyboard but I'm addicted to the low tactile feedback needed to type. I can type faster on a laptop keyboard than a full keyboard any day.
Tossing it into a bag and going somewhere else to code is always useful too. Being a slave to your desktop can be depressing and makes me feel like breaking out sometimes.
As far as impact injuries go, I actually type on a laptop keyboard with my wrists at a 45 degree angle anyway. I'm not sure if that's normal for most but it just feels natural to me now.
The external desktop isn't really necessary unless you need to see a direct material reference while coding. Other than that, I don't see much use for it. Multiple virtual desktops do a much better job of isolating responsibilities.
I usually use 4:
- one for a web browser
- one for revision control stuff
- one for the IDE
- one for unit testing
I also make it easy to switch by assigning the super+left and super+right to cycle between the desktops. Only having what your working on on the screen at any given time makes it much easier to stay focused on the task at hand.
The extra monitors just serve to take up valuable desktop space that I'd rather use sketching notes down on paper. It's amazing how much easier ideas can flow on paper.
Laptop are more expensive for the same prepossessing power.
So, the real question is: could you (or your employer) afford a laptop?
You could get rid of must of the disadvantages of the laptops by getting other material for it; extra(s) monitor(s), docking station, keyboards and mouses, external drives, extra power supply, wipers, air conditioning, air bag and so on. But that make the whole package price differences bigger.
Desktop, hands down.
Throughout my time at university I used a low-spec laptop with Windows Vista for the majority of my development needs, and more often than not the pain of leaning forward, sitting uncomfortably on a bed and using it on a train isn't worth the convenience. Laptops are good if you're doing some quick document writing or surfing the Internet, but for anything serious it's really not worth it.
With a desktop computer, all these issues are taken away and left with how you sit, your mouse and keyboard layout, etc. Nowadays I'd never choose a laptop over a desktop, unless my company were to give me a laptop for free for remote work.
In the end, I typically opted to stay behind at university and get work done on a (slow) desktop, rather than work on my (slightly quicker) laptop.
Laptop! If you are having back problems, repetitive stress, carpal tunnel problems, or whatever, then you're doing it wrong. You are programming for too long at a time. Sit on a couch, change positions frequently. Get up and down off the couch. Get a coffee. Go for a bike ride at lunch. I'm sorry but carpal tunnel and stuff comes from using a computer for too long in the same position. It means you're working too hard and not moving.
Laptop! If you're too poor to afford a laptop, or your job won't buy you one, then you should get a different job! Hello! Programmers are supposed to make a lot of money!
Laptop! Why do people need so many monitors? I understand you have lots of programs to open, but do you really frequently need to see more than two at once? You don't need 10 monitors. It honestly doesn't make you look like you're smarter. You look like a super-dork with all those screens.
Laptop! For heavens sake do people really still uses mouses? That's adorable.
If you can't afford a high-end enough laptop, get a desktop. 3 or more monitors - desktop. Ideally, I would only program when sitting at one desk, but it doesn't always work that way.
I don't have an office at work, so sometimes I steal a conference room and use a laptop. Some tasks are mundane and can be done watching TV. Others, require seclusion. Never know when you have to program on the train or some off-site location.
Laptop, if you know the key commands to switch windows you can "simulate" the experience of multiple monitors anyway. In addition, you don't have the added overhead of moving your head/eyes to focus on some other point, you just look at the same physical space in front of you while switching what is in that space quickly.
I also used multiple monitors for a time and found that the process of managing those monitors and all the open windows/applications etc to be more difficult than doing it with just one screen. That's just me though :)
I do not like being stuck in the house all day. I actually try to stay out most of the time. I live in a city so I can go to a few diff coffee shops or wherever and code. If I am actually at the house, much easier to lay on the couch or something.
Just make sure you get one with high resolution. Preferably an apple macbook pro or dell studio with 1920x1200 res. Just use virtual desktops. I literally hate sitting at a desk all day, that was the main reason I quit my 9-5 job in the first place! Plus you can sell your desk/chair/speakers or whatever else you probably have and create more space.
Just go sit at your kitchen counter/table/couch/chair/coffee shops. I could never go back to working at a desk all day. It's also much easier for meeting clients somewhere and showing them things, or of course traveling. I live a lifestyle somewhat similar to the lady going to SF or Argentina.