I totally agree that there's nothing inherently wrong with working in Zeeland, MI. It's beautiful country.
But, working dev at Herman Miller is genuinely not a great role for a dev career. It's a textbook dead-end job. It's not "exceptionalism" to point that out.
Yes, he should have gotten in his car and headed to Chicago, instead of hopping a plane for SF. He'd even be able to keep his car. But he was right to leave.
No, I get the point of the post. I disagree with part of it, and I object to its tone.
The notion that you will do just as good with a software job in Zeeland, or Grand Rapids, or even Ann Arbor as you will in a major metro area is simply false. Below some threshold, you will do worse in lower-populated areas than in larger ones, because of labor mobility issues and reduced competition. Employers in small cities get better deals than employers in larger ones; that is, in fact, a good reason to start a company in a smaller city.†
I cited Chicago because it's less than an hour and a half away from Zeeland. You could do just as well in Indy, in Cleveland, Minneapolis, or Des Moines.
My tonal objection is simple: Spolsky was dead on in this post. If you are a junior developer in a back office job at Herman Miller and you are asking questions that indicate you're trying to do career planning, you need to get the hell out of Herman Miller and into a real software shop. They're all over the place in the US, but, sorry, they're not so much in Grand Haven or Davenport or Carbon County, PA.
† Just to head off a tangential debate: if you're at a point in your career where you're asking how to impress your boss, starting a company is probably not your best next move.
Well, fine, let's all move to a major metro area then; what's the population threshold it needs to be above in order for it to be worth considering? Sheesh.
I'm in no position at this point to debate the macroeconomic benefits or handicaps for software industry employment in different locales, but it seems ludicrous to state with such authoritative certainty that "real software shops" can't be found in whatever towns and smaller cities you'd like to cite, presumably just because they're not big enough or not renowned enough to make the shortlist.
Regarding tone: I think Spolsky's intended point was absolutely correct, but the narrative was littered with entirely unnecessary backhand comments related only to geography and not Ashton's prospects therein. This lines up nicely with all sorts of "advice" doled out on the interwebs about how you've just gotta be in one of these 12 (or whatever) blessed cities if you're in software, and surprised and sideways derogatory comments that are made if you're not. If it sounds like I'm somewhat pissed and sick of the drumbeat, that's because I am.
Grand Rapids is a moderately big city. But if you're picking cities, it's too small to target for a software dev career.
Ann Arbor is slightly smaller than Grand Rapids with a much better ecosystem for software developers. I had the pleasure of working there for 4 years. My advice is, if you're picking cities, don't move to Ann Arbor unless you're starting a company and can afford to do that serially in Ann Arbor (it's hard to consult there!) or are prepared to move when your company fails. There are, like, 4-5 companies within commute distance of A2 that can hire you, and they all know it.
Don't move to Detroit. You'll be eaten by packs of wild dogs.
Milwaukee is much bigger than Ann Arbor or Grand Rapids. But you'd be hard pressed to find someone advocating it as a good town to build a career in. Lesson to learn: the smaller the metro area you pick, the more important it is that the area be on an upswing and not a downswing.
Chicago is a big city. So is MSP. It's not insightful to say "go work in Chicago" since, as your post points out, "big cities aren't a salve for your career" (pphrase).
Madison, WI is about 3x bigger than A2 or Grand Rapids. Madison is, by comparison to most of the major metros in the US, a small town. But it has a great ecosystem of developers, a university culture, and lots of employers.
So let's go for cities like Madison. Madison is my threshold. There's an answer. Feel free to debate it, but let's not handwave; I'm not making an abstract point here.
I think attributes of a town are more important than size. I live in a 30k population town (Northampton, MA), but we have a college (and others in neighboring towns) and great culture, restaurants, etc. The downtown is extremely walkable and has a music/bar scene. I know of a few great software companies in town or very nearby (e.g. cemerick's company). The best developers would have no problem finding a good job here -- my company has no problem finding great developers.
We may have fewer developers and companies, but it's the ratio that matters. When I lived in NYC, I could identify great developers, but the competition for them was fierce. The same went for the best jobs. It was about the same level of difficulty in NYC as Northampton, MA for me to find a great job and once there to recruit others.
Northampton also has the property that Boston and NYC are both within driving distance, which means that, if you just can't find a job close to home, you can go job hunting in either of the cities. That would make a big difference to me if I were considering moving there.
Within driving distance, but not commuting distance. Springfield, MA and Hartford, CT are within commuting distance though. They both have huge insurance companies where you could get an IT job. And both have better jobs than that as well. It's all about how good a candidate you are -- you'll have far less competition for the best jobs.
Ann Arbor is an interesting town. This is where I first did consulting while working for Sycor, at that time second largest employer in AA. One of my clients was local, Domino's pizza. Another was telecommute in Boston, and for a short time, one of the Big Three.
Ann Arbor is a bit unique in that it is at once in the ecosphere of the Auto industry (the EPA measurement facility was at the time there--may still be) and that of the University of Michigan. There were lots of very odd small consulting firms, some very specialized.
Since then, Sycor was absorbed by BNR, Domino's Pizza has grown up (I suggested to the owner that he get himself a computer department). And most relevant personally is that one of my clients, based in Chicago, became a FTJ.
Both Madsion (Go Badgers!) and Ann Arbor have major universities, which probably spurs the developer culture. It isn't just size that matters. Of course, Silicon Valley has Stanford and Boston has both Harvard and MIT which is part of what makes them strong.
Madison has two things: a sizeable metro area with diverse employers, and a tech university culture. Ann Arbor only has one of those things, because the "diverse employers" belong to Detroit Metro instead of A2.
Indianapolis does not have a notable tech university culture (I hope I'm not offending Indy people with that), but it's large enough that it's employer base affords opportunities to be selective about jobs. I've never seen anyone recommend Indy as a good place to start a tech career, but I'm agreeing with the original article: it's doable in a city like Indy.
It's not doable in Grand Rapids, I don't think. I know people who live in GR and they're happy and they've put down roots and it seems a lovely place to build a family, but setting up shop in Grand Rapids is unlikely to be your escape from dead-end coding jobs.
While you're right about Madison's culture, I couldn't find crap for work there. MPLS has been much, much better to me.
The tech community there is much too insular: web jobs are nonexistent and everything else is pretty much biotech or through the university (Masters degrees then are a minimum requirement). I say this having interned around the town at a top design shop, with no workable industry contacts resulting from.
I have an in-law who works in the Grand Rapids area for sourceforge. He telecommutes. If you limit the scope of this discussion to exclude telecommuting then your right. However, thats not your only option.
The only think I know about Michigan towns is what I read on Wikipedia and see on Google, so you have me at a distinct disadvantage. Totally FWIW though, a stupidly quick googling (http://www.google.com/search?q=software+ann+arbor) reveals a fair number of software companies doing stuff from factory floor automation to RFID to iPad apps to circuit design to network management and analytics. Your "4-5 companies" phrase was surely hyperbole, but it would appear that there's worthwhile stuff going on in Ann Arbor. ("Worthwhile" being entirely subjective, of course.)
Besides that, all I can do is offer my own anecdote. I started Snowtide in 2001, failed badly (via circumstances and my own stupidity), resurrected it in 2004, and it's been profitable ever since. Bootstrapped from the beginning (the products we sell and the problems I'm interested are largely of little interest to VCs), we've grown (and shrunk -- last year was not fun) in Western Massachusetts the whole time. While we had offices in Northampton (pop. 28K according to Wikipedia), we hosted a series of talks; Rich Hickey came in 2008 (http://cemerick.com/2008/03/21/western-mass-developers-group...), and Ben Fry in 2009 (http://cemerick.com/2009/04/28/snowtide-informatics-welcomes...). We regularly had showings of over 30 @ 7PM on thursday nights, and closer to 50-60 for the Hickey and Fry talks (something that I know fairly popular groups in Boston and NYC have trouble pulling off) -- all remarkably pleasant, talented people doing interesting work, either for other local companies or as telecommuting contractors.
Perhaps it's the universities and colleges in the area that make it work – it's Massachusetts after all, so you literally can't drive for more than 10 minutes without passing another one.
In any case, when I hear people say (or, more typically, imply) that vibrancy in software community and opportunity is somehow naturally limited to specific geographies, I get a little irritated: that attitude might keep someone else (more like, many someone elses) from starting a company or taking a job in a locale that isn't on the "shortlist", even when locale isn't relevant to their success.
I grew up in a small town in the Connecticut countryside. I now life in the SFBA. Why? Because there are no software companies in my hometown. None. Zero. Zip. Nada.
I briefly had a computer-related summer job in my hometown, changing backup tapes and inventorying hardware for a local racing school. They were in the process of trying (and failing) to replace an antiquated event booking system with something new. I might have managed to finagle an actual programming job there, doing the job that their existing contractor was failing to do.
Of course, I'd have been working alone. Instead, I moved to California. In the years since then, I've worked with and learned from many amazing people. I'm ten times the programmer I would have been if I'd stayed at home.
Are there software jobs outside the SFBA, Austin, Seattle, Boston, and the other big hub cities? Of course, and if you find one, good for you. But if you're sitting in a dead-end job in a city with no better prospects, your only choices are to stagnate or to move. And if you're going to move, there's much to be said for going where the jobs are.
In my home city there are a few software companies, even a major games studio, but no real community - there's a Linux User Group peopled by beardy academics, but nothing more.
In the next nearest city, there are tech events every night of the week. There's a hacker space open and another being planned, startups sharing offices and the general buzz of stuff happening. The networking opportunities are absolutely immense - in any given week you could meet the founders of two dozen startups, easily.
What do you think my odds are of getting a great job in each city?
OP is wrong, absolutely dead wrong. Yes, there are opportunities outside of major cities, but they're much fewer and further between. There's an argument that competition is less fierce outside of metropolitan areas, but it's a bad argument for two reasons. First, it smacks of a poverty of ambition, a "good enough" attitude that no young developer should sink to. The other is that it isn't true. There is absolutely massive demand for good developers. Recession or not, most firms are desperate for people who really can write software.
While I'm sure you can build a good career in software anywhere, it's going to be an uphill struggle if you're not surrounded by people who are doing the same. There is a reason that companies are still spending fortunes building skyscrapers - proximity matters.
What have you done to improve your networking opportunities and the community in YOUR city? I started a monthly lunch group where a bunch of us get together and just talk tech. Some of us are devs, some are sysadmins, others designers, we even have a couple of academics from the CS dept of the local university.
Because it's a small city, it's a diverse group, but this is a strength as much as it's a weakness.
So before you throw your hands up and complain that there's "no real community", at least have a go at creating one.
When I read Spolsky's story to me the "where from" and "where to" parts didn't really mean anything.
For me its about someone smart enough to realize they are running in place and brave enough to do something about it. So many people get stuck in a rut and let it rule their life instead of the other way around. Ashton made the move.
Anecdotally, I've spent pretty much my whole life living between SF and Palo Alto, and realized about 2 years ago that I had to do something different so I quit my good job at a large software company to branch out on my own. Took a huge pay cut the first year, but I couldn't be happier. Getting stuck can happen anywhere.
A P.S. (to counter the acerbity of my comment in reply to tptacek):
It's a really, really big world, filled with really bright people. They can't all be in SV/NYC/Bos/Chi/Aus/whatever…and if they were, the world would be worse off for it. There's important work to be done in every locale, and there's no sense in implying that one is lesser because of where one sleeps.
> there's no sense in implying that one is lesser because of where one sleeps
I think the intended implication is not one of personal value, but that aspiring engineers might have an easier time living in proximity to large pools of talent and opportunity.
Yes, but network effects are not limited to just social media and the internet as a whole. Physically clustering together smart, ambitious individuals produces tremendous side effects in opportunities and innovation that are difficult to impossible to recreate with today's technology. This might change but, for now, they are not on equal ground.
I sympathize with both sides of this. I'm a guy who grew up in College Station, Texas, and couldn't wait to get out. Now I live in SF and NYC.
But most of my closest friends to this day are the ones I grew up with in College Station who couldn't wait to get the hell out. Some of them left, and some of them stayed (nearby). I think we're all making the right decisions for ourselves.
I appreciate what I take as the main point of the article: there's nothing special about you just by virtue of the fact that you're here (SF/NYC). I think I relate well to people like myself (small town -> big city) but that doesn't make us better than anyone else. There's beauty in staying where you're from and making that place better and telling its story. I admire guys like Guy Maddin, the Valley Forge, PA startup guys, etc.
I grew up in suburban, then rural New Mexico. I spent a decent chunk of my adult life in Central Florida. I even lived in tiny, beautiful Bend, OR.
There's not a single one of these places that can hold a candle to the SF Bay Area in terms of opportunity, smart people and great employers. As a tech hub, it's an optimal destination for someone with technical skills.
"Bigger cities have more opportunities" isn't self-righteous. It's just common sense.
So, yeah, you can make it happen for yourself anywhere. But why would you struggle to extract juice from the oil shale that is nowhere, USA when enormous wells of real opportunity have bullseyes painted right on the map? Why make it needlessly hard?
I think the author is attacking a bit of a strawman. It seems that the discussion of "major metropolitan areas" assumes either San Francisco and the Valley, New York, or Boston. Now it's true they're the main tech hubs, but they are far from the only decent sized cities with a booming software market. Here in Philadelphia, for instance, I've never had undue trouble finding a job. However it's generally true that you'll do better in New York than you will in Philly - and a lot better in Philly than you'd do in the middle of the state. It's a simple fact of life that software development, by and large, tends to cluster around the nearest large population center. You'll have an easier time finding a job in the city for a fairly wide range of careers, for that matter, simply because there's more employers around. That's neither exceptionalism or arrogance - that's just how it is.
To lay my cards on the table - I grew up in a small town in boondocks, PA, and live in Philadelphia, which is not exactly a speck on the map. So, I've had it both ways, and I wouldn't even entertain the notion of moving back to where I came from and still being able to have any kind of real career in development.
Pardon my echo, but moving from York, PA to Philadelphia instantly at-least-doubled my income, and (in 2006, when I moved), there were roughly 40x the weekly opportunities available in the greater Philly area than there were in Central PA (along rts 30 & 83), and immensely more variety in those opportunities than what you can find, or even create for yourself back in central PA.
Chas Emerick might be right, but my experience is very different.
I moved to Silicon Valley in 1996 to take a job as a sysadmin. My previous job: bottling bubblebath in a bubblebath factory in Ohio. I managed to stay in that job for the year it took to pay off my moving expenses, which is a testament to the fact that I already knew some stuff, and moved back to Dayton, Ohio, to be with my wife.
BAD MOVE. Ended up working at Keane on a Y2K remediation project, wrote a Perl script that allowed us to do a text-scanning task in an hour that previously took days with the Keane Assessment Tool (written in COBOL), got reprimanded in writing for suggesting to a customer contact that we remove some unused and incorrect code from their software, was yanked off the client site and sent to their management training course where I was indoctrinated in their explicitly-described-as-waterfall methodology, and was fired at the end of my three-month probationary period.
At this point, Keane, despite making nearly a billion dollars a year writing software to automate its customers' business processes, had a timesheet process that worked as follows:
1. Download the Excel spreadsheet from the Keane website onto the client computer and fill in your hours.
2. Print it out on the client's printer.
3. Fax it to the Keane office on the client's fax machine.
4. At the Keane office, the receptionist would type the hours from the printed, faxed spreadsheet into the timesheet system, which I never saw.
From later 1997 to 2000 in Dayton, I worked at ERIM, a government contractor developing software for hyperspectral image analysis. The level of competency was higher there than at Keane, but essentially the project was to reimplement in C++ a bunch of algorithms that were already implemented in ERDAS Imagine, with the stated objective of improving their usability, but with no human-factors people on the team. The real objective was to get the taxpayers to foot the bill for a reimplementation of these algorithms whose copyright would be held by the prime contractor, Ball Aerospace and Technologies Corporation.
At one point, our team lead (Teresa Cloud, of BATC) declared a policy against using the C++ keyword "this", because she thought it was bad style. On another occasion, I got reprimanded for using "assert" statements in my code — not for creating the bug that triggered the assertion failures, which was also my fault, you understand, but for the statements that detected it. As you can tell from these stories, my technical and political savvy was quite limited at the time, and my productivity was even worse.
During this time, you understand, I was hanging out in bookstores, talking to people there, taking classes at WSU, going to Linux user groups and the Dayton Microcomputer Association and Hamvention and Computerfest, occasionally doing volunteer work with a computers-for-the-poor project whose name I forget now. There are probably a dozen or more interesting high-tech companies there in Dayton, but I never succeeded in finding them.
In 2000, I took a job at a startup in Seattle. It challenged me like nothing ever had. After three months I visited Dayton, and I was astonished to find that nothing had changed. It was like visiting Brigadoon. Time just moved so much slower there.
When Kleiner funded us late that year, we moved to the SFBA, and I spent the next six years working for a variety of interesting tech companies, in the SFBA. In 2006, I moved to Buenos Aires, and although there's some interesting stuff going on here, it's a pale shadow of the SFBA, despite having about the same total population. The free software and contact improv communities here, however, are amazing. But the environment does encourage me to get lazy and slow down instead of staying ahead of stuff.
But, working dev at Herman Miller is genuinely not a great role for a dev career. It's a textbook dead-end job. It's not "exceptionalism" to point that out.
Yes, he should have gotten in his car and headed to Chicago, instead of hopping a plane for SF. He'd even be able to keep his car. But he was right to leave.