aNewDomain — Even people outside the tech industry benefit from understanding software concepts. Software development best practices translate into better business and policy decisions, just for starters.
Becoming an expert software engineer takes years of study and practice, of course. But your clients, customers and coworkers don’t need all that training to get the most from a rich understanding of the software biz.
Here’s the dime tour you should guide them through.
First, get them up to speed on algorithms
The world is increasingly under the control of sophisticated algorithms. Live with it
From parsing the world’s largest datasets for meaningful information, to making stock trades in microseconds, to directing delivery drivers across cities, algorithms control an incredible amount of our day-to-day lives.
It’s relatively easy to help even those who’ve never worked with algorithms to understand a bit about what’s going on here.
Break them down like this:
At their most basic, algorithms are just instructions to take a certain piece of data, like a list of numbers, and reliably perform some calculation on them, like multiplying each of them by five and then adding them all together or returning them in sorted order. While most algorithms in use in high level software today are significantly more complex, they still retain this basic structure.
For example, the algorithm to sort a large set of numbers breaks the list into many smaller components, sorts the components individually, then recombines them, reducing the complexity of the problem by breaking it up into smaller pieces.
And make them relate to relational databases …
Ultimately, software attempts to model the real world in a way that’s both convenient and efficient. One of the main problems in modeling reality is finding a logical way to model relationships between entities. Traditional blogging software, like the software that powers WordPress, requires an understanding of how users, blog posts, tags and comments all relate to each other in order to function properly.
The challenge here is to construct the database in such a way that the software can understand these relationships and make use of each of them. If WordPress cannot understand that a user has many blog posts but each post only belongs to one user, the entire system will break down.
In addition to being efficient places in which to store data, they also have a wide variety of solutions for modeling relationships. For example, a developer can model that a user has many blog posts by assigning each blog post a foreign key linked to that user, which allows the database to easily communicate this relationship to the software.
Other relationship model types exist, including many-to-many and one-to-one relationships. Relational databases are programmed with a language called SQL (structured query language), and popular versions include MySQL, PostgreSQL, and MariaDB.
Cloud computing 101
Cloud computing has become something of a buzzword over the last several years, since it now powers an enormous percentage of the world’s software. Solutions like Amazon Web Services, OpenStack and Microsoft Azure are key to implementing a great deal of modern web applications, including applications like Twitter, Netflix and Reddit.
Cloud computing can confuse people who have no clue how it works or why it might be better than the alternative.
Just tell them that, before cloud computing, all computing had to be done on local servers, and expanding to handle increased web traffic could be very expensive. Cloud computing allowed companies to lease computing power like a utility, using only what computing power is necessary at the time. Furthermore, cloud computing allows companies to automatically scale up and down, depending on their traffic and processing needs at the time.
This of course eliminates the need for upfront capital for new servers, allowing companies to invest more into engineering talent and eliminating barriers posed to new companies by high hardware costs.
While this concept is perhaps a little harder than the last three, object-oriented programming is the paradigm that powers modern software. Before the advent of OOP, most software developers were constrained by the limits of imperative software development, which forced them to devise complex loops to keep their software running.
Object-orientation allowed programmers to build their programs by modeling real-world objects, simplifying the process of developing new software applications.
By finding the right objects to model their software around, engineers can design efficient programs based on their interactions.
For example, a developer building an e-commerce application can build models of a shopping cart, user, payment, item and inventory, then design the program to allow the user to place an item from the inventory into their shopping cart and pay for it. This breakthrough eliminates the need for complex loops to maintain interactivity.
Got it? Good! See you next time.
For aNewDomain, I’m Brian Matthew.
Cover image: CIO.com, All Rights Reserved.