major.io words of wisdom from a systems engineer

Why should students learn to write code?

1

There are lots of efforts underway to get students (young and old) to learn to write code. There are far-reaching efforts, like the Hour of Code, and plenty of smaller, more focused projects, such as the Design and Technology Academy (part of Northeast ISD here in San Antonio, Texas). These are excellent programs that enrich the education of many students.

I often hear a question from various people about these programs:

Why should a student learn to write code if they aren’t going to become a software developer or IT professional?

It’s a completely legitimate question and I hope to provide a helpful response in this post.

Some students will actually enter the IT field

This may seem obvious, but it’s important to note that many students may choose to enter the IT field. They may not become full-time software developers, but the experience is useful for many different IT jobs. For example, knowing some basic principles about how software works is critical for system administrators, network administrators, project managers, and people managers. These skills could give students an edge later in their IT career.

Students learn to measure twice and cut once

The concept of thorough planning before execution shows up in many different fields. You can find it in general engineering, architecture, medicine, and criminal justice. A failure to plan often leads to bigger challenges down the line.

In software development, planning is key. Where will you store your data? How much data will you need to store? Does the user need a graphical interface? What if the amount of users on the system increases by a factor of ten? How do we keep the system secure?

I talk to computer science students at UTSA on a regular basis. One of their most challenging courses involves a group project where the students must build a fully functional application that solves a need. The students run head-first into a myriad of problems during development. They almost always learn that it’s much easier to talk through how everything will fit together before they write one line of software.

Students learn to think logically

Dale Carnegie said:

When dealing with people, remember you are not dealing with creatures of logic, but creatures of emotion.

Humans are swayed easily by emotional appeals and logic is often tossed aside. Computers are the total opposite. You can scream for joy, cry uncontrollably, or yell angrily at a computer and it keeps doing the same thing. It doesn’t understand that you just told it to eat your data. It doesn’t understand that you can’t figure out why an error is occurring.

Students can learn a lot from the way computers work. As one of my journalism professors said in school:

You put garbage in? You’ll get garbage out.

Students will learn to be explicit in their instructions and contemplate how to handle treacherous situations in software. Some smaller failures might result in an error or a poor user experience. Others could result in a buffer overflow that leads to a costly security breach. In the end, computers can only do what they’re told and it’s up to the developer to tell to the computer - in the computer’s language - in all of these situations.

Outside of the world of computers, learning to be explicit has its benefits. It reduces confusion in conversations, leads to better results in group projects, and it encourage students to structure their thoughts into more organized communication.

There’s more to IT than writing code

Software doesn’t run without computer hardware. We live in the age of easily accessible, inexpensive cloud infrastructure where you can have a server online in seconds, but it’s still someone’s computer. Within large businesses, software developers are often asked to justify the resources they need to deploy their applications.

There is obviously some technical knowledge involved here, especially around the topic of sizing a server for a particular software workload. However, there are plenty of non-technical questions to ask.

Can we re-use depreciated hardware to reduce capital expenditures? Is our datacenter space limited by power, space, or something else? Can we select a lower-wattage server to reduce power consumption (if that’s the bigger expense)? Will ordering in a larger batch allow us to drive down the hardware cost?

Software developers wield significant power if they can use their technical skills to branch into the world of accounting, finance, and basic engineering. A well-rounded approach could also allow developers to get more hardware than they planned to get if they make the purchases in a smarter way.

Basic understanding of computers is useful

Almost every technical person has fielded that awkward question from a family member at a gathering or during the holidays:

I heard you do computer stuff? I think I have a virus - could you look at it?

All students should have a basic understanding of how a computer works, even if they never write software or work in IT. This knowledge helps keep all of us a bit safer online and it helps to diagnose some issues before they become a serious problem. Approaching computers with an observant and inquisitive mind will reduce security breaches and increase confidence. We will also flood the market with people who can teach others the basics about their technology

Summary

All students could learn some important life lessons simply from learning how to write some code. Does this mean that all students must write some software before they graduate? Definitely not.

Many of the lessons learned from writing software will easily transfer into other fields and disciplines. Gaining these skills is a lot like learning a foreign language. If you use them frequently, you’ll have a strong foundation of knowledge to build upon over time. Even if you don’t use them frequently, they could give you that small edge that you need later on in your professional career.

Photo credit: Pixabay