Series: Software Engineering Fundamentals | Part Part 2 of 19 > Delivered at Universidade Potiguar (UnP) in 2010
Today was the second lecture of the Software Engineering course at Universidade Potiguar (UnP), and we focused on a fundamental theme: process, models, and purpose. From the start, I wanted to frame the idea that chaos in software development isn’t fate — it’s a reality that can be managed with the right mindset, collaboration, and thoughtful practices.
Opening with purpose
We kicked things off with a simple but provocative question: what are you hungry and thirsty for? Technology? Results? Control?
It sparked meaningful discussions. Many students shared personal drivers — curiosity, recognition, job stability — and we connected those to how we approach software development. Behind every decision, there’s a motivation. When we align those motivations with method, we start choosing more consciously.
Software isn’t just code
Software, I explained, is more than just code. It’s configuration. It’s documentation. It’s user experience and business alignment.
This holistic view is what turns coders into engineers. It helps students shift focus from “finishing tasks” to “delivering value.” We also revisited the infamous “Software Crisis.” Not because it’s a dated concept, but because its underlying lessons are timeless. Our problems have evolved — they’re no longer about getting code to compile, but about building the right thing in the right way, sustainably.
Activity: analyzing contexts
I had students form small groups and choose a development context — a made-up company, a university project, a startup — and analyze the people involved, processes visible, tools used, and how culture influenced it all.
The goal was to develop a systems-thinking mindset early. Facilitation tip: let students speak freely before correcting or nudging. Let them surface assumptions. The conversations that emerged revealed surprising insights — undocumented processes, conflicting roles, cultural frictions. It helped everyone realize how messy and interesting real development environments are.
Processes, models, and decisions
We explored what a software process really means: a set of practices aimed at delivering reliable, working software repeatedly.
I presented models ranging from waterfall to incremental to RUP and component-based development (CBSE). The important point was not to memorize each one, but to understand the context they were created for. Each model solves a particular set of problems — and brings trade-offs. Engineers aren’t just implementers; they are also choice-makers.
Activity: problems and methodologies
To end the session, I invited students to reflect: “What problems have you experienced in software development?” and “What would you expect from a methodology to help you with those issues?”
Students named communication breakdowns, unclear expectations, poor testing, scope creep. When asked what they expected from methodologies, they suggested clarity, alignment, testability, and iterative feedback. It was powerful to connect the theory with their lived experience — and show that process is not just bureaucracy; it’s a support system.
From the facilitator’s perspective
This kind of class doesn’t run itself. You have to show up prepared, yes, but also present. You have to listen more than you talk, ask more than you answer, and design the space for learning rather than control it.
Watching the students engage, challenge, and start to map their realities onto what we discussed — that’s the real goal. Not content delivery. But mental model construction. And when a class leaves with more questions than answers, but with sharper questions — that’s a good day.
Posted as a reflection on a class where complexity didn’t win. We continue learning to design together — through process, purpose, and participation.
Series Navigation
- Previous: Part 1 - Why Software Engineering?
- Current: Part 2 - Taming Complexity
- Next: Part 3 - Waterfall Model
- Complete series: Why Software Engineering? | Taming Complexity | Waterfall Model | Evolutionary Models | Agile Mindset | Scrum Productivity | Scrum Cycle | XP Quality & Courage | XP Principles & Practices | XP in Practice | Domain-Driven Design