Original article was published on Artificial Intelligence on Medium
Software engineering is a methodology that consists of a set of principles that are applied to the development of software. Examples of software engineering principles are analysis, design, testing and implementation.
Having software engineering as a skill in 2020 is a basic necessity for any serious developer. So many people might make the mistake of thinking Software Engineering starts and ends with programming or having coding skills. But seasoned developers within all tech domain will attest to the fact that Software Engineering is more of a practice than a skill.
Unfortunately, Software Engineering is not a skill that you will be taught in most advanced machine learning degrees.
There is more than enough content to be covered within an MSc study in machine learning. Some courses simply do not enough time to dedicate to the study of how systems and application that leverage machine learning techniques should be developed.
In my MSc studies, having a background in software engineering, coupled with an awareness of some programming languages was a prerequisite that had to be met.
Why is understanding Software Engineering essential?
It’s great if you understand the internal workings of a convolutional layer, or can describe in detail a variety of neural network architecture.
Still, the truth of the matter is, in the real world, machine learning models exist outside python scripts and notebooks.
Commercial products that you’ll work on after your studies come in the form of web, desktop, and mobile applications. Knowing the standard methodology of developing software that has an embedded machine learning model is paramount to your success as a machine learning practitioner.
In my current role as a Computer Vision Engineer, the most important skill that’s proven useful is my ability to pick up new OOP programming languages and develop software, more specifically, iOS apps.
Machine learning models can exist in various systems, but all these systems have a standard approach to how they are developed and maintained. Software engineering educates you on these approaches. Software Engineering is also riddled with principles to guide the software development and maintenance process, examples are KISS, DRY, OOP etc.
Below is a quick, friendly introductory video to Sofware Engineering principles.