College Doesn’t Teach You Software Development

Brett Hardin
Constantly Learning
3 min readDec 4, 2018

--

I’ve used technology and software since I was young. So, when I was researching colleges to attend, I chose a university with a good computer science department. After graduating from college 8 years ago, I realize how little I learned in college about developing good software.

Photo by Good Free Photos on Unsplash

I’m not the strongest developer. I can get code working, but I’m still learning how to optimize it. I try to suck less every year. But, my university didn’t prepare me for the real world. I paid a fortune for my college education, but, I use what I learned very little. The software principles I use daily, I’ve learned on my own.

Of course, graduating from college does allow me to check off that box that says I have a college degree. I learned about Descartes and Discourse on the Method, American concentration camps, and a lot about wine. But, the degree I obtained in Computer Science doesn’t help me write good code.

Although I know there is a difference between computer science and software development; why didn’t I learn more things which would help me become employed?

Isn’t it the universities job to give you an education that helps you apply what you learn in the real world? Franchise colleges, like Devry and The University of Phoenix, pride themselves on giving you an education that you can use. But, those colleges aren’t as esteemed as a single-location 4-year institution.

Here is a list of things I use every day when developing software that my single-location university didn’t teach me:

  • Revision Control Systems — Although the university emphasized working in groups, we never learned about version control systems. Using Git or SVN will teach you more about collaborating with others than working in a group will.
  • Unit Tests — This one pisses me off the most. Although I learned about advanced data structures and compiler design, I wasn’t taught good coding practices. How are you expected to write good, reusable code if you don’t know how to write tests to support it? I’m curious if the teachers wrote unit tests to test our projects. Although this would have made their jobs easier, I doubt they used tests. The words “testing suite” were never heard in the hallways.
  • Closures — Never touched the concept of functions being able to accept functions. I learned about Lisp from a friend while hanging out between classes and wrote some game with it. But, aren’t students supposed to get their real education inside the classroom?
I know! I’ll use Scheme!
  • Programming Paradigms — Looking this one up, it seems other universities, like Stanford, have programming paradigms in the curriculum. Not learning about programming paradigms is unforgivable. Although the other items in this list are about software development, programming paradigms are fundamental to computer science. Did I not learn about these because I went to a dreaded state school rather than a real university?
Stanford classes on Programming Paradigms
  • Big-O Notation — All great developers should know about time and space complexity. Understanding how to optimize code to scale is important. One professor discussed Big-O for 10 minutes, but, universities should emphasize it more. Employers love asking entry-level developers to identify Big-O notation of algorithms in job interviews.
  • Functional Programming — The university I attended had a grant from Sun Microsystems, so Java ruled the campus. Although I was a fundamentalist and decided to write everything in C++, we never learned about functional programming. Everything was object-oriented.
  • Working in an IDE — In college I learned how to code everything in vi. Don’t bother leaving a comment about emacs, I know it’s superior. But, I never learned how to use an IDE. I now live in one when developing. Understanding how to setup Eclipse for a legacy code project would have been a useful addition to my college education.
  • JavaScript — No front-end code. Ever. The closest project on writing front-end code was developing Java applets. What a crappy decision. Whoever suggested students should learn about Java applets to fulfill education requirements should have their tenure revoked.

Why didn’t college teach me these things?

Did anyone else have this lack of education at their university or am I an outlier? Sound off in the comments.

Additional Resources:

Originally published at bretthard.in on January 08, 2013.

--

--

I read, write, and create software. I optimize my life to learn. If I can help you, let me know. http://bretthard.in