It feels a lot of developers online either went to a prestigious computer science program in university or are self-taught. However, not many talk about community college in those communities. It’s very much a different experience, and I was in it. I’ll try to cover what it’s like at a high level, and how I thought of it. The actual location isn’t important, but it might not be hard to guess. (And if you were there, you can probably tell who I was.)
Why did I go?
I have to admit that I was at risk of being a failson – useless and surviving on the goodwill of your family. (It’s a precarious situation.) Wasting away with potential is an awful fate. That’s why I decided to get some paper from a respectable institution. While I did have a decent amount of knowledge for computer stuff, it could easily have been useless trivia for irrelevant things. It’s hard to tell if it’s something useful in industry or as a base for academic research. That, and horror stories from friends about not having a degree hurt their career prospects pushed me to get some kind of higher education.
There’s plenty of options with higher education, but only a few are actually relevant. No way I’d be able to handle Ivy League, but a state/provincial university would basically be as good, and hopefully cheaper. In my case, I actually had one right next door to me, so moving for school wouldn’t have to become a problem.
But as a “lower middle class” (read: poor with a house) person, I didn’t have too many resources, other than some kind of scholarship money that was limited (a few thousand). With that, the only really plausible option was community college, unless I wanted to push myself deep into debt. (But that issue is a discussion for another day…) While there’s some programs and pushes for better affordability of higher education, they unfortunately didn’t apply for me, or weren’t enough to make it affordable for me.
Of course, there is a bit of risk with the community college path too. They’re respectable government-run institutions and a massive step up from the typical DeVry-like scam colleges, but they usually lack recognition outside of the region they’re in, or the group of companies they aim to serve by tweaking the curriculum for. As such, I’d be concerned if the degree means anything more than paper for possible employers outside of the region.
And to say my reasoning was entirely financial. I had my own concerns if I could handle the workload of “real” university, or if I would be able to finish it in the proper timeframe. As such, community college seemed like the safer bet.
What’s the program like?
The program I took was a “Programmer Analyst” one. It seemed basically like a trade school version of a software engineering boot camp. It took two years, although many students chose to space it out to three or four. I elected to do it in the two.
The course itself was divided up into three terms for each two years. The courses were rigidly structured and all mandatory – even the “electives.” That isn’t the university experience at all of being able to pick other fields’ courses.
The students themselves were of a diverse set and background. The biggest “factions” to me were:
- The people in other fields, looking for jobs in programming. These tended to be from a variety of fields, from journalists, to call centre workers, to pharmacists, and tended to be a full range of ages. It’s interesting how much we as programmers tend to want to exit from the industry, all while people clamour to get in. I guess the grass is always greener on the other side. Their success was mixed, and I suspect a lot of it was down to how much the developer mindset clicked for you.
- The younger people fresh out of high school who “liked video games”, so they went into the course. I suspect parental pressure was involved. Most of these had a rough time and were weeded out early.
- Those who already had a passion for the field, or some kind of natural aptitude for it. I suspect a lot of these could have handled university CS, but likely for whatever reasons (i.e. can’t afford it), didn’t get to.
The first year (and a bit after)
The first year is structured so that you can transfer to something else should it not work out for you. Either you could transfer to the local university (with program equivalence), or you could switch to another program the community college offered. There was overlap between the introductory courses, so it wouldn’t have been too disorienting to switch. Many also elected to stay on but spread out the program for additional years to reduce workload.
It’s hard for me to remember the details of each course for each term, so I’ll keep it general. The actual things covered were very basic introductions to common topics, but foundational ones – networking, databases, web stuff, etc. More complex topics (or further iterations from basic stuff) were covered further into the course, when you were more committed to the track. Some were shared with other programs, or provided a different perspective on the same topic. For example, while our project management courses were aimed more towards “agile” working with teams or startup-ish market research, we often had collaborations with the business analyst program.
One amusing thing was the mandatory volunteering program in the first part of the year, where you got selected to do some kind of local community service thing. I guess it’s more “voluntold”, but it does remind you how much they focus on doing stuff for the community (foreshadowing).
The projects in the second year
It’s been a while, but I remember three projects that were notable enough – one small, one annoying, and one was the final project before the end.
The smaller project was a team project part of the project management section. We were to basically create a startup from whole cloth – needing a fictional (but plausible) premise, but lots of planning and documenting things like challenges/setbacks the business had run into. This leaned heavily into creating an entrepreneurial mindset. There was a lot of research into your customer base, the niche, costs of running the business and initial capital expenditures, capped off with a presentation covering what you had pieced together. This one was surprisingly enjoyable to do, even if I personally find the intersection of business and and higher education slightly crass.
The annoying one involved developing mobile applications, with web technology. Specifically, the applications were hosted with Cordova, and we used mostly Ionic and a touch of React and I believe the original Angular for the actual interface framework. This wouldn’t be notable or particularly relevant, except Ionic had changed things drastically in a new major version. The textbook might have only been a year or two old, but it was already rendered obsolete. Until I figured out the specific npm incantations for pinning versions, the class was struggling to get anything done. (It sounds like a humblebrag, but it was silly and shouldn’t have been needed.) The dangers of trying to teach trendy technology in an academic setting, I suppose.
The final one was actually working on I believe, a team project for local community organizations, using real-world tooling (I believe of your choice). In our case, we were to write a basic student management system for a local forestry college, that was using Excel. (Access control was the big factor for moving off of Excel.) This focused on practical development with the tooling (in our case, we used ASP.NET Core) – including a proper development lifecycle with a Git forge using code review and pull requests, as well as working with business analyst students to gather requirements and iterate on them in an “agile” workflow.
Conceptually, this core seemed like a good idea (students need experience with a realistic project, give back to the community), but for some, became a mess, because you could easily fail not of your own accord, but from poor communication for your client. In that case, I believe they were forgiving if you were doing the right thing on your team. Case in point – while we had actually delivered something flawed, but more than usable for the requirements, it turns out said forestry college didn’t use it. It turns out we weren’t the first (or if I remember correctly, second) student team to deliver something that wouldn’t be in use – they basically ignored a previous application. (I guess it’s a testament to how Excel is the development tool of choice for non-programmers that programmers may never understand…. but that’s a separate conversation.)
The light at the end
At the end of the program, there was an practicum for the final term. Usually, you would be courted by companies trying to convince you to intern for them. Employment after that was common – that’s half the reason why people joined these programs. However, if you could find your own opportunity, you could do so. In the event that you failed to find one, they seemingly made you intern with the research lab at the community college, which they likened to being sent to the boiler room. This part confused me, because to be honest, they seemed to have interesting ideas and research. (They probably struggled with implementation though.) If I hadn’t found a company to intern for myself, I might have took them up on it.
The graduation rate was low – out of the initial 30 or so students, about only 5 (including me) made it in the first two years. Most of the rest dropped out, or chose to spread the program out. The program seemed to have an element of being a meat grinder, but they took pride in that.
What’s good about it?
There was a big emphasis on being approachable and knowing the business domain, even as a developer. You can’t afford to be some basement bugman churning out code. Instead, you have to talk to the client, even if you might have business analysts as a proxy. You might even gain knowledge of the problem domain – and you can’t solve a problem without knowing the problem. Likewise, the subtle pushing on entrepreneurship, reinforced that understanding of knowing what you actually should develop to address a market segment. Even the little things like what to focus on for resumes and what employers wanted to see in them helped.
Employability was their biggest concern. Their mandate was to make sure graduates were employed in the field they studied in, and in the region. Considering the area reels from high unemployment, it’s understandable. Of course, some people did decide to move away anyways after graduation. The institution doesn’t have much name brand recognition outside of the region, despite being a government entity, but hey – paper’s paper.
What’s middling?
The actual quality of the courses was a bit of a mixed bag. The periphery computing stuff like databases and networking, while not having the richest part of the curriculum and clearly pieced together from other things, was taught well. “Soft” stuff like project management was harder for me to judge, especially due to the fact circumstances required a substitute for much of the term. The actual programming courses I found were the weakest part, but I’m not sure if this was due to my context revealing flaws more so there, or if the actual instruction/resources being taught from were poor. It was clearly the part other students were struggling with.
What’s not great about it?
There was a lot of retreading the same ground – covering several different languages, but the same basic concepts in each. It’s hard to cover C#, JavaScript, PHP, and Java without repeating yourself often, mostly due to them being fairly similar. I understand they’re covering what employers want, but it means they’re wasting a lot of time in their two year program. It would have been better if they had done either less languages and went more in depth on a few, expecting people to know that their skills are portable. Alternatively, they could have gone for very different languages – F# for example, would be a way to introduce functional programming concepts into a .NET-centric curriculum. Wanting to limit things only to what’s used in local industry doesn’t help matters though. (It’s also a little self-reinforcing of a limited repertoire too, but that’s a rant for another day.)
Some of it had a dogmatic early 2000’s view of the world – or at least, what an Agile consultant of then would have considered the platonic ideal. There’s a big focus on “object-oriented analysis & design” bugbears like UML that people take less seriously nowadays. It intersected with the business part too – a huge focus on Agile process, and a bit of the post-Agile trends like “lean stack”.
There was a mild undercurrent of resentment for the local university’s CS program. They seemed to have disdain for its focus on theory, how long it took, and how developers in it did useless things like “optimizing shell scripts”. That’s funny, considering a lot of my job is helping clients optimize their own scripts! I wonder if this was some kind of mismatch of viewing the endeavor as a trade school kind of thing.
The local companies weren’t too inspiring – mostly startups and consultancies trying shallow pitches with the typical ping-pong table that you’ll never get to play. (While the area I’m in is known for an IT scene, I think it’s a bit shallow, but that’s a topic for another day.) The two companies that I respected were the local government’s IT and a company doing ballistics modelling. The former actually provided us with useful ASP.NET advice, and I thought the latter was doing actually interesting work, both in terms of what they were doing and how they were doing it.
Fin
My experience at community college was weird. It felt like I was the wrong audience for it, and didn’t really need it, which clouds my judgement on it. What was intended to be difficult, I was sleepwalking through, likely because I had a lot of background beforehand. It sounds like a cruel humblebrag, but it really does make my opinions on what was difficult on one hand less valuable (if I already know it), but also might help for people who did struggle to elucidate why (if the instruction wasn’t up to snuff for whatever reason, if someone knows beforehand, it’s easier to tell how).
There’s a big part of me that makes me wonder if I went to university instead. I’m weak on computer science fundamentals and would have loved to explore theory. However, as I mentioned before, I had concerns if I was able to handle it, let alone be able to do it. I think I turned out fine the way I did, but people always worry about the path not taken. I’m just sad at what I missed and had to cover myself, without the environment that could make learning these things easier. I suppose I could have taken advantage of transferring to university, but the concerns would still be there, and then there’s new ones like if equivalency really is equivalent.
There’s also the question if I would recommend others go for it, or if I’d hire people that went through the same program I did. It really depends on what you’re looking for. Community college did a good job of churning out programmers, but they’ll likely be optimized for implementing line-of-business processes in the tooling that the local industry uses. Which is totally valid, and might actually be what you need. But it’s not what a CS program optimizes for – more concepts, which can be applied more in general. All I can really say is the people who think community college is just as good as university are wrong – but so are the people who say it’s worse. There’s not really a comparison, because they’re different in what they set out to do. It’s just a shame that people suited more for one than the other are encouraged or forced to go down the wrong path for them.
Ever thought of teaching a small part of such a study program?
Nothing promotes quicker iteration on a course plan than experience of teaching it!
(Disclosure: 30+ year maths teacher now semi-retired).