I worked with a class of graduating seniors in the CIS program at Boise State University this last semester and really enjoyed the experience. The students were working on real projects with actual clients applying the skills they received throughout their program. I learned some things from the students and it was interesting to see them learn about the aspects of real life we face in developing solutions for clients. My favorite quote of the whole semester was, "I don’t think the client even knows what they want. I don’t get it. Why are we even here?" Awesome, no? Doesn’t that just sum it all up? The beautiful thing about this is how the students were surprised when this happened. But I digress…
As we were wrapping up the last night I received what seemed like an innocent enough question from one of the students. "What kind of job do you think I should look for?"
It really caught me off guard, although I should have seen it coming. I didn’t have a good answer on the tip of my tongue, and that may be because there isn’t one. The CIS program is not designed specifically to churn out developers, but introduces students to all sorts of disciplines so they can pick a specialty later. For example thy study project management, requirements analysis, some programming, some networking, you get the idea. So the question really was bigger than it seemed.
Let’s assume for this post that the person in question wanted to be a developer. Even if the person is looking to become a developer, the question what kind of employer to seek out isn’t an easy one.
My father has worked 45 years as a mechanic for 2 employers. He is happy doing that. Many people, in fact most, are content with an occupation just like that. There is nothing in the world wrong with this; the world turns, people still live and love, people die, babies are born, all without making a life out of their career. Other people don’t see things that way. They are passionate about their work and want to contribute to a higher vision of their chosen profession. I would guess if you are reading this, you see yourself in a similar light.
Someone develops code for the state government agencies. In fact, I have met many competent people who do exactly that. Are those developers missing out on something? Probably not in their mind, or they wouldn’t be there. The point is simply that for some people a job is a job and there is no dishonor there.
This means my answer can’t be glib, it must be realistic. You can’t just say, "Go somewhere Agile," or, "Find a place where you can write Ruby." This is real life and sometimes grown ups balance security and risk and boredom and excitement because they have kids at home, or need special medical accommodation, or any one of a host of other considerations.
All that said, if you are passionate about the craft, if you want to drink in the industry, if you do want to learn as much as you can as soon as you can, I say this: Go work for a company with fewer than 50 employees building web solutions.
Locus of Control
As a company grows larger, the locus of control individuals have inside the organization grows smaller. This is easy to see.
In smaller organizations, people tend to be jacks of all trades. If a server goes down, you care. If a defect is found, you care. If there is a client in the picture, you tend to actually know them. In short, small organizations provide first hand experience with many aspects of developing and delivering products.
In larger companies and teams, people tend to be expected to focus on a small niche of expertise. I cannot begin to tell you the number of resumes I have seen from people who spent years poking at HP’s test harness suite or Micron’s order entry system. This kind of "specialization" is not usually a recipe for career growth.
You’ll get to go deep on technology because you are part of a small group that simply must make it work. There is no passing the buck, because there is no one to pass it to. You’ll get to know whatever the technology stack is inside and out.
I recommend web development for a simple reason, the web isn’t going away! Additionally, the technology involved in delivering to the web is growing at an astounding pace. I don’t know what the web will evolve to in years to come, but it will be on hulluva ride.
Comradery and Mentorship
In a small organization, it is easier to foster a genuine sense that we are all in this together. The esprit de’ corp in a smaller organization is typically tighter than in large organizations. This means you stand a better chance of falling in with someone who can actually mentor your career and take a genuine interest in your development.
Of course this exists in larger companies and is lacking in many smaller ones. I do think it is more generally found in smaller organizations, though.
So, what’s the right answer? There isn’t one, of course. There are just too many options and factors.
I will say that instead of ensuring your potential employer can pass Spolsky’s Joel Test, it is more important to ensure you will be empowered to help them pass it if you come aboard.