Software : Engineering or Craftmanship ?

Modern era can easily be defined as the age of software.  Software is so pervasive that it literally encroaches on every aspect of our lives, we interact with some form of software or other from the moment we wake in the morning until we go back to sleep at night, whether it be using our alarm clocks, making our coffee, driving our cars, watching television,  listening to our radio’s, ATM withdrawals the list goes on.

Software can be categorized into two distinguishing types :

  • System Software  is software that acts as tools to help construct or support applications software i.e. Operating Systems, Databases, networking software and compilers.
  • Application Software is software that helps perform some directly useful or enjoyable task i.e. e-mail software, word processors, spreadsheet, smart phone apps, games etc.

Software can either be bought as off-the-shelf software i.e. Microsoft Office 365  or it can be the result of a bespoke development to accomplish a specific task like lunar landing module.

Many people don’t realise that the development of software is not a simple task, and it often requires the interaction and collaboration of a team of professionals. Often these teams will include people with a diverse set of skill sets and specialities.

The challenges experienced by a software development team during the development of software are a direct result of the goals the software seeks to achieve which include;

  • Meeting the users’ needs
  • low cost of production
  • high performance
  • portability
  • low cost of maintenance
  • high reliability
  • delivery on time

In order to overcome the challenges and obstacles faced and successfully develop software product,  a team will need to implement processes, methods and tools which are collectively known as software engineering.  The basic main ideas are:

  • Emphasis on carrying out all stages of development systematically
  • emphasis on establishing exact user requirements
  • formal specification of the requirements
  • delivering early versions of system components to customers (prototyping)
  • selection & use of programming languages
  • Quality Assurance

What is software engineering ?

Software engineering not only covers  the technical aspects of building software systems like programming etc. , but also includes  management issues, such as directing programming teams, scheduling, and budgeting etc.

In a nutshell software engineering can be defined as the application of systematic, disciplined, quantifiable approach to the development, operation and maintenance of software and the study of these approaches. It is the application of systematic approach to the analysis, design, assessment, implementation, test, maintenance to software development integrating  significant mathematics, computer science and practices whose origins are in engineering.

Many programmers view the writing of computer code as a craft and I personally do subscribe to that view, but I also concede that in order for a software solution to be successful it still requires the application of rigid engineering practices.

Although I do acknowledge that programming itself can be classified as a craft,  I will have to affirm that great software is engineered. Code may well be elegant, beautiful and well crafted but it is still useless if it doesn’t address requirements, produced to budget and delivered on time.

It is the process of gathering requirements, defining solution boundaries and quality control and a number of other processes involved in implementing a software solution, that is the actual engineering part. This is primarily the reason why I believe software is engineered rather than crafted. Programmers my consider themselves craftsmen, but they work on an engineering team.

What is your view is software crafted or engineered? would love to read your comments and opinions  below.

Gary Woodfine

Freelance Full Stack Developer at
Helps businesses by improving their technical proficiencies and eliminating waste from the software development pipelines.

A unique background as business owner, marketing, software development and business development ensures that he can offer the optimum business consultancy services across a wide spectrum of business challenges.

Affiliate Disclaimer

Disclosure: Please note that some of the links included in the blog posts are affiliate links, which means I will earn a commission if you decide to make a purchase.

I only include affiliate links to products, services and companies that I have personal experience and have actually used. I only recommend them because they are helpful and useful, not because of the small commissions I make if you decide to buy something.

Please do not spend any money on these products unless you feel they are relevant, suitable and will help you achieve your goals.

Buying anyone of these products and the commisions earned will not make me an overnite multi millionaire, but they will help to cover the hosting costs and compensate for the countless hours and effort I put in to create meaningful and valuable free content I provide to help others succeed.

You've also undoubtedly noticed that I also use various advertising networks - unless of of course you're using an Ad blocker, this is also an attempt to reduce my monthly deficit I experience in providing free relevant, valuable and on occassion insightful content for the benefit of others.

I only really make some money if people click on the ads, unless of course you consider 1c per 1000 impressions real money!

Bear in mind just how many impressions I need to make before I can cover my £20 hosting costs a month!

If you are using an adblocker and guilt stricken you can of course donate using any of the buttons below, but I won't be holding my breath.

Buy me a coffeeBuy me a coffee