All About Software Engineering: Part 1 (Science, Engineering and Mindset Part)
Saiful Islam Rasel
Senior Engineer, SDE @ bKash | Ex: AsthaIT | Sports Programmer | Problem Solver | FinTech | Microservice | Java | Spring-boot | C# | .NET | PostgreSQL | DynamoDB | JavaScript | TypeScript | React.js | Next.js | Angular
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:
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:
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:
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 !!!