Software Designer Mindset Update

:right Photo by Artem Maltsev on Unsplash

As part of my goals for 2022, I am working on my Python skills. I purchased a course, the software designer mindset, from #arjan_codes in pursuit of this goal. I first encountered Arjan on his youtube videos where his brand of instructional video leverages his experience with real-world software development, in videos about twenty minutes each, teaching software design through the lens of Python. His topics on this channel cover design patterns, specific python technologies, testing, and general software design principles.

My thought was the course would give him a bit more room to develop a cohesive message about software design and programming concepts in general. So far, I have completed about 70% of the main course - and my prediciton is basically correct. I purchased the main course, plus the extension that develops a web API for hotel room reservations from scratch and provides some short videos on design, so I have quite a lot of the instruction left to complete (beyond just the 30% remaining for the main course). I always learn better through example, and I expect this extension to be my favorite part of the course.

I did, however, want to post about the course thus far because I have found that the course is not teaching me much beyond what I already knew about software design or Python. It isn't that the course is terrible or lacks quality, quite the opposite. It is just that the information is on topics for which I am already reasonably comfortable. So far, the course has covered topics like:

  • type hints
  • data structures
  • classes and data classes
  • protocols
  • inheritance
  • composition
  • cohesion
  • coupling
  • keeping data close to the code that needs it (communicating as little as possible within your program -- basically an extension of low coupling)
  • varaitions on factory patterns
  • basic rules of thumb on software design

These topics are topics where every exposure is good. Seeing the implementation in Python has been an interesting aspect of the course so far. And I don't regret purchasing the course or spending time with it. Also, when I say I haven't learned a lot of new information, I don't mean to indicate that I universally practice these skills. Ultimately I think the course has helped me realize my gap with Python, and to some degree, software development is a lack of practice with these topics. Not a lack of knowledge. I will need to find a project I can sink my teeth into to develop these skills, more than a course or a book on these topics.

I will post a follow-up when I complete the rest of the course. And, as I mentioned earlier, I expect that the API extension will fulfill a large chunk of what I was hoping to get out of this course. I am interested in hearing if anyone sees this and has thoughts on the course or what I am talking about here. Please feel free to contact me.