1 From Programming to Software Engineering

This chapter sets the scene with respect to the relationship between programming and software engineering. The important issue is that software engineering is much more than just programming. Of course, the running system created by an act of programming is an essential and rewarding ingredient of what the right system will become, and it is important that the reader is actually able to use and apply a programming language to create a program, at least a small one. But is it by no means everything. Thus, this chapter

  • introduces the notion of software development and that it is more than just putting a program together;
  • shows what additionally is needed beyond programming, i.e., shows the differences between programming, software development and software engineering;
  • shows the motivation for the discipline of software engineering
  • introduces some important elements of software engineering that actually show the differences between software engineering and programming, and shows how they relate to each other.

What is fascinating about this aspect of software development is that it is more
than just programming. Rather, it is to learn the whole picture and as a software
engineer to solve a problem or exploit an opportunity that the users may have.

As a new student, understanding what software engineering is about is not easy, because there is no way we can bring its realities and complexities into the student’s world. Nevertheless, it is a student’s responsibility to embark on this journey of learning and discovery into the world of software engineering.

Throughout this entire book, we will trace the journey of a young chap, named
Smith, from his days in school learning about programming through to becoming a software engineering professional and continuing his on-going learning process in this ever-changing and growing field. In a way, we are compressing time into the pages of this book. If you are a new student, you are considered to be the primary audience for this book. Smith will be your guide to the software engineering profession, to help you understand what software engineering is about. If you are already a software engineer by profession, or you teach and coach software engineering, you can reflect on your own personal journey in this exciting profession. As an experienced developer you will observe an exicting and fundamentally new way to understand and practice software engineering. Regardless of your current personal level of experience, through Smith’s experiences we will distill the essence of software engineering.

After studying this chapter, you should be able to:

  • explain the terms programming, software development, and software engineering, and how they relate to each other;
  • explain the difference between professional programming and hacking;
  • understand how teamwork affects the dynamics of software engineering (e.g., importance of code understandability);
  • explain the importance of testing as a tool to promote safe modification of existing code;
  • understand how people management blends into software engineering and why it is important to consider it;
  • explain the role of requirements engineering.