Why do we spend time teaching this?
What are the benefits of learning software engineering, and why do we consider it one of the most important topics in a career that mostly deals with work outside of the industry?
A personal take regarding Software Engineering and professionalism as a software developer.
1 post
I’ve been working in the software industry for almost 16 years now, in very different places — from videogame startups to multi-million dollar SaaS companies — and some of the most common shortcomings I’ve seen across the full spectrum have been both a poor understanding of what the engineering process is (and how to make it work properly, in benefit of the software organization within a company), and the lack of interest in the software developer as a proud professional trade, and not just a keyboard magician that transforms coffee into code and wears Hawaiian shirts to work.
Since 2015, I’ve also been teaching Software Engineering at UNC - FaMAF (my alma mater), a course that is part of the Computer Science Major degree. Since this major has a very distinct lean toward academics and research, and not industry work, that course is almost the only place where students get a glimpse of actual work outside the faculty world — meaning that the amount of knowledge we need to cover is quite extensive for the time available.
The topics in this series range from a very basic understanding of how a software process should be set up, how to make it work for the engineering team (and not despite it), and the ideas of “clean coder” and professionalism, to some less well-known concepts about organization, communication and effectiveness, harnessed over years of experience (and struggle).
What are the benefits of learning software engineering, and why do we consider it one of the most important topics in a career that mostly deals with work outside of the industry?