Growing Into the Role
Intro#
For a long time now, I’ve been thinking about how I would structure something like a course on software engineering. One thing that’s important to me is to emphasize practical aspects and “common sense” tools and techniques, because often what ought to be common really isn’t.
I feel that gap even more strongly because I came into writing software from a non-CS background, and in the early days it was just a means to an end for me. But flailing around without knowing much about even simple things like version control led to way, way too many mistakes and setbacks. In the end, I was almost mad when I found out there were much easier solutions to the problems I was having, and since I learned the hard way, the lessons stuck with me that much more strongly.
So, to try and keep others from making the same mistakes I did, I’ve been wanting to create something that would serve as a combination of resources to get them over the hump I found myself facing down when I started trying to use what I knew about programming to do actual useful work. My plan is to make a course that’s one part intro to software engineering, one part Missing Semester of CS, and one part painfully-acquired warnings for those who might not become software professionals but who still need to write solid, reliable code to enable their day job.
In the process, I also want to reach beyond my own experience and consider some resources I used along the way, pointing out their benefits and their drawbacks so other people can have a fuller picture of what’s available.
That course I’ve been planning is hopefully what you see here. I intend to keep updating it periodically as I flesh out the various topics that seem to me to be the most important for newer developers to understand and master.