I feel the new MacBook's keyboard is poorly done. Surface Pro is good, but not sure about Windows environment for development. What according to you is the most suitable machine for developers?
Surface Pro is good, but not sure about Windows environment for development.
I love using my Surface Pro for web development... because I do my development in a Linux VM and can still use Windows.
It's a full power but highly portable machine. It's versatile. I can also use it as a tablet. Unlike a laptop I can switch to a vertical portrait orientation if I need to test something or want a tall split screen. I can sign documents with it. I can read and highlight technical books. I can run Photoshop or any other Adobe product if I want to.
The only downside is that the battery life is not amazing. If you're going off-the-grid for long periods of time then it's probably not the device for you.
Hashnode is a friendly and inclusive dev community.
Come jump on the bandwagon!
💬 Ask programming questions without being judged
🧠 Stay in the loop and grow your knowledge
🍕 More than 500K developers share programming wisdom here
❤️ Support the growing dev community!
One dependency that's hard to work around is if you/your designers are tied to Sketch, which is still Mac-only (Figma is a good cross-platform alternative if that's viable).
Otherwise purely for web development Win10 with WSL is a capable dev machine; almost exactly the same tooling support as a Linux machine but with the added advantage of IE11 and Edge ready for testing without VMs.
"Best" is extremely subjective. But I would say that Win10 works fine, so if you can't stand the mac's keyboard (and you sure wouldn't be the only one) then it sounds like you kinda know where you're going already ;)
I'm not fond of laptops for coding, it just seems less fast and comfortable due to small keyboard and screen and lack of mouse. They're also expensive, and I don't need the mobility. If you do need to be mobile, disregard this answer :-)
Besides that, I prefer Ubuntu for coding, but Windows is also workable. Those are the only two I tried. For hardware, I'd say save on GPU and invest in RAM unless you're doing webGL stuff.
I haven't had a chance to try the new MacBooks, my late 2013 is still running beautifully (and plenty quick & powerful for years to come), but if I had to buy a new laptop and wasn't impressed with the latest revisions.. I'd buy a decent PC laptop and run Linux, personally. Probably a Debian or variant as that's what I'm used to.
But then I can't stand working on Windows as it's too inconsistent and fiddly for me (I'm also autistic, so it's not just a religious opinion in the way some seem to express themselves).
However, personal preferences aside, you really need to consider what is most appropriate for the type of work you are doing. Are you going to need to use Adobe products now or in the future? If you do, will you be able to? What about other commercial closed source products that may not be available for Linux? You can run some things with Wine of course, but it's not a silver bullet and you run the risk of updates breaking compatibility. Will it be sufficient for you to dual boot to Windows should you need to do some things? You could also run Windows in a VM, but would you be happy with the performance?
Lots to consider, but essentially you need to weigh up your preferences against the technical requirements and decide just how much headache it might cause.
Never quite sure where people get this trepidation about Windows for development. The content creation tools tend to be there and rarely anywhere else -- the majority of your end users are going to be on Windows -- so you should be using windows at LEAST for testing REGARDLESS, so what difference does it make if that's your host OS?
Much less you should have VM's installed of other OS so you have some clue what they do to your page anyways, what with the differences in font rendering technologies and how some browser engines (like gecko, the engine under Firefox) behaves differently on layout across platforms.
The font rendering in particular, there are a LOT of fonts that look acceptable on OSX's blurry "everything is bold" renderer that look like ass on Windows cleartype. See the oh so popular but ultimately a middle finger to users that is Google's "Raleway" font and similar "thin glyph" faces.
Saying the Quackbook's keyboard is "poorly done" is a bit redundant.
1) it's a huffing notebook they are universally trash (excepting perhaps the MSI GT80)
2) and, well... to be frank it's built by crApple -- which means it's rinky poorly cobbled together overpriced steaming pile of manure that is likely to break if you sneeze in the same room, and they'll tell you to go f* yourself when it comes to getting it fixed... assuming they haven't ripped you off with components that don't even meet the advertised specifications, intentionally neutered hardware, or a Xeon that is stuck thermally throttled down to Core 2 speeds.
Between their COUNTERINTUITIVE UI (there I said it) piss poor manufacturing and design, ridiculously absurd price gouging, crappy slow OS with a near useless interface, I really have to wonder what the f* is in that Kool-Aid. That they have a cult-like following and thrive entirely on a perception and feelings instead of facts? Well...
Mind you this is coming from a guy who used to be an Apple Certified Repair tech during the G3 and early G4 era's... they're shit by every meaningful metric. They've always been shit and they're always going to be shit!
But again, I say that design is engineering that incorporates art, and what crApple does is the same "artist under the DELUSION they're a designer" bullshit we see from the asshats who call themselves "web designers" and don't know anything but Photoshop.
Laptop computers on top of the shitty keyboard are also out of the running in terms of screen real-estate and uncomfortably close viewing distance.
You are going to spend HOURS on these -- on the keyboard, on the mouse, in front of the screen, and if you are SERIOUS about that it means finding the best seating position (good business chair, I suggest mesh back so it can breathe), good keyboard height (lower in a tray not on the desk), good neck position for looking at the display (slightly upwards or straight, NOT DOWN), and comfortable distance from the screen so you don't give yourself unwanted eye strain and headaches (three feet should be your minimum, part of why touch screens are epic /fail/). Sit back, bump the font sizes to 8514 / Large Fonts / Win7+ medium / 120% / 120dpi / 20px / PickANameNotYourNose or higher as the system default (also important for testing your elasticity of design -- aka using EM instead of going full Pakled with pixels) instead of making it so in five to eight years you're wondering why your head is pounding, you're constantly nauseous, you've got carpal, and your back hurts.
Also why I would suggest a proper mechanical keyboard -- one with Cherry Blue's should be the minimum, and the outemu equivalents aren't bad. Green's are better, and the price on mechanicals is no longer prohibitive, and if you spend the three bucks for some of the little silicon o-rings to soften the keystroke bottoming out. For a long time (close to three decades) I was a "IBM Model M or GTFO" kind of developer, but Cherry Greens + the silicon dampers (and custom keycaps for colour coding) can give a Model M a good run for its money.
You also should consider a thumb based trackball, like the Logitech M570. Once you adjust it's not only more accurate, and more functional than any mouse, it solves a lot of wrist and arm strain issues -- since you don't move either to use it, and requires a fraction the desktop real estate. (they also make really good media center PC remotes!) Even better are the old white Logitech Trackman Marble's as they have superior ergonomics (newer ones I'm stuck wondering where the pinky on the oven mitts I have for hands is even supposed to go) but both are entirely adequate solutions and far, FAR superior to mice for all sorts of reasons.
Screen real-estate is also important -- which means multiple monitors. I also suggest that if you're designing, or working with front-end design from artists under the DELUSION that they are designers, that you get different QUALITY displays on one system. Cheap displays don't have the pixel clarity, colour clarity, or colour reproduction capabilities of more expensive ones, so you should be accounting for that as well!
I run three displays on my workstation -- center is a 28" 1440p IPS, it gives me a lot of pixels and an idea what high end machines get for output. On the right is a 24" 1080 Samsung, which has excellent (though not as good as IPS) quality giving me an idea of the middle ground. On the left is a bargain basement "Envision" brand 24" 1080p display, providing an idea of what "normal people have".
All of the above are the things that SHOULD last you across multiple workstation configurations, and if done properly much of it should last you a decade or more.
Leaving just the system itself... and I suggest that you man up and learn to build for yourself. That way you can pick and choose the best and the configuration that best suits the task.
... and you do NOT need some bleeding edge i7 or Threadripper if all you are doing is web development. Core count is nice for those VM's as is plenty of RAM for the same reasons, but you don't have to go psycho with it.
In fact staying down low gives you what REAL people have, so you aren't tricking yourself into thinking something bloated, slow, and agonizing to use is in fact fine because "but it was fine on my 18 core machine". Same for the hosting side where having a lesser machine in a single user can often give you an idea what's going to happen on a laden server.
I'll often neuter my server testing VM's RAM and CPU shares (it's a 1:1 of most of my VPS host configs) to emulate that server load.
SO many developers basically screw themselves by having high end systems, then wonder why normal people can't use what they've made. I've seen it in every form of development from standalone AAA gaming to web development.
It also helps to build low-power. All those displays are gonna suck juice, and everything makes heat, so a processor with a high performance per watt is great -- that's why my workstation is a lowly Celeron J1900. It's a 2ghz quad core which frankly is OVERKILL for most of the development I do, but peak the CPU only draws 8 watts and can get by on passive cooling. (Though I do put a 120mm fan on it anyways). This has the added benefit of keeping my electric bill under control, since every penny counts on a machine that -- again -- will spend hours a day under constant use.
... and all that is running Winblows 10, which after using classic shell and 7 task tweaker to drag the UI back into being USEFUL, is more than enough to do any development task. In fact most of the tools I rely on have no Linsux equivalent...
NOT that linsux is an option with the crippled hardware support, bizzaroland UI feedback (or lack therein, damn X servers suck), and piss poor font rendering and text kerning like a sweetly retarded rhesus monkey on crack. (On font rendering ALONE I cannot stomach most nix flavors for any length of time in actual development!)*
Linux is a great server OS, but as a desktop OS it's a crippled toy with a dearth of practical applications when it comes to content generation. It does a very good job of LOOKING like a modern desktop OS... unfortunately that's all it does is LOOK the part, since in many ways Linux desktop environments and Window managers haven't even caught up to Windows 3.0.