Although software engineering has become crucial to our modern society, it is still a new and often misunderstood discipline.
One of the most harmful misconceptions is that programming and testing are similar activities to construction in mature engineering disciplines, performed after the design has been completed.
In this talk I will give the audience a fresh look at software engineering, inspired by a 1992 article by Jack W. Reeves: “What is design?” I will show how software product development is a creative, collaborative process involving the create creative energy of all the role players in a team (including UX, BA, Dev, Test, Ops).
Finally I will revisit ideas from XP (Extreme Programming) and just show how cool this software design can be when we do it together as a team.
13. @jacdevos jacques@nreality.com
Not a state, but a process
Not magic, but hard work
Learning about real user needs
Iterate and experiment… until its tasty
Design makes things “tasty”
40. @jacdevos jacques@nreality.com
Don’t build software, design it!
• Design is a iterative process to create Tasty Products
• Software product development is a Wicked Problem
• Design is a better model than Construction
• Code is our ultimate software design artifact
• XP, Testing and Continuous Delivery are design tools
• Software Developers are Product Designers
Key point 1: Wrong Mental Model most problems in software is caused by a model mismatch: programming and testing are design and not a construction activities
Key point 2: Scrum or XP: with the wrong mental model will delivery same results.
Key point 3: Right Mental Model: DESIGN. feedback, collaboration and rework produces tasty designs - although it can be budget controlled, it does NOT fit feature by feature on a Gantt chart
Key point 4: Things just fall into place: when you have the right mental model.
Wrong! I will show you that you don’t
Although ”software is eating the world” development is still misunderstood,
I want to share the lessons I learnt,that cleared up misconceptions in software development
So if design is a better model for programming
WeStep away from software development specifically
Head of tasting
Tasty design: how to create natural flavored rum
Needs driven, spine model
Shout out to the spine model – we cannot solve problems if we don’t start at the needs
Talk to customers directly
Empathise rum drinkers
Spend time on the problem
Build and make
Test with user
Design is a process, a iterative process.
If someone talks about designer clothing or design jewellery, it does not mean it was built by a design but that it went through a design process (and although hard, anyone can follow a design process)
I don’t drink rum.
cannot be clearly defined
don’t have clear success criteria
don’t have simple root causes!
only when you have the complete solution do you understand the problem completely
I love Kanban, Scrum, XP and the Agile Principles – but I often see it failing due to not really understanding the essence of why its effective.
The reason why it worked in New New Product Development game is lost on many many thousands of Scrum teams.
We failed to see this even with Scrum, we did not address the essence of iterative
It is a design document after all
It is a design document after all
It is a design document after all
High-level design still has a place.
Checking (the automated verification) – has a different purpose
Eureka moment
I think software developers should be involved as designers!
What work is better, more fun, more productive, more fulfilling than design work. Even designing test cases/ acceptance criteria you design to measure if the intent was met...