
Understand why you are building software by exploring user needs and feature rationale, then learn to choose the right stack to minimize maintenance and delight users.
Define clear requirements to ensure you solve the right problem. Avoid garbage in, garbage out by making upfront decisions that guide software toward user value.
Recognize clients, users, and stakeholders are not software designers, but collaborators. Use quick prototypes and testing to push back on non-designer requests and reduce maintenance costs and technical debt.
Adopt the why down approach by continually asking why to reach the root problem, focusing on the problem, goal, or obstacle to reduce technical debt and improve outcomes.
Practice the why down method to drill into the root of requirements by continually asking why, recording each step, and aligning stakeholders and users with the problem and outcomes.
Control scope creep by reframing requests as problems and using the why-down process, collaborating with clients and developers to find alternative solutions.
Embrace constraints to spark creative software solutions by framing boundaries, leveraging existing design system components, and avoiding scope creep while choosing the right stack and timeline.
Tear down silos and enable cross-functional collaboration among designers, developers, and DevOps to discover real requirements and deliver simpler, more effective software.
Focus on minimum solved problems (MSP) rather than minimum viable product (MVP) to release software that solves real problems, with iterative releases and problem-centered design.
Identify the right stack by aligning stack options to the project's goals and requirements, avoiding premature choices, and embracing constraints to drive creative, fit-for-purpose solutions.
Assess the interactivity level of a web application as a research project to determine the right stack, balancing delivering content and receiving data while exploring stack categories.
Explore popular JavaScript frameworks for highly interactive web apps, including React, Angular, Vue, Solid, and Qwik, and learn how to choose a stack based on team skills and project needs.
Explore static sites and static site generators like Eleventy and Hugo, focusing on fast, non-interactive html output for large content needs.
Balance static content and interactivity to match the problem you’re solving. Astro delivers server-first html and loads interactive components on demand, with themes and collections for content-driven sites.
Choose vanilla JavaScript, lightweight libraries, or server frameworks to add just enough interactivity, balancing code weight with HTML-driven solutions that stay accessible and easy to maintain.
Leverage Laravel as a toolbox to save time by handling authentication, authorization, and common PHP web app tasks out of the box.
Learn when low-code and no-code solutions fit projects, and how to solve the last 5% within their constraints using app builders for internal tooling, workflows, portals, and infographics.
Explore how content management systems can serve as a reliable stack, enabling non-developers to update content with a visual editor, workflows, and integrations while reducing maintenance.
Adopt a design system and templates to ensure consistent user interface patterns across your app, leveraging components and a card pattern from Material Design or Shopify Polaris.
Learn how to choose between SQL and NoSQL databases by weighing data integrity, table structures and query needs, including when to use both in a practical stack.
Choose a stack based on fundamentals, not tribalism, and understand core web technologies, HTML, CSS, and JavaScript, and how HTTP, networks, and servers power the web, plus databases.
Embrace user research—interviews, diary studies, usability testing, and user observation—to know your users, watch them use your software, and build the right software with better design.
Observe how users interact with existing software to uncover real needs, frustrations, and workarounds, guiding you to rebuild or compete with solutions that truly solve problems.
Practice discount usability testing to observe non-developer users think aloud while interacting with prototypes and sketches. Implement small changes to improve usability and ensure the software solves the right problems.
Leverage user research to control requirements and scope by testing ideas early and often with prototypes, observing results, and engaging stakeholders respectfully.
Express usability issues found in user research as a problem, communicate them to stakeholders, and apply the smallest design change to resolve cancel-button confusion, then test again.
Realize that starting with clear requirements forms the foundation for building the right software and choosing the right stack, and learn to handle feature requests the right way.
View post-deployment feature requests as clues, not requirements, and use a discovery process to identify unsolved problems and guide a focused, lower-maintenance software build.
Turn feature requests into a single minimum solved problem by asking why and identifying the underlying problem, then release a minimum solved problem that solves it.
Practice the wind down process by selecting an app and writing a focused feature request, then articulate why the feature matters without referencing a specific solution.
Make the smallest addition, including feature requests, to solve the problem and reduce technical debt, keeping software maintainable. Prioritize upfront decisions over coding minutiae to prevent debt from piling up.
Learn the right way to rewrite software by applying lessons from earlier content to legacy code and the rewrite process. See how what we’ve learned so far impacts that practice.
Treat existing software as a research goldmine by conducting user research and observing users to learn from workarounds, then use gradual, simultaneous beta releases with rewrite allies.
Avoid 1-to-1 rewrites; use interviews to uncover legacy workarounds and design new features that address the real problems.
Rewrite software by winding down existing features and workarounds, merging features into one, and removing what doesn't solve real problems; fall in love with the problems you solve.
Practice solving software problems with AI using Udemy's role play across scenarios, typing or speaking to the AI, and focus on uncovering the underlying problem beyond client requests.
Suss out problems from role play behind software requests with collaborators, not just clients or stakeholders, recognizing real users differ from AI, and solve problems quickly to build great software.
Know why before you code and before designers start designing, to choose the right stack for solving the right problems. Build the right software and enjoy the process.
Master an AI-Proof Developer Skill!
UPDATE: Practice this skill with live AI conversations using Udemy's new Role Play feature in 7 investigative scenarios with AI stakeholders!
It's one challenge to build software, it's another to know what software to build and what stack to build it in.
AI is letting us build the WRONG software FASTER. With this course, learn how to build the RIGHT software in the RIGHT technical stack.
How can you solve the real problems of your users, stakeholders and clients? How can you prevent and control scope creep while deciding what to build? How can you arrive at the most effective MVP? How can you decide on the most effective technology stack for your project? How can you manage feature requests properly? Where do you begin when rewriting legacy software?
All these questions and more are answered in this course. I bring to this course 25 years as a software developer, manager, and user experience designer in small, medium, and large organizations, and I'll cover real world examples, let you practice with quizzes, and provide a PDF worksheet to use in your work.
Who is this course for?
Developers, designers, team leads, project managers, and requirements engineers. Anyone who has anything to do with deciding what software will actually be built and deployed.
What we will I learn?
Techniques to reverse engineer requirements, feature requests, and existing software into problem statements that can be used to determine the best software solutions to actually create.
How to overcome the weaknesses of the concept of Minimum Viable Products (MVPs) to make the best decisions on what features are truly needed for the software to be successful.
Decide on your software stack, looking at JavaScript frameworks, static site generators, content-driven frameworks, Low-Code and No-Code solutions, content management systems and more, analyzing the purpose of each kind of tool to determine which is best for your project.
Build the best software by embracing user research (user interviews, user observation, usability testing, and more) as a fundamental aspect of your software development process.
Handle feature requests the proper way, viewing them as clues to problems yet to be solved rather than requirements to be estimated.
Learn how to view legacy software as a treasure trove of existing user research, and avoid making the mistake of rewriting software screen for screen.
This course will give you concrete tools to immediately implement in your software development process. Save time, money, and stress by learning to build the right software in the right stack.