Tech 101: What is Programming?
The world of programming has shifted dramatically over the last decade. There are now an ever-increasing number of options for businesses to consider when planning their technology projects. So, what does this mean when it comes to programming and developing software?
Programming is the engineering process of writing code. As there are now so many clever apps and code-generating applications, do we even need programmers as much anymore?
Let’s take a closer look at how the meaning of programming is changing…
What is programming?
In basic terms, programming is writing instructions that tell a computer what to do and how to do it. Programming ‘languages’ are used to develop software, websites, applications, and so much more. There are hundreds, if not thousands, of languages that are used in computer programming, with each programming language having its own specific set of rules, or “syntax”.
Programming languages are often separated into ‘programming paradigms’, which are ways of looking at and accessing data. However, a lot of languages are now considered as ‘multi-paradigm’; meaning that they support more than one programming paradigm.
The primary paradigms are Object-Oriented programming, Functional programming and Procedural programming, although there are many more:
Object-Oriented programming
Object-Oriented programming is built around objects or ‘data structures’ that contain both data (properties or attributes) and code (procedures or methods). In most OOP languages, objects can have both data and executable code. Each object is unique, and though it may be a copy of another object, it’s variables can be different from any other object’s variables. Examples of Object-Oriented Programming languages include Java, Python, C++, Ruby and C#.
Functional programming
Functional programming focuses on mathematical functions and immutable data, which is data that cannot be changed after it’s created. It doesn’t have state (stored memory), which means that the only thing that changes in a functional program is the input. In functional programming, you could conceptually change around the order of the code and still have the same result or ‘output’. For example, if you were multiplying six numbers together, it wouldn’t matter what order you multiply them in, you would still achieve the same end result. Examples of Functional Programming languages include Swift, Haskell, Scala and F#.
Procedural programming
Procedural programming is a programming paradigm that uses a linear or top-down approach. In procedural programming, a large program is broken down into smaller manageable parts called procedures or functions. Fundamentally, the procedural code is the one that directly instructs a device on how to finish a task in logical steps. Examples of Procedural Programming languages include BASIC, Pascal and C.
Programming for the modern business
Software development spans the creation of a wide range of digital systems and tools – from websites and databases, via APIs and middleware, through to mobile and desktop applications.
All development projects begin with a defined business need. Perhaps the company decides to automate some of its processes, create new ways to communicate, or enhance customer experience through offering a digital product. In one of its simplest forms, a software development project could be to just set up a website.
Depending on the complexity of the task – and the resources available – the company will make a decision on whether to outsource the development or carry out the work internally. We talk through the available options for businesses looking to develop software in our webinar, ‘Choosing the right software partner: Essential considerations for bespoke software development’.
- Desktop software development
A desktop application is a piece of software installed on a computer. There are of course millions of applications available already, addressing many of the shared, generic needs of users. However, businesses often require custom software to be built in order to carry out a very specific task. This is where a programming resource may be required to build an application. Common languages used for writing desktop software include C++, Java, C#, and VB.NET. Being object-oriented, these languages allow programmers to combine pre-defined sets of code in order to create functionality. - Mobile application development
Developing apps for mobiles and tablets require different skills to desktop software, as there are several unique operating systems and technical requirements at play. Typical languages used are Swift and Objective-C for iOS, and Java for Android. There are also cross-platform tools, such as Xamarin and React Native, that enable development across operating systems. - Website development
In the early days of the Internet, the only person allowed to touch a company’s website would be the webmaster, who would be required to have scripting skills within HTML, CSS, and JavaScript or ActionScript to build pages. In order to interact with databases and run server-side scripts, they would also need to master back-end development tools such as PHP, Perl or ASP and databases such as MySQL or SQL Server. These days, there are plenty of options for creating and managing websites using complete HTML-generating toolkits, with development frameworks such as ASP.NET, and CMS systems such as Umbraco, WordPress and Joomla!, making the process easier and quicker. - Database development
When developing databases, a common process involves building tables of data within the database, along with procedures to access it. Databases are underpinned by a relational database management system, such as MySQL, Oracle, SQLite or Microsoft SQL Server, all of which vary in cost and are designed for different situations. - Middleware development
Middleware is computer software that provides services to software applications beyond those available from the operating system. Think of it as a kind of “software glue”. Middleware allows distinct systems to be joined, or built into a larger system, streamlining the user experience by providing the illusion of using one single system despite having several different components and applications. Enterprise systems generally build large system by gluing a lot of smaller systems together using middleware. - Web service / API development
For system to system, or client to server communication, web application development increasingly makes use of RESTful APIs, using JSON as a data interchange format. Developers also need to understand XML based web service standards such as SOAP and WSDL.
The concept of codeless programming
Depending on what the desired end result is, there are plenty of development tools available – many of which require little or no prior knowledge of coding or programming. Some examples of software-generating tools with a simple, visual interface include Zoho Creator, Intuit Quickbase and Salesforce.
It could be easy to argue that the world doesn’t need as many programmers anymore, as there are plenty of codeless drag-and-drop software creation solutions available.
In reality, there is still very much a need for programmers – however, their skill sets need to change in line with the shifting market. Rather than just bringing coding and development to the table, they now should also act as advisors in guiding the client through this jungle of options and supporting them in finding the best solution possible.
Programming now vs 10 years ago
Ten years ago, cloud computing was still in its infancy. Smartphones were starting to become more mainstream and consumer tablets were just starting to hit the market. Today, these things all form a fundamental part of how we look at application development.
Software as a Service (SaaS) has shifted our expectations – both as individuals and as businesses – to the point where we want to be able to quickly scale our use up or down, turn access off and on, take applications with us everywhere we go and access them on every device. This means that programmers now often need to understand how to code in, or integrate with, several different programming languages rather than just one. Although the development landscape has also changed and many new coding platforms have been created to simplify the process, the touchpoints with other systems and frameworks are growing exponentially. It’s essential for clients to ensure their software development partners have the skills needed to factor in the complexity of their application requirements.
What’s in store for the future?
Some of the trends that are predicted to disrupt the technology landscape over the next few years include the use of Internet of Things and AI. Those businesses that choose to develop solutions to harness the benefit of the ever-growing wealth of data available to them are likely to be better equipped to compete on a greater scale.
We’re also expecting to see companies gravitating even more towards self-service applications for key processes both within the business and externally, which will boost productivity and streamline operations.
Still, whatever the future holds, it will be critical for businesses to have a dependable development partner standing by to offer tailored solutions to meet the needs of an ever-changing market.
See our other posts in the Tech 101 series
Tech 101: What is Open Source Software?
Tech 101: What is Programming?
Tech 101: What is Data Mining?