I have been watching and participating in the software industry for a long time, and there are three primary things I would like to accomplish in the next round of my education:
- Exploration of software engineering as a human activity, focusing on team dynamics as well as the precise specification and measurement that is the current SE stock-in-trade.
- A grounding in the tools and language of business management, at the level of an MBA.
- A deeper appreciation for the theoretical jewels of computer science, through acquiring mathematical rigor.
Most 'software engineering' programs in academia focus on precise, mechanical specifications of systems in code and documentation. An analogy is to blueprints and buildings that are artifacts of the architectural disciplines. But I think that software engineering lies as much or more in the collective mind of the builders as it does in the specifications and code themselves. As I suspect is true with construction, it takes practiced insight, common sense and heart as much as it does blueprints to build a quality building, certainly a great one. This is not a new insight. Many writers (Weinberg, Brooks, DeMarco, McConnell, McCarthy, Beck, Cunningham, Cockburn,
Fowler,
Spolsky) have alluded to or dealt with this.
Most software development projects in industry avoid theory, and even methodology, if not in letter then in spirit, like the plague. It seems like too much work to apply formalisms to systems when the job 'just needs to get done, now'.
When I first read the 'Agile Mainfesto', it rang absolutely true to my experience and my sense of the real priorities of efficient and effective software development. I've been following the writings of many of the participants for years, and I see understandings emerging that I think are the way of the future in SE. I would like to add my efforts to theirs.