Surface Pro for developers


After a stroke of good luck (and some evil cunning) I managed to win a Surface Pro (128G) and I have to say, I’m impressed.

My home and work dev laptops (Lenovo 420S and Lenovo Carbon X1 Touch respectively) are both great dev machines, but they still fall down in regards to ultra portability for my long commutes. The Pro wins hands down there. 

There is of course the 2 major questions regarding being a suitable laptop. Firstly, can it run Visual Studio at a decent enough speed and secondly, will the screen be big enough?

Let me answer the second question first, yes, it will definitely be good enough while commuting or the occasional coding at a cafe/library etc. I wouldn’t want to do a 12 hour coding session on it, but chances are if I’m doing that I’ll be connecting it up to a decent monitor anyway.

As for speed, it’s performing better than I expected. Visual Studio 2012 (haven’t bothered with 2013 beta yet) runs smooth and responsively. As for compile time benchmarks, I’ve been compiling up my favourite project (Azure SDK for .NET, see here) on both my 420S and the Surface Pro (haven’t bothered with the Carbon yet, will do that soon). For smaller projects I was getting about a 40% increase in compile time by going to the Pro, but for decent sized projects the performance is far better than expected.

Lenovo 420S Surface Pro
8.11s 9.82s
8.13s 9.75s
7.78s 9.78s
Av: 8.00s Av: 9.78s

Which is about a 22% slowdown, which really isn’t bad especially given the fact that the 420S is an i7 machine with 8G RAM while the Surface Pro is an i5 with 4G RAM.

Still, early days with the Pro. I may learn to utterly love it and forget about my other machines, or I may decide that it’s not grunty enough for my liking…   but so far, the outlook is positive.



The OS installed on both machines was the Windows 8.1 RC.

Of course one major piece of todays software development is interfacing with databases, which (in a MS environment) most likely means MS SQL Server. Am thinking that either I’ll need to develop against a smaller/lighter DB (SQLite) or develop against an online DB (Azure Database)