All About Software Engineering: Part 1 (Science, Engineering and Mindset Part)
Source: Freepik

All About Software Engineering: Part 1 (Science, Engineering and Mindset Part)


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 engineering means:

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. In most of the engineering discipline are highly involve 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 bridge, building, aircraft, rocket etc. And as I mention earlier, to do so effectively math is playing a vital role.


What is computer science:

As it name mentions, computer science is 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 software engineering means:

In a word, software engineering is an engineering discipline which is concerned with all aspects of software production. In other words, software engineering is the scientific methods of design, build, and optimize solutions to practical problems in software.

Most of the people think, software engineering as programming. But it is not. Programming is something for producing code, on the other hand, software engineering is the way of taking decision of producing this code, maintaining it and nurturing the produced code overtime.

Relation between computer science and software engineering:

Like the relationship of science and engineering, it's something same for computer science and software engineering. Computer science is concerned with theory and fundamentals of computer and its 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 discipline, the outcome of software engineering is not tangible product. The outcome is known as software. Yeah the software can be a part of the tangible product but itself software in not tangible things. That's why it is very challenging to visualize the success and failure of the software engineering outcome in early stage.

What is software:

It is the outcome of the software engineering. A software is 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.

Means it is something that tells machine or computer to do something, so that it can serve a business or solves real world problems.


Difference between traditional engineering and software engineering:

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

  1. Focus: traditional engineering focus on building tangible physical structure but software engineering focus on developing the intangible software.
  2. Nature of work: traditional engineering works with physical component but software engineering works with digital systems.
  3. Development process: traditional engineering often follow linear process and for onetime but software engineering follows iterative process and for multiple smaller cycles.
  4. Complexity and scale: traditional engineering often involve 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 shifting needs for efficient software engineering:

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

  1. Logical thinking, means thinks everything logically.
  2. Problem solving, means takes or picks everything as a problem and try to solve it.
  3. Programming is not all about software engineering. Means coding !== software engineering.
  4. It is possible to adopt the scientific methods in software engineering too, means to solve a problem first characterize then hypothesis, predict and finally experiment.
  5. Become data driven, means don't just assume be accurate with the help of data.
  6. Progress with baby steps, means do big thing by doing and joining smaller thing.
  7. Master in learning, means always be ready to learn something. It can be from success or failure.
  8. Many parties are being involved in the whole process of software engineering, so collaborate is the key to success.
  9. Always become customer centric, means try to solve the customer pain point first.
  10. In modern world, always keep in mind the security part, because anyone don't want to use a software that is not secure.
  11. Always should be ready for fire fighting, because if we are working in a critical software then any bugs should be fixed earliest.
  12. And many more, means you will learn more from your experience overtime.


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 of software engineering with other discipline too.

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


Happy Reading !!!

Happy Learning !!!

Happy Sharing !!!

要查看或添加评论,请登录

社区洞察

其他会员也浏览了