How to get all the computer you need to become a developer
There is an essential part of consumerist culture that prefers buying something to doing something. Dog bored because you’re not walking it enough? Need a solution? Buy an $800 automatic pup entertainment center.
"100 yen laptops" by Steve Nagata
But, no really, you do not need a MacBook to be a developer, and you certainly don’t need a top-of-the line recent one.
If you don’t really need a fancy laptop, why do people think they do?
There are two big reasons that we convince ourselves we need a big fancy laptop:
- It is a convenient reason to not get started today.
Ever think it would be cool to be a computer programmer? To help shape the future of our industry? Wanna make twice the median American household income within 2 years?
Sounds great, right? The first thing you need to do is read about 200 pages on how HTML or JavaScript or something else works.
Bummer, right? All that work and study, when frankly you could open YouTube right now and get started.
But.
Surely there’s a reason that you can’t start right now. The sun is shining outside, you haven’t rewatched The Terror for a third time, and can’t you just watch one more TikTok??
We all have a part of ourselves that will argue for the status quo. That will tell us that we will always have the same job, live in the same place, that we should make it work with that lounge chair in the living that isn’t really that comfortable
That part of our brain lives off of telling us that self improvement can wait for another day.
And one really good excuse for not starting today is, “I don’t have $2,000 for a MacBook Pro.”
2) Some people do not want to see you succeed.
The labor market for software developers will be a seller’s market for the next century. In the next 10 years the number of new jobs created will outpace the number of new entrants into the market by a factor of 2:1. Yet there are still people who are worried about navigating competition.
Those are the people who will tell you, “you gotta learn CSS thoroughly before you start studying data science” or “it’s really hard to get work as a JavaScript Developer.” I won’t go into detail but both of these assumptions are opposite of the truth. These same people will also tell you about the $5,000 in gear you need to be a “real” developer.
But, doesn’t everyone at meetups have a MacBook?
Okay this one is true. Every single person at the meetup has a MacBook. Every person in the audience at the conference talk has a MacBook. They all have them. They all have them.
Why?!?!?!
There are two reasons for this, which gets me into making a sub-list inside a list but whatever:
There was a time when the only way to get the cool Unix command line and a modern operating system that could play MP3’s was with a macOS computer.
Remember how I said it was a seller’s market for labor in software? MacBook Pros have maintained their cachet as the most desirable laptops despite their terrible new keyboards. About 5 years ago managers started realizing that providing anything but MacBooks for their programmers was a sign they were being penny-wise (saving $1,000 on each employee’s laptop) and pound-foolish (alienating workers whom it would cost upwards of $50,000 to replace). But really the short version is: most developers use MacBooks because their employer paid for them.
Okay Toby, I believe you. What do you really need to be a developer?
I’m going to tell you something you’re not going to want to hear: you can start becoming a developer today. Here’s what you definitely need:
- Something that plays YouTube
- A web browser
- A legal pad
- A pen
Take YouTube over to The Coding Train, load episode 1— it will tell you when to open a browser to write some code. Write down words you aren’t familiar with or lessons that seem important on your legal pad. And BAM! You’re doing it.
Wait, Toby, doesn’t it matter what kind of personal computer (PC) you run your browser on?
Oh, reader, you could do this all on an iPod touch.
Okay... I’m not actually going to become a coder on a phone, what do I really need?
So, you’ll probably want a laptop with a keyboard to write your code. But seriously you can do everything you need to get started from a browser and it doesn’t matter what kind of computer that browser is running on. (well as long as it has the power to actually play those videos)
Another way to look at it is this: for the first few months you’re studying programming, you’re trying to figure out if this is something you’d enjoy.
Once you’ve been writing little JavaScript projects for a few months and really enjoying it, then it makes more sense to ask next, “what kind of computer should I upgrade to for programming?”
Okay, but, can you still recommend what kind of computer to buy?
Initially when I wrote this I was going to say, “don’t get a Chromebook”, but it turns out that web development issuper easy on a Chromebook so, seriously, get whatever kind of device you want.
What else do I need to spend money on?
I think there can be great value in paying for a coding boot camp or academy, though more on that would take up a whole article.
Once something like The Coding Train has taken you about as far as it can go, a good book is a very smart way to spend $40.
If you’re ready to spend a bit more and you’ve already shown evidence of being self-motivated enough to work at your own pace, definitely check out Wes Bos. Great material that takes its time and shows how anyone can become a coder.
What shouldn’t I spend money on?
The biggest thing not to spend money on, or at least not to spend too much on, is _hosting. _Sites like Bluehost will offer to serve your site and end up costing hundreds of dollars a year. There’s just no need to spend that much on your test applications or portfolio site.
Find a web service host that offers a low or no-cost tier, and has great documentation on how to get started, even if you’ve never deployed a web application before. Far and away the best service I’ve used is Heroku. I started there and use it to host some of my most high-traffic projects.
Heroku’s getting started guide is available in multiple programming languages and starts with the very basics. If you find the command line interface daunting, check out my guide on the CLI :)
Top comments (48)
I get it that this is a "sponsored" post and it's promoting one service ahead of others. However, I am a stout defender of the idea that you need to be in control of your personal and professional image. And for that, you need a personal website, that is separate from any other third-party provider.
You don't build your house on rented land.
Your account can be hacked. Their terms of service or policies might change. You can be banned without a way to appeal. There have been many data leaks from major companies and social networks. (btw. you should really check haveibeenpwned.com/ and see if your credentials are out there, in someone else's hands).
As soon as you can afford, get a traditional hosting package, try to get your given name as a domain and make at least a single page website. It will allow you to have your own email address (that is not from Gmail) as well as complete control over how you present yourself to the world.
Some say Heroku is a fast-n-cheap way to deploy a Rails app. I have a traditional web hosting account, your traditional LAMP stack in a user account on a shared host special. Looks like maybe I went too traditional on that one. But at least I have my own email domain, and my own little cloud for calendar and contacts. On the other hand, Heroku seems to be trending less generous with free tier and more into the upsell. At some point, anyway, I started getting a literally monthly email from Heroku that I've used something like 80% of my traffic, but this is on sites that I don't even use. Maybe search engine bots and referer spam or something are driving up the traffic. I dunno. Certainly there are no free lunches.
This is an interesting point! I really recommend using Heroku because it’s a nice intro to containerized deployment.
If you’re looking to create a portfolio or business site, I would definitely use a domain you own with Heroku, rather than a Heroku domain. That way if you want to leave Heroku later it’s just a matter of changing a record and taking your nice portable container elsewhere.
I'm not saying "don't use Heroku" or other stuff like GitHub. By all means, use everything available to you as long as you are aware of the cost (visible or hidden). But having a separate hosting account and a personal website I think should be a priority for any professional. Not just for developers.
You can get started with just free-tier of ANY service provider. Be it AWS, Heroku, Azure, GCP. ANY one with free-tier is fine. Heck you should set limits to dis-allow any billable usage. It will work fine. Put in money when you are going to make money.
Oh, if you feel that you are getting locked into any vendor service, remember the golden words of David Wheeler : ""All problems in computer science can be solved by another level of indirection".
I don't know much about Heroku or AWS or any of the other platforms you mention, but their free tiers all have a limitation on the time they are up. Does that mean that your website will be down if you run past the allocated limit? That can be acceptable for a sandbox where you learn to code. Not for your own website.
You can get hosting from the company that sells your domain name. Many reliable hosting companies start with a package costing around $5-$10/month. That's fast food money. If you can't afford that, you'll have a hard time affording to spend the equivalent of a few hundred dollars on a laptop.
If money is that tight, then sure... You need to hoard any penny you can. But don't look at hosting as an unwanted expense. It's an investment in your professional image.
Also, going from the beginning with your given name allows you to avoid issues later on in your career. What looks cool at 17 doesn't necessarily fit anymore 10 years later. Just ask Harry Roberts of CSSWizardry ;)
Depends upon what you want to build. A simple web-app with most of the logic running on browser and only some parts on server side can be built quite easily with free tier.
I know of AWS, it gives 1 year free tier and "Always Free" services.
You can put your compute part in AWS lambda or a micro instance and run it for free for 12 months atleast. You also get API gateway with some limits in free tier
You can put your static content (HTML+CSS+JS) on a public S3 or cloudfront CDN backed by a private s3 for 12 months and a 50 GB limit.
I am sure Azure, Heroku, GCP and Alibaba will have similar offerings.
It allows you to get started and learn and even demonstrate your work. Once you are confident, and sure that you want to stick to this line of work, may be start putting some small amount of money in it. These platform have a pay as you option so you pay only what you use.
Conflict of Interest information : I work for Amazon though my views expressed here are mine only.
Fair enough. As I said, I am not familiar enough with these systems to know what is possible to do when using them.
I would encourage you (or anyone else) to do some heavy research into hosting providers, as not all of them are created equal. Some of them are cheap for a reason. Things to research/ask:
If you're really strapped for cash but really, and I mean really, mean it, get a cheap Chromebook for less than $300 and run Linux on it. You'll be able to run everything you need to learn things like Javascript, Node, Ruby, and Python which can land you a job. Once you have a job, you can get yourself that awesome power station. ;)
(Edit) Great article, BTW! I strongly agree that our consumerist culture profits off the illusion of spend to not have to learn.
There are great older laptops available on eBay (or other similar marketplaces) that can easily handle any web development workload. Make sure there are at least 8GB of RAM and an i5 of 3rd, 4th generation or newer. If the storage is an HDD, swap it with an SSD for a massive boost in performance. Pick a trusty seller and you're done.
I have a Lenovo Thinkpad X230 that I've upgraded with an SSD and it works like a dream. It's a former business travel model, with reinforced chassis. Dell has similar models. I would pick a laptop like this over any new Chromebook of similar price. CPU power, RAM capacity, storage... they are all superior.
I've bought my corporate out of warranty laptop with similar specs for less than 200 dollars, installed Linux and couldn't be any happier. It runs butter smooth.
Another option, if you don't really need mobility, is to get yourself a desktop. Again, the market is flooded with office Dells and HPs with more than decent specs for less than $200. Add a decent display and you're done.
If anyone needs advice on picking up a PC or building one, reach out to me. I'd be happy to help.
I've read before that linux cannot be installed on some Chromebooks because of hardware limitations. So, I'd check that first before committing to it.
Chrome OS is based on the Linux kernel so it's very unlikely that a Chromebook wont run Linux. However, some Chromebooks have ARM processors.
Great post, this is definitely something that both beginners and experienced coders should read!
About the Chromebook part, if you're into Data Science you might want to check the Chromebook Data Science course, which is based exactly on the fact that you do not need anything super-fancy or super-expensive to perform efficient Data Science.
And lastly, about the website hosting part, may I suggest GitHub Pages? Simply code your website, push it to GitHub, and you're done!
Does anyone really think they have to have a Mac for non-iOS development?
I use one because I really like it. I got one at work because I begged for it. Before the keyboard troubles they were really good.
No, you don't need one (unless you're an iOS dev), but if you like them, and you can afford to get one, don't let anyone make you feel like you're lesser for it.
I carried an MBP for three years for work. My boss, at the time, hated all things Microsoft and forced us all onto MBPs. Consequently, I had to run VMware on it to be able to do the things I needed to do, because, at the time, a lot of the tooling I needed to use on behalf of my customers just wouldn't run native in OSX.
It was, overall, a Bad Time™. Apple's business repair support was beyond a joke. I got to be waaaaaaaaay too familiar with the spinning beachball. The thing ran hotter than any of my HP workstation-replacement laptops ever have (and those things are heat-beasts). Software that was ported to OSX usually did some combination of not work as well, had missing features and/or suffered bad memory leaks. The whole "we'll tell you how you can run your window manager/lay out your desktop" didn't help my feelings, either. And, dammit, I want a track-pad with actual buttons (preferably, more than one).
Really soured me on the whole Apple ecosystem. :)
Almost the exact opposite of my experience.
I've had terrible experience with HP laptops.
You should use what works best for you.
Most people tell me similar. However, no one's said to me, "yep: if you buy business class support from Apple, if a part fails, they'll have the replacement FedExed to wherever you happen to be within 24 hours (or a human on-site for more-complex problems)." Even getting a maxed-out HP and adding on the cost of that kind of warranty-service still results in a lower out-the-door price than an MacBook. That, if my MacBook fails, I have to get an appointment with a "genius" at the local Apple store – appointments which may not be available before my next work-day – just to get the MacBook seen (and, if there is an actual hardware issue, it has to be sent off-site) means that Apples just aren't suitable for someone that absolutely relies on the availability of their computer to bring in money. I've been through the laughable support that Apple offers. Never again.
I've never had to bring an Apple product in for service.
I'll never buy from HP again.
We can keep going like this all day.
Maybe they're sturdier, now, but the 2004-vintage MBP was not suitable for use by traveling consultants. The wear-and-tear of slogging through airports, daily setup and teardown at hotels and client-sites (and the slogs back and forth between them), they just didn't cope well with it. And the utter lack of meaningful hardware support means that they just weren't business-suitable.
If you don't offer on-site hardware support, you're not a supplier of business-oriented systems. Apple may have changed since then, but, they lost me forever with their "marginally better than Acer/ASUS/Toshiba/etc." level of service.
Great post, MacBooks are awesome pieces of kit, but they are REALLY expensive these days. Its one of the really great things about web development that you can get started in notepad, and it's good for more experienced devs to remember that everything is just an abstraction after that!
Get started on something less pricey, save your money, or spend the extra on a really good chair, you'll be glad you did!
Good post.
I agree, not everyone needs a Mac to code, but I think there is a much simpler answer.
Learn to code in the OS you are already the most familiar. That's it. Just because someone can code on a Chromebook, that doesn't mean someone should if they have used Windows their entire life. It's already going to be difficult learning a programming language, don't set yourself up to learn an OS at the same time.
Agree!
Here in Afghanistan, mostly students study Computer Science with a laptop that costs 200$ and works fine (at least till the 4th year of CS).
I remember I had a used HP Workstation, after the 3rd year I bought an expensive Dell laptop.
Now, after working for 2 years in the industry, I want to get a MacBook Pro ;)
I have a Macbook Pro. Never used it for development. I use it for recording and mixing.
I always used windows and before docker I would use virtual box if I needed a Linux environment.
Yes you can start on anything. But not anything is cut out for all types of development.
My computer requirements nowadays though turn out to be the following one.
At least 16gb or ram to run my virtualized environment with ease. That's it.
I do agree that you should use whatever system you want.
But I will admit that a lot of tutorials/training/whatever completely assume you have a MacBook. When I started looking at Docker the tutorial I was following said "Install NPM via terminal" and I was sat dumbfounded, now having to Google what NPM and whatever the terminal was.
I really wish it was easier for everyone to have a similar environment to learn on.
Really good point! Though now thankfully you can install npm just as easily on a Windows machine (the only error in that tutorial is saying 'terminal.' In fact I recently wrote a CLI tutorial for people in just this situation :) dev.to/heroku/the-cli-for-beginner...
My last laptop, I bought a roided-out "workstation replacement" laptop. Six months later, all of my programming activities had moved to a cloud-hosted lab-environment. And, while Firefox and Chrome both love to go to town on my RAM, even at 32GiB available, they stop becoming responsive well before they reach half that usage-level. Since I'm no longer running local VMs, the quad-core design isn't real helpful, either.
Very likely I'm going to dial-back my "requirements" on my next purchase. :p
All of my MBPs have always been employer provided. Nothing against Apple, but it is expensive for my budget. Personally I still use my 2005-06 vintage (HA!) T43 which I bought second hand sometimes back. It works great, modular and easy to repair if needed. Linux + Thinkpad all the way!
My humble suggestion to anyone looking for "learning machine" is to get an old Thinkpad or Dell. These are/were "workhorses", built to be worked upon for atleast a decade if not more. Ask the fine folks in NASA. They belong to the golden age of laptops of 2000s and early 2010s. Before iPads etc started to replace them in workplaces. They were bulk produced and bulk retired. Meaning they will be cheap as hell to buy.
And, oh, they keyboards are great! Just be sure to get a machine which was a bit "lightly used".
Also, install linux for all your shell needs. There any many guides and projects to run linux on "vintage" laptops. As a bonus you will get an environment that will be close to where you will run your code for real.
The first line is enough.
I don't understand why people think like that. And as this is not enough they think programmer who doesn't use Mac is not a real programmer.