If you had the option to select a laptop for software development, and the options where between something portable like a very capable ultralight laptop, or a much bigger, and much powerful laptop, which one would you choose?
The specific models aren’t important really, as you might be reading this post many months or perhaps many years after and so the particular laptop models today, would be irrelevant in the near future. What’s important here is the idea of getting a much lighter but capable laptop for software development instead of getting a much more powerful laptop, with the drawback of being much more prominent, heavier and less battery efficient.
Why the need for portability?
As a software engineer working remotely 100% of the time AND someone who likes to travel and visit coffee shops, portability is something I’ve always appreciated when it comes to my gear. However, as I continue to get more involved with larger projects, the ultralight laptops I’ve used so far aren’t cutting it anymore. In general, laptops are much lighter and much powerful than ever before, but if you want or need a laptop with at least 32GB of RAM and a Quad processor, then you’ll have to compromise and get a bigger laptop.
Today, more and more people can work remotely, and many of them are taking it a step forward by traveling around the country or internationally and getting work done while on the road. I’ve done this a couple of times and while it isn’t perfect when it comes to communication with your team due to time zone changes, etc. it works well for many people as long as expectations regarding time and availability are well-defined between the members in the team.
Why is extra power important?
It is surprising to me that we’ve come to this place where our computing devices are much more powerful than before, but our need for power and computing resources and that of our tools also continues to grow. For example, if you have a Node.JS application using tools like a text editor (or perhaps a full-blown IDE), Webpack, Babel, etc. And then you also use it for video editing and other tasks, you’ll need a laptop that has at least 16GB 32GB RAM, one of the latest generation CPUs, and a fast NVMe SSD drive. Why? Well, unfortunately, some of these tools require a lot of CPU/RAM resources and fast I/O to run and if your machine doesn’t have a minimum set of requirements things are going to run very slow and inefficiently.
While I’ll keep using an ultralight laptop for personal use when traveling, at this point, I am also switching to a larger laptop for work, unfortunately. I cannot prioritize portability over performance when coding, not anymore. A while ago I wrote about the best operating system for software development but nowadays the operating system isn’t the most important factor to me, the actual hardware specs is king now.
Using something other than laptops for software development
What about using another type of device altogether? Like an iPad Pro. Well, I own one of those, and while they are mighty and we can now use them for much more than just browsing and watching videos, these devices aren’t apt yet to be used for full software development.
There is also the opinion that software development should be done using desktop computers. I don’t disagree with this. Desktop computers can be configured to be much more powerful than any laptop. Unfortunately, desktop computer anchors you to your desk, and while you could remote into it with your ultralight laptop and write code that way, the reality is that your experience and performance will be dependent on how good of an internet connection you have between your laptop and your desktop.
Having to remote into a Desktop computer to do software development feels like going backwards, this is precisely what many developers, including myself, used to do ten years ago when desktops were the standard tool for software development and we needed to do some work while traveling or just being away from our desk.
Why is portability important?
Today’s talent is everywhere, and you cannot expect to have everyone working at a desk in your office. At least not if you are looking for the best talent which can be anywhere. For today’s workers, having the ability and flexibility to work from home, a coffee shop, a co-working space, the library, etc. is critical and because of this, people whose job is to write code, design apps, edit video, etc. are in need of computers that are both very capable of handling these tasks and portable at the same time.
For now, I am choosing to go with a Lenovo P51 as my primary machine for software development. This laptop is a monster, a powerful monster that will allow me to perform CPU intensive tasks as well as having many processes running due to the large RAM capacity.
I’ll keep an eye on the lighter and somewhat powerful laptops like the Surface Book series and MBPs among others to see if they release a model capable of having not only a powerful processor but also include more than 16GB of RAM while staying on the lighter side.