Duration
1 day
Overview
This course provides a modern take on software design, and teaches you a designer mindset that will allow you to consistently make better design decisions, getting you ready to take the next step in your career where you’ll be able to design complex software, immensely improve your existing code, and create software that is easy to change and scale.
Developers have an endless fascination with how things work. Every time they look at a system, they wonder how is that done? How could I make one? How can I make it better? They want to take it apart to see what makes it tick. Developing software is all about problem solving. Writing code is only a tiny part of what developers do — most of the work involves solving some really complex abstract problems.
Driven by the need to understand how things work, a key feature of the developer ‘s toolset is reducing a thing into its smallest components. Small things are easier to understand and build. Once you have a set of components, the can be assembled back into the original thing, or into something completely new. You’ll often find developers arguing about the best way to decompose an object. In the real world, the ways to break down an object are constrained. In the virtual world where you are not subject to the laws of nature, there will be many different ways to break an object down into logical components.
Benefits
- To be able to treat software designing as more than just work
- Software designing is much more of a professional hobby than a regular job. To truly develop your skills, you’ll need to have a passion for software designing. You need to find problem solving fun and to love challenges even when it requires you to banging your head against the keyboard for many hours straight
- To be able to understand the software designing aspects of context, culture, and people
- Cultivating a deeper understanding of why things were done in certain ways
- Shift of mindset from “It’s not my job” to shared understanding and self-organization
- To be able to change the attitude that’ll get you pigeon-holed and eventually become a career-killer. You’ll get known as the person who only wants to do certain tasks which in turn limits your exposure to new experiences
- To be able to accept the contribution of software designers, testers and team contributors
- To shift away from the mindset of ‘“I want to build it myself”. When you’re on a client project and the deadline is approaching, you simply don’t have time to fiddle around with building your own linear regression package, which entails taking into account all the edge cases and whatnot. On the job, you’ll often need to compromise and use what’s already built and tested by others.
Module 1 - Conceiving The Purpose & Mindset of Software Designer
- Understanding Software Designing
- Individual Perspective
- Team Perspective
- Perception on software designer role
- Common issues faced by a software designer
- Realization of ‘Mistake caused by a wrong mindset’ and not lack of programming skills
Module 2 – Setting a Mindset that Every Programmer is a Designer
- Making Software Designing an Easy Job
- Focus on What Matters for Users
- Avoid Developing Complex Systems
Module 3 - Best Ways to Improve Your Design Skills
- Understand the Systems
- Tools and Techniques you are Working With
- Knowing that ‘Simplicity is the Utimate Sophistication’
- Controlling Complexity is the Essence of Software Designing
Module 4 – Common Thoughts of Software Designers and How to Correct These Thoughts
- “Difficult to make even small changes”
- “Breaking functionality of the software by making changes”
- “Introducing a new bug by fixing another one”
- “Implementing code that is unnecessary”
- “Almost impossible to add a new feature because of complicated code”
- “The never-shipping product”
- “Throwing code away and rewriting it from scratch”
NoteAll sessions contain group activities and case studies to strengthen the understanding of Software Designer Mindset and readiness to be applied at respective individual’s organization.
Programme scope, delivery arrangements and suitability are confirmed during enquiry.