A Concise Software Engineering Beginner’s Guide for Business Tech Enthusiasts

Basic software definitions, concepts, and practices for Business Technologists.

ᗰṳhumuzå ₱ɨuṩ
9 min readMay 15, 2023
piusmwilson

Introduction

Back in the 1950s, when the dependency on computers increased, the software needed to manage them also grew and thus Software Engineering/Development became a necessity for businesses and users all over the world.

“Our civilization depends critically on software, and we have a dangerously low degree of professionalism in the computer fields.” — Bjarne Stroustrup

In the last 63 years (since 1960), the amount of software produced and used by modern society increased greatly necessitating a need to set principles, objectives, and standards, when estimating the necessary resources (like cost and human capital) for developing quality software to meet customer requirements and manage their expectations.

Today, it is hard to imagine an area of human activity or business endeavour where software is not used, considering most of the devices used in workplaces, households and the large computer infrastructures operating in governmental organizations or large corporations are powered by software.

This article tries to break down most of the software-related concepts, practices, and topics that anyone in the business of Software Engineering as well as enthusiasts should know about.

What is Software

Software is a set of computer programs that enable a computer system (hardware) to perform specific tasks.

Software runs on hardware which are the tangible components, or delivery systems that store and run the written instructions provided by the software to perform the actual work.

Computer programs are a set of instructions/algorithms applied to various types of data that is used as a process of creating the software program with the help of a programming language.

Characteristics of Software

  • Software is developed or engineered and not manufactured.
  • Software doesn’t wear out but it does require enhancements or scaling depending on how, where, and for whom it’s being developed.
  • Software should be applicable, maintainable, scalable, reliable, efficient, and well documented at the very least to be considered quality when handing it over to the client.
  • Software, and especially good software is operational, transitional, and maintainable.
  • Software can also have some restrictions e.g., legal compliances, industry standards, Cost, talent hiring, and time to market among others that need to be considered.

What is Software Engineering

Software Engineering is a technical discipline or approach that applies computer science and engineering concepts in the design, development, testing and maintenance of quality reliable, usable, and dependable software.

During Software Engineering in the business environment, vendors or Software Developers will be subcontracted to develop all, or some components, of the software systems and/or develop the hardware that the software will run on. In this case, the vendors will make a bid by providing proposals (technical and financial capability) in response to a request for proposals (RFP) which are evaluated before the contract is offered.

The professional practice of Software Engineering requires technical proficiency and a high code of ethics, which all enthusiasts of Software Engineering should embody. The 10 commandments of Egoless programming by inspired by the book, The Psychology of Computer Programming, first released in the 1970s, where Jerry Weinberg coined the term “egoless programming” partly speaks to this effect.

“When a Princeton neighbour of Albert Einstein’s discovered to her horror that her little girl had been going to Einstein for help with her arithmetic homework, she apologized profusely. Think nothing of it, Einstein replied — I have learned more from her than she has from me.”-Tweet by Gerald Weinberg

A Brief History of Software Engineering

The term ‘Software Engineering’ first was used in the late 1950s and early 1960s, where ‘The Concept of Software Engineering was first discussed at the 1968 NATO Science Committee in (Garmisch) Germany.

The NATO Science Committee sponsored two conferences (The NATO Software Engineering Conferences) on Software Engineering in 1968 and 1969, which as generally believed marked the official start of the profession giving the field its initial boost as the term ‘Software Engineering’ was suggested at these conferences to discuss the software crisis, a name given to the difficulties encountered in developing large, complex systems in the 1960s (through the 1970s -80s).

Around this period, a lot of software projects ran over budget and schedule, some causing property damage while a few led to the loss of life.

The software crisis was originally defined in terms of productivity, with the term software crisis used in reference to the inability to find and hire qualified programmers but over time evolved to emphasize quality which is how we now use terms like Software Quality and Software Quality Assurance.

By identifying many of the problems of software development It was thus, proposed that the adoption of an engineering approach to developing software would reduce the costs of software development and lead to more reliable software.

Breaking Down Software Engineering

Software Engineering is a body of knowledge whose concepts and principles can be approached in parallel with the software development life cycle beginning with a general introduction to software engineering, which essentially defines this body of knowledge, as well as the main methodologies of software engineering.

Engineering

Mostly involves applying science, conventional methods, and applicable tools to find cost-effective and sustainable/scalable solutions to developing problems. This can be in any industry where engineering is applicable.

Development

Is the process of developing, being developed, or the result of developing.

Software Architecture

Refers to the fundamental structures or building blocks of a software system. The way software components (subroutines, classes, functions) are arranged and interact or integrate with each other.

Software Engineering

Is a systematic, disciplined & more so, quantifiable approach to the development, operation, and maintenance of software or software projects.

Software Development

Is a set of activities (conceiving, specifying, designing, programming, deploying, documenting, and testing (bug fixing) involved in the process of creating and maintaining software applications, frameworks, or other software components.

Front-end Vs Back-end Vs Full-stack Development

Front-ends work on what the user can see while Back-ends build the infrastructure that supports it and Full-stacks are both in one. Both Front-ends & Back-ends are necessary components for high-functioning software or applications.

  • Front-end — ensures a satisfactory user experience with no issues, errors, or downtime by planning, designing, building, and implementing quality user interface systems for the software or application in question. Front-ends create and optimize systems, resolve UI/UX issues and even play an active role in testing and troubleshooting activities.
  • Back-end — typically deals with the logical back-end and core computational logic. Back-ends are responsible for the server-side/back-end part of a software or application and usually write the business logic of software, web services, and APIs used by front-end.
  • Full-stack — usually comes with experience working both as a Front-end and Back-end. Often referred to as “jack-of-all-trades”, Full-stacks have skills in a wide variety of coding niches, databases, graphic design, and UI/UX that enables them to do their job well working both the client and server ends.

The case of a Software Engineer Vs a Software Developer.

While Developers and Engineers apply advanced technical skills to create computer programs, and their roles overlap in many ways depending on the team you working on, Software Developers and Software Engineers typically handle different steps when creating applications.

Software Developers identify customer needs, develop, customize, test, and modify the software as needed to meet those needs, for many industries while Software Engineers are considered a type of software developer, who apply engineering principles, knowledge of programming languages, architecture, and structural design to build systems and software solutions for end users and are typically involved in all stages of the Software development life cycle.

The Software Developer vs. Software Engineer issue often puzzles many technology professionals and aspiring software professionals may confuse the two positions because the two professional roles share similar responsibilities and sometimes educational backgrounds with titles often being used interchangeably, but they generally differ in their methods and outcomes.

Software Developers and Software Engineers typically handle different steps when creating applications with Software Developers, often working directly with clients or as part of a team of developers, engineers, and programmers to create software solutions that meet specific user needs and Software Engineers typically work in teams with other developers, project managers, product managers and other professionals considering all components of a project and how potential solutions may affect the project overall.

Also, Software Engineers tend to be in more collaborative roles, while Software Developers often and may work in a more independent environment.

Developer expertise Levels

They are basically 3 levels but, in some places, or companies, you will find 5 or 7 levels depending on the breakdown and classifications of the expertise levels.

As you grow your experience in the Software Engineering industry you will go through several levels based on your expertise.

The 3 common basic levels are;-

Junior Developer

While starting out, most _Developers_ will be trainees/apprentices or referred to as Junior Developers as most commonly known in the software industry. At this level, you probably have 0 to 1.5 years of experience tops and everything you know about Software Engineering is basic at best.

At this level, you probably have 0 to 1.5 years of experience tops and everything you know about Software Engineering is basic at best.

You will work on a team where you either pair, work with or have your code reviewed by another Developer probably a mid-level developer before it gets to the Senior developer or Lead Developer.

Mid-Level Developer

Mostly referred to as Intermediate Developer on some Job descriptions (JDs) put out by hiring companies or recruiters, a mid-level Developer is any developer with 2–3 years under their belt and has developed a substantial level of technical skills in the software engineering industry.

At this level, a developer has worked on some projects and can work unsupervised on a team among other things or under limited supervision which is typically code/tasks review from the Senior Developer who will act as a guide, mentor, and advisor for the most part.

Senior Developer

This developer is also known as the **Developer Lead** or **Team Lead** and is often referred to as a problem solver, because of their deep, specialized knowledge and exhaustive experience in the software engineering industry, knowledge of programming languages, tech stack, or even a specific product they are working or worked on.

At this level, a Developer has somewhere 5 to 8 years + of experience and can handle complex problems, comfortably review other developers’ codes, solve their problems, be a trendsetter when working on projects, and most importantly mentor Junior and mid-level Developers.

The Life Cycle of Software

Typically, the software will have functional and non-functional requirements among other client needs to be specified from which an analysis/planning is made to ascertain a scope.

It will have a life-cycle, which is a software process, during its development that involves engineering phases, consisting of concept creation, requirements specification, design, implementation, integration, testing, and deployment.

This process of developing or engineering software is known as the Software Development Life Cycle (SDLC); “the overall process of developing software from start to finish.”

The software development life cycle (SDLC) is the process for planning, creating, testing, deploying and post-improvement (where required) of a software product. — It consists of stages (Analysis/ Planning, Design, Development/Implementation, Testing, Deployment, and then maintenance.) which are sometimes unchangeable at certain levels depending on the industry, client requirements and team.

As software evolves, it will undergo monitoring, maintenance and continuous improvement cycles and each software development lifecycle model provides specific guidance to the sequencing and repetition of life cycle activities to deliver high-quality software systems.

SDLC. imageCredit: Internet.

Conclusion

Software Engineering/Development outside in the business environment is a very complex process, mostly because real-world software is much larger, more complex and run on big budgets with a lot of uncertainties, timelines and often unreasonable expectations from the various stakeholders.

Programming isn’t about what you know; it’s about what you can figure out.” — Chris Pine.

It is a lucrative venture and getting proficient or mastering the various software engineering concepts, principles, essential processes and industry standards can give you an edge in the cut-throat competitive technology space.

There are several areas to focus on within software engineering, such as Programming Basics, Software design, Software Processes, Software Project management, Software testing, Software Quality Assurance(SQA), Configuration Management, Database Design and Administration, Human-Computer Interaction, UI/UX Concepts, Operating Systems, Computer and Software Architecture, Software Modelling and Analysis, Embedded Systems, ML/AI & GenAI, Computer Networking and Security concepts, Research and Development(R&D/Research Methodology, Data Structures and Algorithms(DSA), Technical Writing and Social Responsibility/Legal & Ethics among other disciplines.

These can be different or categorized differently depending on the information source, learning centre or mode of research on your part.

Reading Resources

--

--

ᗰṳhumuzå ₱ɨuṩ
ᗰṳhumuzå ₱ɨuṩ

Written by ᗰṳhumuzå ₱ɨuṩ

An IT Engineer•• Bibliophile•📚 • { Into Books, Tech, Basketball, Coffee, Food & minding my business!🥹}

No responses yet