Software Engineering: A Business Technology Enthusiast beginner's guide.

Software Engineering: A Business Technology Enthusiast beginner's guide.

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

Pɨuṩ Mṳhumuzå's photo
Pɨuṩ Mṳhumuzå
·Jul 26, 2022·

7 min read

Subscribe to my newsletter and never miss my upcoming articles

Play this article

Table of contents

Background

Today, Software is now an integral part of many businesses thus the need to know how to create it, maintain it, make it better, source it, procure it and offer it as a service or product.

Therefore, it’s no surprise that software-related learning paths and careers are now very popular. Not to mention the need to constantly make sure it’s of quality. Businesses today rely on various software for operations, marketing, growth, and profit generation.

Introduction

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

Breaking down Software Engineering & Software Development

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.

Software can be understood as a set of instructions, data, or programs and sometimes algorithms used to operate computers and execute specific tasks. {Software is independent of hardware and makes computers programmable.}

Software Architecture.

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.

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.

A Software Engineer Vs A Software Developer:

A software Engineer applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software while a Software Developer is a problem solver with a creative mind, and the ability to think outside the box and other technical skills that enable him/her design and develop computer software and applications.

But in all true honesty, these two are almost the same and in today’s business technology environment, their roles will be similar across many companies.

Personally, I like to believe that Software Engineering and Software Development are one in the same thing but that’s just my opinion. Sometimes you will also hear people call it software programming, coding, or simply programming.

Software in a nutshell; -

Typically, a software will have functional and non-functional requirements among other client needs specified from which an analysis/planning is made to ascertain a scope. And the process software of developing or engineering software is known as the software development life cycle; — “the overall process of developing software from start to finish.”

The software development life cycle; — consists of stages (Analysis/ Planning, Design, Development/Implementation, Testing, Deployment, and then maintenance.)

SDLC.png SDLC. imageCredit: Internet.

Typical Characteristics of Software

  • To put it simply, 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 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 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.

Front-end Vs Back-end Vs Full-stack Software Engineering/Development.

Because the industry is growing and diversifying at a fast rate there are instances where an engineer and developer will defer but like I said before sometimes they are the same and sometimes they are different, therefore it comes down to the Job Description(JD) and industry-specific needs.

For purposes of simplicity, I’m choosing to use them to one.

  • A Front-end engineer/Developer; — 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.
  • A Back-end engineer/Developer; — typically creates the logical back-end and core computational logic. He/She is responsible for the server-side/back-end part of a software or application. Back-end developers usually write the business logic of software, web services, and APIs used by front-end developers and mobile application developers.
  • A Full-stack engineer/Developer; — can develop both client and server software (that is, is conversant with both frontend and backend). This usually comes with experience working both as a Front-end and Back-end. He/she can be seen as a “jack-of-all-trades” who has skills in a wide variety of coding niches, databases, graphic design, and UI/UX that enables he/she to do their job well.

In summary, 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.

Software testing

Software testing is a process of using various industry-standard techniques to show and verify that a software, application or system is fit for use. It’s a way of checking whether the said software product matches expected requirements and is defect-free. The purpose of software testing is to identify errors, gaps, or missing requirements.

Some types of software testing include; —

  • Functional Testing (Unit testing, Integration testing, System testing, Interface testing, Regression testing, Beta/acceptance testing)

  • Non-Functional Testing (Performance testing, Load testing, Stress testing, Volume testing, Security testing, Compatibility testing, Install testing, Recovery testing, Reliability testing, Usability testing, Compliance testing ).

I will write a detailed article on Software testing and the various testing types soon.

Level of Developer expertise

As you extend your skills and grow your experience in the software Engineering industry you will go through a number of levels based on your expertise. They are basically 3 levels but in some places or companies, you will find 5 or 7 depending on the breakdown and classifications of the expertise levels.

Junior Developer

When you are starting out you will most likely be a Trainer/Apprentice or most commonly known in the industry as a Junior Developer. 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.

Read my Article; — The Struggles of a Junior Software Developer to get a feel of the experience a typical Junior Developer goes through.

Mid-Level Developer

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

This 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 his/her deep, specialized knowledge and exhaustive experience in the software engineering industry, programming language, tech stack, or even the specific product being worked on.

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

Other Areas of focus; —

  • Seven Principles of software testing.
  • Project Management & Product Management.
  • Software development tools(IDE, collaboration tools, version control tools, marketing tools)
  • Tech communities you can join to foster your technical growth in the software engineering industry.
  • Agile, its manifesto, core values, and principles as well as the various frameworks like Scrum under it.

Some reading resources to check out

Conclusion

Software Engineering is a lucrative venture for those looking to technology to solve evolving problems. I must say it’s not the only way. there are a lot of approaches one can explore when solving business problems.

 
Share this