software design

Building an Appreciation for Software Development

Computer software. It is a very general term that covers a broad spectrum of possibilities. Ask someone the first thought that comes to mind to describe computer software, and the common reaction is usually words including computers, games, accounting systems, internet, Microsoft, Pokémon Go, or Apple. If any of these words popped into your head, go you. The truth of the matter is that computer software has become such an extensive term, that it’s hard to define in one sentence anymore. Growing up in the 1980’s computer software was known as – that stuff in the hardware that made your PC do cool things like solve math equations, play Pong, and digitally draw art. Now living in 2017, it is evident to see how computer software is needed to excel in almost every industry and has built a space into everyone’s personal life. No longer just for the PC, it is used for all sorts of computers including smartphones tablets, nook books, navigation systems, laptops, children’s games, and more. Even the most renaissance of professions have surrendered to learning necessary programs to connect with consumers and function at work. Freelance classical musicians can use WordPress to construct themselves a basic marketing website, and Freudian-like psychoanalysts now log onto and utilize their ERP system at the office. What about how everyone communicates nowadays via Facebook, Twitter, Snapchat, blogging, and texting? Don’t forget how software has permanently changed the marketplace – enter e-Commerce. I could go on and one, just like Sherry Lewis’s “This is the Song that Doesn’t End,” from Lamb Chops Play Along, but I won’t.

What is the actual definition of computer software? Here are a few definitions – see which ones are most relatable to you.

Webopedia.com: “Computer instructions or data. Anything that can be stored electronically in software, in contrast to storage devices and display devices which are called hardware.” (1)

Openprojects.org: “A generic term for organized collections of computer data and instructions, often broken into two major categories: system software that provides the basic non-task-specific functions of the computer, and application software which is used by users to accomplish specific tasks. ” (2)

Sciencedaily.com: “A program that enables a computer to perform a specific task, as opposed to the physical components of the system…computer systems divide software into three major classes: system software, programming software and application software” (3)

Regardless of the massive expansion of the computer software industry, the concept remaining consistent since it’s conception is the fact that software development must exist for both internal and external uses for products to be successful. The invention of programming languages during the 1970’s and 80’s including COBOL, FORTRAN, and Assembly led to the creation of programs that changed everyone’s world overnight and made daily life a lot easier. Typewriters and manual bookkeeping were abandoned as everyone adapted to using Lotus 123 & Notes or Microsoft Word & Excel. Architects started using CAD rather than drafting by hand, and kids could play video games at home instead of visiting the arcade down the street. The more software development programs evolved, the more consumer offerings advanced.

Then in 1989 came the World Wide Web, and things started to get really cool. Programming languages including HTML & Java enabled the internet to interact with just about anything on your computer, and develop systems that incorporate live data, to be updated in real time. How about some examples as to how this is all coming together? Think about QuickBooks for accounting, Oracle’s Platform, Tablets for downloading books online, or how Microsoft PowerPoint can download images from the internet that are incorporated into a presentation. They all exist because of the rapid progression of internal software development and best practices.

As much as software engineering has advanced, don’t forget about frontend development. Design methods including IxD (User Design), UI (User Interface), UX (User Experience), and GUI are now so important that one can attend college and earn a degree in the frontend aspect of software design. Just like learning programming languages, making the user experience positive and educational is a lot harder than it looks. Programs not only need to be easy to use and appeal to the consumer but must be viewable on multiple devices – particularly mobile ones since the world is now a place where people access systems on mobile devices more than PCs. One of Steve Job’s famous quotes begins with – “Simple can be harder than complex.” His quote was an accurate forecast for what has become desirable in the technology industry. Consumers want products that are unpretentious, aesthetically pleasing, and practical. But as many engineers know from experience, it’s difficult to make a simple product. Think about Amazon’s one-click ordering – one click for the user, but likely fifty+ steps for the software.

But we’re not finished yet. It takes a lot more than passing on the written code to the next stage of development before the content is decorated and wrapped up in a bow for the end user. The process of software development needs to have a holistic approach to project completion. The methodologies for Systems Development Life Cycle (SDLC) of Waterfall, Agile, Rapid Prototyping, etc.. serve as a guidance to help developers decide how they will complete a project. Will goals be established and completed before considering edits, or will there be a focus on creating a working product while allowing the flexibility of additional functionalities to guide future development? The strategy of choice helps to make key decisions, as product building cycles through the six main stages of development include: requirement gathering, design, coding, testing, deployment, and maintenance.

The expanding world of information technology has made it possible for many talented people to invent game-changing platforms that offer a variety of products and services to consumers. America’s youth is currently growing up knowing about tech superstars as much as they do about music celebrities. Mark Zuckerberg, Jeff Bezos, and Elon Musk are now household names that are in the media as much as Lady Gaga. Does that mean that we all need to grow up and become C++ experts so that our entrepreneurial company that we founded in our college dorm room can end up becoming the next big hit on the S&P 500 Index? No, I don’t think so. There are plenty of other ways to make a positive difference in the world. But just remember the next time you press a button on your computer, that your one click, just carried out fifty steps.

Sources

  1. http://www.webopedia.com/TERM/S/software.html
  2. http://www.openprojects.org/software-definition.htm
  3. https://www.sciencedaily.com/terms/computer_software.htm

 


This article was originally published on LinkedIn: http://bit.ly/2pdc2Yc

Robert Endo is the founder and Engagement Manager of Intrepid Data.

Intrepid Data is a full-service developer that builds platforms for web-based applications