Course Review

Creating Maintainable Contexts for Automated Testing – Course Review

I have just finished Creating Maintainable Contexts for Automated Testing by Mel Grubb, on Pluralsight (yes, that title is quite a mouthful!)

I haven't really bothered with reviews of most courses I take – counting this one I watched 43 this year – a bunch on Pluralsight, some MBA courses, and 14 non-fiction books. This one was interesting enough that it was worth mentioning.

It covers ways to make your test code cleaner. What I liked:

  • using a Random library to document what is boilerplate on a test is what is important – name = library.RandomName() is very different from name = “Luiz Marques”, as it shows that it has no particular importance.
  • From the next step, adding Mother objects, which are simple static classes that return ready to go instances – such as .Simple() and .Typical(). If you need to, you can then change anything that is important for the test, and it will be very obvious. As a bonus, any changes to the objects (such as an added property) can be dealt on a single place, instead of having to be fixed on possibly dozens of tests.
  • Converting the mothers to the Builder pattern, which makes thing slightly clearer (but adds a lot of code), improving discoverability and makes it easier to change objects.
  • Using CSX to auto-generate most of the builder objects on each build.

Overall, very interesting, and well worth the time, specially if you already have Pluralsight.

Course Review

Domain Driven Design Fundamentals – Course Review

Domain Driven Design Fundamentals is a course by Julie Lerman and Steve Smith on Pluralsight . I had already seen several courses by Steve Smith (such as Kanban: Getting Started), and was interested in the topic, so I started it right way after PS notified me of the new course.

This is what Wikipedia uses for a definition of DDD:

Domain-driven design (DDD) is the concept that the structure and language of software code (class names, class methods, class variables) should match the business domain. For example, if a software processes loan applications, it might have classes such as LoanApplication and Customer, and methods such as AcceptOffer and Withdraw.

DDD connects the implementation to an evolving model. Insert in your articleDomain-driven design is predicated on the following goals:

  • placing the project's primary focus on the core domain and domain logic;
  • basing complex designs on a model of the domain;
  • initiating a creative collaboration between technical and domain experts to iteratively refine a conceptual model that addresses particular domain problems.

The term was coined by Eric Evans in his book of the same title.”

While some of this seems less relevant, I think that the overall concept seems great.

And in this particular course, I really liked the example code. It covers making large parts of a Veterinary system for scheduling, complete with a Blazor app and a backend that includes e-mail confirmations, RabbitMQ, and a whole lot of interesting bits. It also has docker images, which can very helpful in projects with a lot of moving parts.

Overall, strongly recommended.

Course Review

Kanban: Getting Started

Kanban: Getting Started is a new course by Steve Smith on Pluralsight.

Kanban is an interesting methodology that can be used in many places – it became common in manufacturing after Toyota invented and had great success, and it can also be useful in daily life and software development.

Kanban is about maximizing flow in systems, which is usually very useful, reducing waste and helping find bottlenecks.

It is also relatively simple, vs scrum and more complicated methods, and can be used in many different ways.

I particularly like that the course had a separate section for single and team use. Some specific services (such as Trello) are mentioned, but mostly briefly. As also are physical boards.

Overall, I found this course quite useful, and it certainly left me interested in using Kanban in practice.

Course Review

Applying Asynchronous Programming in C Sharp

Applying Asynchronous Programming in C Sharp is a PluralSight course by Filip Ekberg.

It covers async, await, using Task.Run and manual continuations, cancellations, getting async progress and more.

I knew a bit about this, having used async before, but there was plenty new to learn.

Classes and the code are very easy to understand, and the length is very reasonable (around 3 hours).

Course Review

Reducing Product Risk – Course Review

Reducing Product Risk is a course at PluralSight, by Nenad Laskovic.

It covers ways to minimize risk when creating new products or features. It is pretty short – about an hour.

It has a few different ways of testing various risks for a product, such as:

  • lack of demand
  • inability to complete the project in time or budget
  • not being better than the competition
  • poor UX or performance
  • not solving the actual problem, just what you think it was

Of course, it then covers ways to mitigate those risks, such as using landing pages and ads to test for demands, using prototypes to test the UX, etc.

Overall, useful considering the limited time spent.

Course Review

WebStorm Fundamentals – Course Review

I have just finished watching WebStorm Fundamentals, a Pluralsight course on the JetBrains IDE.

I have never actually used it – although I have used other IDEs by JetBrains – so there was a lot of interesting things compared to my usual JS/HTML IDE (Notepad++, for minimal touch-ups on my main site).

The course only takes a few hours, and was pretty clear. I viewed most of it at 120% speed, and the instructor was still very clear at this speed.

Overall, recommended if you already have access to PluralSight courses and are interested in WebStorm.

Course Review

Introduction to Prism for WPF – Course Review

Introduction to Prism for WPF, by Brian Lagunas, is a Pluralsight course that covers how to use Prism, a MVVM library for WPF.

The course is not very long (about 4 hours), and it covers the basics of how to use Prism quite well. Examples are simple and to the point.

Prism is much, much better than using raw MVVM, as it takes a lot less code do the same, leaving your code much clearer and more concise.

However, my standard comparison point is DevExpress.MVVM, which is also free, but which I already have paid support in my regular component subscription with them. Plus, they manage to require even less code, and have many cool features.

Overall, recommended if you are interested in Prism. But you might want to take a look at DevExpress' library, too.

Course Review

So you want to be an entrepreneur – Course Review

So you want to be an entrepreneur is a course by Dan Appleman in PluralSight.

It covers some interesting elements, including what you will go through as an entrepreneur, looking at goals, coming up with the idea, hiring, accounting, and funding.

I learned quite a bit, as while I've been an entrepreneur for decades – selling software online – it is a solo thing and thus doesn't include a lot of what he talks about.

I was particularly interested in the “lifestyle company” concept, as I had not seen it before – creating a company expecting that it won't grow much – just enough to make a living for you.

Overall, quite interesting, and well worth the 4 hours. Of course, joining Pluralsight for this would be overkill, but if you are already there and interested in the subject, I'd recommend it. The author also has several other interesting courses.

Course Review

Learning technology in the information age – Course Review

Learning technology in the information age, by Dan Appleman, is a short (2 hour) course in how to learn tech in the most effective way for your career. This is part of Pluralsight.

I liked the way that he divided the tracks in learning technology:

  • Fundamentals – the basics, can last a long time, but might be complex
  • Information – relevant to a specific tech – you usually don't need to learn the fundamentals to use it, but it might leave important holes in your knowledge; gets obsolete quickly, but easier to learn.
  • Skills – actually using what you know about information and fundaments to do stuff – what employers/clients usually want
  • Innovation – what experts are best on – but can be expensive to learn to that level, and less cost effective than just being competent

The course also goes into how to learn on each of the tracks, and the advantages of the various ways to learn, such as books, online courses, schools, etc. And ways to create a learning plan.

Overall, pretty interesting, and I have added several of his other courses to my lists.

Course Review

SuperHuman Academy Procrastination Course Review

I have recently taken the SuperHuman Academy's Procrastination course (not sure how to link – I can't view the course if I am not logged in. Also – their affiliate system buttons don't work, and telling them didn't help, so there are no affiliate links here). 
The course is just a few hours. Since I have a chronic procrastination habit, I have seen other courses and books on the subject, but the course contained a lot I didn't know yet, as well as very interesting perspectives on old topics.
Price: as the course is not available on their page, I have no idea what the price would be. I got it as a full SuperHuman Academy bundle I got with a discount last year.
Some of the things I liked from the course:

  • Procrastination is not rest – it decreases energy, anxiety and affects your world view, making you think you are a procrastinator, and that there is nothing you can do to change that.
  • Procrastination is a self-protection mechanism from the conflict between a high desire for success but high fear of failure. It also comes from the fact that you get a instant reward from avoiding doing something you don't want to do – so you get a dopamine hit when you procrastinate, just like an addictions.
  • You should start habits as small as possible, as just relying on motivation mostly doesn't work. Committing to tiny things daily – such as doing a single push-up or putting your gym clothes – work better than trying to commit to larger things, which you can easily find excuses for.
  • You should have SMART goals – specific/measurable/achievable/relevant/time-bound (this one is quite popular, must be 3rd-4th time I have seen it).
  • Break down your goals – if you don't have clear steps, that will cause a great opportunity for procrastination to appear.
  • Get aware of your procrastination, by paying attention every time you do it, and taking notes of why you did it (obviously, as well as you understand it). Awareness will develop over time as you cultivate this habit. Some examples: distractions, dreading the activity, energy levels, thinking you can't do it, etc.
  • Be aware of the “what-the-hell effect” – when you do something you shouldn't, think “what the hell”, and make it worse. Such as eating a cookie, then going and eating a whole box because you already broke your diet.
  • Get a growth mindset, and reframe failure as every time you fail, it is an opportunity to learn, not a reflection on you sucking. Different countries actually have more or less of this baked into their culture, which affects their entrepreneurship rates.
  • Try to take on things you like doing, instead of things you think you should be doing (obviously hard, might even require changing your job). Delegate when possible. Procrastination can point out what you don't like to do, if it is not obvious.
  • Simplify things you do, something good that gets done is much better than the perfect one that doesn't.
  • When you are invested on things, it is less likely you will avoid them – you can invest money, emotion, safety, energy, reputation, etc.
  • Having deadlines can help
  • Ownership of problems helps puts the brain on problem solving mode – otherwise you might just feel sorry for your circumstances.
  • Manage your energy – sleep/nutrition/exercise/psychological state
  • Focus on starting, by planning to do something for just a limited time – many times you will realize it was note as bad as you thought and keep doing it. It also signals you that you do that kind of task. Quick wins can be build momentum. Pomodoro method is related.
  • Do the worst thing first. 
  • Batch tasks when possible – so you only have to overcome procrastination once per batch.
  • Whenever you have to stop an habit, go back as quickly as possible, but a lower level of intensity, so you don't get overwhelmed
  • Keep records of what worked and what didn't relating to procrastination.
  • Try to do positive procrastination when possible – such as instead of viewing cat videos on YouTube, view TED Talks. Then over time try to watch course videos. I.e. if you have to avoid doing something, try to avoid it with something better, that is actually useful.

This was a small fraction of my notes on the course, there was a lot of learn. Writing this post made me realize that I will probably have to watch the course again.
Overall, strongly recommended (as time spent goes – can't talk about cost-benefit, as price is unknown to me). There were things I was avoiding for years I got done, and I am much more aware of my procrastination now.