After much consideration and review, I recently purchased a 2017 MacBook.
No, not a MacBook Pro 13 or 15. I purchased the 12 inch MacBook. The small laptop that people say over and over again cannot be used for development.
This is a living review of that MacBook as used by a macOS/iOS developer.
How I Work
Whether I am coding or writing, I try and conserve motion as much as possible. My laptop is not doing 1000 different things at once. Nor am I continually compiling code or publishing my writing. Those actions are infrequent at best. Most of the time I am reading, studying, thinking and then, eventually, typing.
I sit and stare at the screen a lot.
Therefore, I am less concerned with the overall speed of the processor in my laptop than a gamer or video producer would be.
I do need memory though. Development tools are notoriously terrible about memory management and when you add in simulators, etc. to that mix, 4 or 8 GB of memory just isn’t sufficient.
I also need hard drive space. Projects get big with audio, video, and images fairly quickly. While I can make my projects fit onto the smallest drive, I would rather have breathing room if possible. I would rather NOT carry around external drives.
Therefore I settled on the MacBook with an I5 processor, 16GB of ram and a 512GB SSD drive. Not the absolute top end machine but pretty close.
I would have selected the I3 with 16GB and a 512GB drive, but it was not an option that was available.
Where I Work
I like having a “rig” that can work anywhere. That means having a rig that can work in the worst situation.
For me, at 6’0″ and broad-shouldered, a middle seat in coach on an international flight is probably the worst situation I will find myself in.
Therefore my rig needs to be able to work in a very small environment with no expectation of power.
I frequently will work from home, that being my home office or the couch. My home office is set up well with lots of room. I want to make sure my rig can utilize that room lest my wife decide that the broom closet is a better “office” for me :)
With that, I have an upper and lower requirement.
This is the smallest laptop in terms of footprint which means it will do well on a flight. I will report back on that one after my next flight.
USB-C, while not as great as Thunderbolt 3, is a very flexible port. With the docks that are available or even with Apple’s HDMI connector, I can set this machine up at my desk with a monitor, keyboard, trackpad and external drives. Those drives are limited to USB 3 speeds but that is plenty for development, back-ups, and repositories.
While I have not purchased a dock yet, I may in the near future and update.
With a monitor, Bluetooth trackpad and keyboard, this machine is a decent desktop unit. It drives an external display without issue.
What’s in the Bag?
My rig needs to be very transportable but fully usable in the field. The field might be a bus, a plane, a client’s office; sometimes even a racetrack. I am expected to ship code in all of those environments.
I want to keep the gear to a minimum. The less I bring, the less likely I am going to lose or forget something.
- MacBook 12
- iPad Pro 9.7
- Power for MacBook
- HDMI Adapter for MacBook (also a USB-A Adapter)
- USB-C to USB mini
- USB-C to USB micro
- USB-C to Lightning
- USB-A to Lightning
All of this fits easily into a proper waterproof bag that works well whether I am on a motorcycle or an airplane.
This is the part where the current state of iOS development is awesome. The fact that I can develop against my phone, tablet and watch without a cable is a fantastic advancement; I absolutely love it.
I do carry sufficient cables with me just in case wireless stops working (happens occasionally) or if I am not on a wireless network that is strong enough to support it; most of the time I code without wires.
When you combine wireless development with the crazy battery life of the MacBook, I can easily get in a full day’s worth of work (more than 8 hours) without needing to plug in a thing.
I am a few weeks into using this machine and so far the battery life has been shocking.
I pretty much plug in the machine at the end of the day. It easily lasts me all day doing wireless development. All day is more than 8 hours a day.
But read above. That includes a lot of staring at the screen, thinking, planning, walking away, etc. I am not hitting build every 2 seconds or intentionally trying to get it to burn its battery. Normal daily usage for me without caring whether I am on battery or not.
I intentionally plug it in when I am doing wired development and I suspect that wired development off the battery will have the laptop feeding power to the mobile device. I suspect I will find out on my next international flight.
The battery on this machine has really changed how I develop. Not watching the battery power through the day is surprisingly liberating.
Speed of Development
It is common for developers to look at pure clock speed when selecting a new laptop. In that department, the MacBook is definitely way behind the curve. If you look at just the numbers, you wonder if the MacBook can even run FaceBook in a browser or not.
In reality, the MacBook works extremely well. iOS, macOS, server and even Android development works just fine. Using both Xcode and Android Studio simultaneously offers no problem for the MacBook.
I suspect the upgrade to 16GB of ram really did the trick.
With the type of development that I am normally involved in, I do not work with storyboards often. Most of my work is at the persistence and networking layers, and therefore storyboards are rarely loaded on my machine.
However, storyboards do feel sluggish. Opening and working with a large storyboard is a test of patience but definitely doable. Given that storyboards are sluggish on my iMac as well, I am going to chock that up to storyboards/Xcode more than a deficiency in this particular laptop. If you are a heavy storyboard developer that item might give you pause. I suggest taking Xcode and a project on a drive to an Apple store and play. That one item could be a deciding factor for you.
This argument crops up every few years, and it is just repeating drama.
When the floppy drive was dropped; people lost their minds.
When the serial port was dropped; people lost their minds.
When the optical drive was dropped; people lost their minds.
When ADP was dropped…
When DVI was dropped…
There are more I am forgetting. Same drama, over and over again.
Look at the list above: I carry exactly ONE dongle with me.
I upgraded a few cables, switched out USB-A cables with USB-C cables so that I can connect to external drives and devices. Total cost was less than $50.00 (not including the dongle).
My external drives still work.
I can access every device that I could access before.
A few years from now people will be making jokes about how people used to carry so many different cables.
Connectors change; life goes on.
Being able to carry a full rig that is light enough that I forget I am carrying it is fantastic.
So far there are no regrets about the purchase and no hindrance to development. If anything, I am getting more done now because I am able to take this laptop with me everywhere without it being a burden.
Would I rebuild an OS on it? Not if I can help it.
But as a highly portable machine, it does great for development.