ArjanCodes - The Software Designer Mindset - Complete Edition

ArjanCodes - The Software Designer Mindset - Complete Edition

Register & Get access to index
6-Dxxow-VNQTCYi-Qb5-Es-XE-Course-box-white.jpg


Introducing: The Software Designer Mindset​

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.


The course uses Python for all code examples. Having some knowledge of programming in Python is therefore recommended before following this course. However, what you'll learn in the course you'll be able to apply to any programming language and software project.


This course is for you if:​

  • You have some programming experience and you want to take your skills to the next level.
  • You truly want to become a better software developer and you’re willing to invest in yourself and put in the work.
  • You want to grow into a senior software developer position, but you want to do it efficiently.
  • You love writing beautiful code that feels like it’s the perfect fit to a software problem.
  • You want to learn how to setup larger software projects without breaking a sweat.

This course is NOT for you if:​

  • You have no programming experience at all.
  • You expect results without putting in the effort. You have to be serious about becoming a senior software developer and be willing to put in the time and follow the principles.
  • You expect a course that covers in-depth software testing techniques. This course focuses on software design. However, applying the principles will lead to software that’s a lot easier to test.
  • You expect a course that covers design patterns. This course focuses on something deeper: the principles behind the patterns, and the mindset you need to come up with your own patterns.
  • You hate Python :).
Here’s an overview of what you’ll learn inside The Software Designer Mindset:

Module 1: Mastering The Tools​

  • Setting Up Your Development Environment - Learn how to setup your development environment for success (this is more important than you think): which plugins/extensions to use and what settings to change to make your life easier.
  • Types And Type Hints - Knowing what types and type hints are and how they work in Python is really important. In this lesson I dive into the details of type systems, how things work in Python, and show you best practices so you get the most out of using type hints.
  • Data Structures - A core piece of software design is using data structures correctly. Each data structure has its own pros and cons. Knowing about these is going to help you take better decisions about which data structure to use when.
  • Classes And Data Classes - Though this is not a complete introduction of object-oriented programming, I talk about classes and data classes in detail in this lesson and how they fit into software design.
  • The Mighty Function (NEWLY ADDED!) - This lesson is a deep dive into functions: what they are, more advanced things you can do with them and when to use functions as opposed to classes in your design.
  • Inheritance, ABCs And Protocols - In the final lesson of this module, you learn about abstraction, which is a core element of software design. I cover the various ways in which you can achieve abstraction in Python to help you choose the best option for your design.

Module 2: The 7 Principles Of Modern Software Design​

The second part of the course presents the 7 Principles Of Modern Software Design. It takes many of the existing design principles and adapts them to the needs of the modern software designer. It goes way beyond object-oriented design by teaching you generic principles that apply to any programming language and paradigm, whether that’s object-oriented, purely procedural, or functional.

  • Favor Composition Over Inheritance - Learn how to approach inheritance in code and use it in a balanced way by looking at several code examples.
  • High Cohesion - Various techniques for making sure that the code you write has clear responsibilities.
  • Low Coupling - Learn how to reduce coupling between different areas of your application so that your code is easier to maintain in the future.
  • Start With The Data - What role does data play in the design process? When should we think about data and data structures in software design? And what is a practical process for modeling the data structures in your software?
  • Depend On Abstractions - Abstractions such as ABCs and Protocols help reduce dependencies. In this lesson I show you how to use these abstractions effectively.
  • Separate Creation From Use - You learn different ways of creating objects in a software system, and how to have better control as a software developer over how and when objects are being created.
  • Keep Things Simple - As a software developer, how do you keep things simple? I talk about different ways to make sure your code stays simple, even if the application itself is complex.

Module 3: Being A Responsible Developer​

  • Mixins - You learn what Mixins are, why you need to be very careful with them, and what the much better alternatives are.
  • Dealing With Errors - Any application has to properly deal with errors. Here you learn how error handling works in Python, what the different possibilities are as well as some of the more advanced error handling mechanisms such as context managers.
  • Setting Up A Complex Software Project - Learn about files, folders, modules, packages, absolute and relative imports. Learn how to structure your code properly, and what should generally be in a code repository.

Module 4: Developing An API [COMPLETE/PROFESSIONAL Edition Only]​

This module truly takes the course to the next level, offering an in-depth, practical case study where I teach you how to build an API from scratch in Python. I'll go through the entire process with you covering every aspect:

  • Modelling The Domain - Why understanding the domain before you start developing is important, and how you can quickly create a model using dataclasses.
  • Project Scaffolding - Complete scaffolding of an API product, learn to quickly setup an API server, integrate with a database and design the data structures that you'll need.
  • Architecture - Setup the architecture of the API, and structure your code accordingly, applying the principles you've learned in the first three modules to make the code future-proof.
  • Building Out The System - Create multiple endpoints, implement the basic operations of the API, using a clean architecture to nicely separate the different areas of the API.
  • Creating A Testable API - Add unit tests to the API software to make the code more robust. Learn how architecture and design help make testing your code a lot easier.

Module 5: Design Wins [COMPLETE/PROFESSIONAL Edition Only]​

A really fun series of 15 videos, each highlighting one simple thing you can do to improve your software's design that takes only a few minutes from avoiding type abuse and writing symmetrical code, to avoiding redundancy and using protocol segregation.


I'm Arjan​

I've been passionate about programming and computer science since I was a kid. I've completed a Master and PhD in Computer Science and I have more than 20 years of teaching experience. I've launched several startups and designed and built complex software products from scratch. My goal with this course is to help you become a senior software engineer, by teaching you everything I know about software design.



The beauty of The Software Designer Mindset is that you can learn all the software design best practices, taken from my more than 20 years of experience teaching computer science and developing products, skip all of the pain and mistakes that I made, all in one package, available 24/7, that you can go through at your own pace.

It couldn’t be easier or more convenient!

Do your future self a favor and be brave. Invest in yourself, get the training that you need, and unlock your full potential as a software designer. Your life will never be the same!

See you on the inside...

Arjan



Note: All videos have pt-br hard subtitles. This is the only source I could find. Sorry for the inconvenience.
Author
etherusb
Downloads
799
Views
4,545
First release
Last update
Rating
0.00 star(s) 0 ratings

More resources from etherusb