What's Wrong With a BS in Computer Science or Software Engineering?

We don't have a problem with everything that is taught in universities, but rather how it is taught and what is missing for people who want to build software.

The Craftsmanship Academy will definitely be teaching Data Structures and some other things taught in typical Computer Science, Software Engineering, and/or Information Technology curriculum, too. But, there will be major differences.

A typical Computer Science curriculum at a university will have about 40 credit hours in Computer Science. If each credit hour means roughly 50 hours of student time (class plus outside study/work), that equals about 2,000 hours. However, there are many things discussed during Computer Science courses that will never be used outside of the course in the real world, and the student never gets very in depth on any topic. If a single 4 credit hour class were dedicated to a single project, that would be one 200 hour project. Few, if any, courses do this. Most projects in computer science classes are 5-30 hours. If concepts and techniques are taught without useful context, they are often lost. Additionally:

  • Most classes are taught by instructors who haven't (or have rarely) ever programmed in the wild. They are not master craftsmen. They have mastered teaching Computer Science in a university.
  • Few courses teach best practices.
  • Most universities barely touch on object-oriented programming, which has been the standard approach to most application programming in the industry for two decades.
  • The curriculum for Computer Science hasn't significantly changed in thirty years. And it was somewhat out of touch with what was done day in and day out then.

There are some universities offering Software Engineering degrees which, in our opinion, are far superior to a Computer Science degree for those who want to build software. Some of the better ones have two semester-long senior projects. However:

  • They rarely teach agile development.
  • They don't teach test-driven development.
  • They take four years.
  • They are often taught by people who haven't done much development in the wild.
  • Students rarely get individual attention.

Neither of the above is an attempt to be exhaustive.

We could talk about the college lifestyle, the political agenda at many universities, and so much more. Some may like these things. Most people we know who have gone to four years of college who have any moral compass look back at those days with much regret.

Our Craftsmanship course of study assumes coming into the program with up to several hundred hours of some programming under your (yellow) belt. The 24 weeks of 50 hours or more in a wholesome atmosphere with a craftsman on hand every day to instruct and review your work should keep you from becoming corrupted (and, we pray, encourage you to walk in the ways of righteousness) while learning best practices, underlying concepts, and gaining real-world agile software development experience. This includes talking to actual clients and users (not theoretical people, but real ones). The one-year internship plus further study (around 2000 hours or more) before the final black belt will give a taste of what the profession is really like. The instruction is by real-world practitioners where concepts and theory are applied just in time, in context, and in-depth. After 1.5 years, the participant will have 3200-4000 hours mostly in the context of building software as a profession.

Yes, you will be "missing" instruction in some advanced math, humanities, etc. We tend to look at it as relieving the encumbrance of having to juggle multiple things out of context while learning to be effective in your profession. Ask most professionals in any field how much value all of those things they learned in college helped them in their daily profession. In the real world, people spend all day on their profession and the skills it takes to be effective at that profession. Even in the software profession, this includes communication (written, oral, and several others), analysis, understanding people from different cultures and worldviews, etc. But since it is done in a specific context with real people, it goes from theoretical head knowledge to practical heart knowledge.

Students can get that instruction elsewhere (perhaps an associate's degree, a BA or BS, self-study, or other means), if they think it is necessary. We'd love to take students who already have a degree and teach them all of the stuff they didn't learn. The degrees do not directly prepare people to be a professional software craftsman. We will.

Photo by Tasha Lyn on Unsplash