In September 2018, Corinne Vigreux started CODAM, a training program in programming. Corinne is one of the founders of Tomtom and she devotes part of the capital she earned there to make this world a better place. And since this world needs software, it needs talent that can create that software. Claiming everybody can learn to program in 3.5 years, CODAM believes there’s still a lot of untapped talent around, especially among people who can’t afford to take a course or to attend university. The program is for free and in this way, Corinne believes she cannot only help these people but also help industry find the software talent that it so desperately needs.
Checking out CODAM’s website, I noticed it talks about programming. Is that the same as software engineering, I wondered. Where does software engineering fit in, actually? Many engineering disciplines make use of coding, like mechatronics, automotive system design and healthcare system design. Is software engineering just a capability within these engineering disciplines, like thermal analysis for hardware design, construction calculations for an architect or solving a differential equation for a motion control engineer? Or is software engineering a discipline in itself? And if it is, will it benefit from CODAM?
In my daily work, I notice many different definitions of software engineering. People, especially without a background in computer science, often see software engineering as coding or programming. That doesn’t feel like an engineering discipline, does it? To me, an engineering discipline includes understanding the problem and applying technology to find a solution for it.
In fact, I feel coding is the smallest and easiest part of software engineering. And as a consequence, I believe, efforts to just optimize the coding part fail to address our biggest problem.
Wikipedia defines software engineering as the systematic application of engineering approaches to the development of software. It also says software engineering is a subfield of computer science, management science and systems engineering.
The latter is quite interesting. Indeed, the field of system design is part of different departments at different universities, be it computer sciences, mechatronics or management sciences. These all approach things differently. I’ve seen the same in companies – in some, system architects preferably do not have a software engineering background!
To me, software engineering has a lot to do with system design. But especially the design of systems in which the complexity isn’t so much in the components itself, but in the interactions between them. I have yet to hear other system design disciplines consider association and inheritance relations to better understand the interactions between. The complexity is not in fighting physical constraints, but in managing all these interactions and all the possible states caused by the many interactions.
Software engineering is a rather new discipline. And like many other new disciplines, people believe it’s easy, just common sense, something everybody can do and not as difficult as real disciplines like physics or chemistry. The same is true about user interface design or even leadership.
Of course, we need algorithms and programs. But that’s not unique for software engineering; the other disciplines need that as well. It would be good when we as professional software engineers would do a better job communicating what our discipline is all about.
I believe 3.5 years of programming training in CODAM doesn’t make you a software engineer, like a soldering training doesn’t make you an electronic engineer. But it’s still a very good basis and a fantastic initiative. Thank you, Corinne.