Other Parts of This Series:


Software Engineering (Photo Credit: Freepik)

Software Engineering (Photo Credit: Freepik)

In this series, we try to explore software engineering in a modern way. We will try to learn the different software engineering aspects one by one. In this part, we try to explore the science, engineering, and mindset part.

So let’s get started…


Story

Shuvo and Tapu, close friends who have spent two years in the software industry since graduating, engage in a reflective conversation about their careers. They share experiences, discussing the highs and lows they’ve encountered along the way. Inspired by their journey, they decide to leverage their collective knowledge and embark on a new venture: creating software together.

To kickstart their project, they realize the importance of laying a strong foundation. They commit to deepening their understanding of software engineering fundamentals and embracing the mindset required for success in the field. This decision marks the beginning of their journey towards building their dream software.


What Is Science And The Scientific Method?

Science is the systematic study of the natural world through observation, experimentation, and analysis. It aims to understand the underlying principles and mechanisms governing various phenomena.

Scientists seek to uncover knowledge, formulate theories, and expand the boundaries of human understanding. Science is often driven by curiosity and the pursuit of truth.

The scientific method involves 4 basic steps, like:

  1. Characterize: Make an observation.
  2. Hypothesis: Create a description and theory that explain the observation.
  3. Predict: Make a prediction based on the hypothesis.
  4. Experiment: Test the prediction in real.

What Does Engineering Mean?

Engineering, on the other hand, is the application of scientific principles/methods to design, build, and optimize solutions to practical problems. It involves using scientific knowledge, along with mathematical and technical skills, to create products, systems, and processes that meet specific needs or objectives. Most of the engineering disciplines are highly involved with mathematics.

Engineers strive to innovate, improve efficiency, and solve real-world challenges in various fields such as aerospace, civil, electrical, and software engineering.

Relation Between Science And Engineering:

We already can smell the relationship between the science and engineering from the above discussion. Science provides the foundational knowledge and theories that engineers use as the basis for their work. Engineers, in turn, apply scientific principles to develop practical solutions and technologies that benefit society. This iterative process often involves collaboration between scientists and engineers, with advancements in one field driving progress in the other.

Outcome Of Engineering:

Tangible products are the outcome of most of the engineering. Like bridges, buildings, aircraft, rockets, etc. And as I mentioned earlier, to do so effectively, math is playing a vital role.


What Is Computer Science?

As its name mentions, computer science only deals with the computer and its computational parts. It encompasses a wide range of topics, including programming languages, data structures, algorithms, computer architecture, operating systems, artificial intelligence, machine learning, and more.

Computer scientists explore theoretical concepts as well as practical applications, seeking to understand how computers work, how they can solve complex problems, and how they impact society.

What Does Software Engineering Mean?

In a word, software engineering is an engineering discipline that is concerned with all aspects of software production. In other words, software engineering is the scientific method of designing, building, and optimizing solutions to practical problems in software.

Most of the people think of software engineering as programming. But it is not. Programming is something for producing code; on the other hand, software engineering is the way of making decisions about producing this code, maintaining it, and nurturing the produced code over time.

Relation Between Computer Science And Software Engineering:

Like the relationship of science and engineering, it’s something the same for computer science and software engineering. Computer science is concerned with the theory and fundamentals of computers and their computation; on the other side, software engineering is concerned with the practical uses of these theories and fundamentals for developing and delivering useful software.

Outcome Of Software Engineering:

Unlike other engineering disciplines, the outcome of software engineering is not a tangible product. The outcome is known as software. Yeah, the software can be a part of the tangible product, but software itself is not a tangible thing. That’s why it is very challenging to visualize the success and failure of the software engineering outcome in the early stage.

What Is Software?

It is the outcome of the software engineering. Software refers to a collection of instructions, programs, and data that tell a computer how to perform specific tasks or operations. It encompasses the entire set of programs, routines, and algorithms that enable a computer system to function and execute various functions.

It means it is something that tells a machine or computer to do something so that it can serve a business or solve real-world problems.


Difference Between Traditional Engineering And Software Engineering:

Though both are engineering, they also have distinct differences, particularly in their focus, methodologies, and applications:

  • Focus: Traditional engineering focuses on building tangible physical structures, but software engineering focuses on developing the intangible software.
  • Nature of work: Traditional engineering works with physical components, but software engineering works with digital systems.
  • Development process: Traditional engineering often follows a linear process for a one-time project, but software engineering follows an iterative process for multiple smaller cycles.
  • Complexity and scale: traditional engineering often involves managing large-scale physical systems or structures with complex interactions and dependencies, but software engineering projects can vary widely in complexity and scale, from small standalone applications to large-scale enterprise systems or distributed networks.

Mindset Shifts Needed For Efficient Software Engineering:

It is important to shift to a common mindset for everyone involved in software engineering or the software building process. Some of the important mindset shifting can be considered as follows:

  • Logical thinking means thinking about everything logically.
  • Problem solving means taking or picking everything as a problem and trying to solve it.
  • Programming is not all about software engineering. Means coding !== software engineering.
  • It is possible to adopt the scientific method in software engineering too, meaning to solve a problem, first characterize, then hypothesize, predict, and finally experiment.
  • Become data driven, which means don’t just assume; be accurate with the help of data.Progress with baby steps means doing big things by doing and joining smaller things.
  • Master in learning means always be ready to learn something. It can be from success or failure.
  • Many parties are involved in the whole process of software engineering, so collaboration is the key to success.
  • Always become customer-centric, which means try to solve the customer pain point first.
  • In the modern world, always keep in mind the security part, because no one wants to use software that is not secure.
  • Always should be ready for firefighting, because if we are working on critical software, then any bugs should be fixed at the earliest.
  • And many more, meaning you will learn more from your experience over time.

Summary:

So it is important to understand the science and engineering methods to do better in software engineering too. We can follow the scientific methods in our day-to-day software engineering. Also, it is very important to understand the difference between software engineering and other disciplines too.

For doing well in this field, it is also important to understand the outcomes of software engineering and, more importantly, the mindset needed to adopt.