The Three Rules of Programming, Sort of

“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
Martin Fowler

The advance of technology has been staggering. In 1947 the transistor was invented. The transistor allowed the inventions of the Integrated Circuit (IC), which is what modern computer chips are. In 1971 the first IC was built, all modern computer technology has been developed in the 48 years since. Today everywhere you look there is a computer.

This explosion of computer technology has created whole classes of devices that did not exist 50 years ago, cell phones, tablet computers, digital cameras, the internet, the internet of things, augmented reality, virtual reality, and the global position system to name a few.

This explosion of technology is affecting education either through changes in society or because the technology is useful for learning. The question of how we deal with the ever growing and changing technological landscape in education is an important one. Most importantly how do we make sure pedagogy drives the technology and not the “cool” factor?

To make sure the tools have a pedagogical value we will probably have to understand the technology and build it our-self. What exactly does it take to create these tools? What does it take to understand the technology that surrounds us? First, we need to understand what is at the core of modern technology. That core is software, computer programs, without software all that fancy technology is just a paperweight. So do we all need degrees in computer science and programming?

No, we don’t need all need degrees in computer science and programming. I might argue that a few classes in computer literacy and programming would be beneficial to understanding and living in the modern world, but that for another day. So if you don’t need a degree in computer science, how are you are supposed to develop and build educational technology? You do what we always do in education you collaborate. You either team up with or hire programmers. You bring the pedagogy and content knowledge they bring the programming skills.

OK, so we collaborate how do you do this? For a start, you need to have a clear idea of what your end product is going to be. You need to develop a detailed list of what your technology will do. However, when you are developing software, there are three rules you need to understand.

  1. You can have it good.
  2. You can have it fast.
  3. You can have it cheap.

The important thing about these three rules is you only get to pick 2. Realistically, everyone is going to choose good (at least I hope so). So, in reality, you get to pick one.

What do these three rules mean and why can’t you have them all. Let’s come back to good in a minute and deal with fast and cheap first. These two rules are inversely related to each other. In a project, I was involved with we had hired a group of programmers to develop software. I was talking to the software architect concerning deadlines. One of our partners made changes to their needs which lead to changes in the software.

I asked the software architect what this was going to do to our timeline. He said that if the deadline started to slip, we could always add more programmers to the project. Modern software is often composed of multiple subprograms that each do a specific thing. Think about the calculator on your computer. One subprogram would deal with addition another subtraction and so on. Because of this modeler nature, it can be easy for multiple programmers to work together they can each work on a separate subprogram.

However, as anyone that has ever managed a budget will tell you personnel is usually one of if not the most substantial cost. That, of course, means more programmers can get the job done faster, but it costs more. Specifically, each new programmer will increase your cost by 100%. Two programmers cost 200% what one does, and three programmers cost 300% what one does as you can see costs multiply. So you can have your software program fast or cheap.

Now let’s get back to good. When it comes to a software program good is a lot more than how it looks and how fast it runs. Good computer software will have a detailed and exhaustive testing phase. Specifically, the programming team will develop a plan and possibly testing software to try and break the software and identify bugs. A properly built program will behave in predictable ways even when it fails.

So as you can see good software is a lot more than looking pretty and working. Getting to the working stage takes a lot of specific skills. So now that you know, the three rules start thinking up new educational technology and get out there and collaborate.

Thanks For Listing To My Musings
The Teaching Cyborg

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s