Monday starts the 2014 Denver Startup Week, a week to celebrate and encourage tech startups in and around Denver. This makes now a perfect time for me to rant about how software development is taught. We need to shift our focus from “How to write code” to “How to make an app”.
I have an Associate’s Degree in Programming and I’m currently pursuing a BS in Computer Science from Regis University. I’ve learned how to use control structures, data structures, variables, recursion, classes, functions, methods, inheritance and all that fun coding stuff. When I received my degree I was ready to show off my knowledge with my own projects, but I quickly realized that while I knew how to program, I didn’t know how to create a programming project.
New programmers, whether we are self-taught through online resources or we go to a college or school, should know about the software development life cycle (SDLC). The 6 basic stages of the life cycle are:
- Requirements Analysis: Finding out what users want
- System Design: Figuring out how to make the system do what the users want.
- Implementation: Actually writing code.
- Testing: Making sure the code actually works.
- Deployment: Letting users use your system.
- Maintenance: Fixing bugs and adding features.
How you work through these stages and what order you go in depends on what kind of project management model you use which is a whole other ball of wax, but it’s important for us newbies to know that coding is just a part of the software development process.
Programmers who know how to write code, but don’t know about the SDLC are like authors who know how to create sentences and paragraphs, but don’t know how to create a book. They’re like amateur woodworkers who know how to use a hammer, a square and a ruler but don’t know how to draw up plans for a simple birdhouse. The only reason I know about the SDLC was because I went out and found it by reading through the textbook for the Software Requirements course at Regis University, which is a MASTERS LEVEL course! It should be taught where before then!
An entry-level programmer who is familiar with how the SDLC works will have some awesome advantages:
- We will know how we fit into our company’s development process quicker.
- We will be better able to create our own projects to show off our knowledge.
- It will be easier for us to take an idea and create a business around it.
- We will be able to switch platforms and languages easier.
Tech startups need to get everything they can out of their developers. Whether your shop is agile, lean, devops or some combination thereof you need developers who can grasp the bigger picture. If you’re a school, you need to make sure your students are familiar with the SDLC so when we graduate we aren’t hit with that wall that seems to separate academic and commercial programming. And if you’re a code newbie like me, you need to make sure you take control of your learning and learn how to make a program instead of just learning how to program.
I’ve always been of the idea that if you know the basics, it makes it easier to grow and adapt. If you know of any programming learning resources that follow this train of thinking I would love to hear about them.