Monday, March 23, 2020

The TDD Course for Beginners : Learn by Practicing 7 Katas

Learn how to do Test Driven Development using Ruby within 4 hours. You will get:

1. The transcript of the entire course in PDF.
2. TDD in Ruby ebook in PDF, Mobi and Epub formats
3. Members only TDD tutorial website that walks you through every exercise in the course.
4. Monthly Google hangout Q&A session that supports your learning objectives.
5. All the slides used in the course in PDF format.
6. TDD Course Tools Checklist for every sub-skill covered in the course.
7. TDD in Ruby Course Outline that was used to create the course.

How do I get access to the videos and all the above goodies?

For only $9 / month, you get my support and access to all of the above. Send me payment via Paypal to to get access today!


Jeff Casimir, Principal, Jumpstart Lab


The actual coding TDD examples for Fizz Buzz and Fibonacci were really well done
During the coding exercises the refactoring of code was a good illustration of how to improve certainty of test results
Good overview of the importance of testing
Each lecture / exercise was only 5-10 minutes providing nice incremental gains in the course


The instructor's delivery was not engaging - students tune out very quickly
First 61 minutes were very high level and included no actual coding
Instructors speaking voice was monotone and slow for the entire course no inflection, jokes, or anything to keep your attention
The audio between segments varied in quality to sometimes low quality not ideal for a $200 course
Instructor used whiteboard to write notes and diagram concepts during lecture (also wrote in cursive and at least 1 time wrote off viewable screen)


We wouldn't recommend it for Turing pre-requisite work, but could be valuable supporting material for students in the class.

Mylene Reiners

When you want a theoretical background on TDD, this course is great (and the Ruby part is not too hard for people knowing only a little Ruby...)

Yury Voloshin

This is a good introduction to TDD for those who either have never used it or who have a very rudimentary understanding of it. Some of the more advanced concepts toward the end are somewhat rushed through, but I' sure that can't be helped due to time constraints and to the nature of the material. At least now I know the topics that I need to into more deeply.


This course introduces a solid foundation for practicing TDD. The instructor definitely knows what he's teaching. Information is divided in small logical and understandable chunks/lectures.

Jesse Mignac

Techniques, examples and theoretical material. This course is a really nice start to TDD with Ruby

Andrew Platkin

Very good pace and learned alot

Thom Parkin

The beginning of this course seems a bit slow and very dry. But your patience is well rewarded because the depth and detail of information provided is priceless! Mr. Paranj uses a time-tested technique of methodical presentation of ideas, one built upon the other, to its ultimate success. I am grateful and impressed by this course.

Jikku Jose

I am very happy to have such a comprehensive course from Mr. Paranj. I have been trying to do TDD in my projects for quite sometime without much success. This course helped a lot to expose much of the concepts and details one should focus on while doing TDD.  I wish the examples mentioned in "Fake It till you make it" and "Triangulation" was a bit more involved rather than the basic ones presented so that the techniques could be better understood.  I thank Mr. Paranj and Udemy for the course, it really helped me. Hope more advanced Ruby related materials can be brought out.

Pawel Jackowski

Instructor knows TDD and explains it with ease. I am quite familiar with technique and just wanted to refresh knowledge and I still recommend course. I definitely learned something about common mistakes and importance of every step in TDD sequence. I enrolled for free.

Steve Freeman

Instructor uses katas very effectively to show the patterns behind TDD. His clear examples and pointers to material for further study were very helpful and I look forward to practicing katas on my own. If you're trying to make sense of TDD I highly recommend this class!

What are the requirements?

Basic programming skills
You need to have your favorite text editor installed on your machine
You need Ruby 2.0 or above installed on your machine.

What am I going to get from this course?

Do Problem Domain Analysis
Do Solution Domain Analysis
Design Test Cases
Write Tests First
Apply Canonical Test Structure when having difficulty in writing a test first.

Who is the target audience?

Beginners to Test Driven Development
You should already know how to write programs in Ruby
You should already know how to create an instance of a class and invoke methods.

Course Description

In this course you will learn the basics of Test Driven Development. You will learn how to do Problem Domain Analysis, Solution Domain Analysis, Designing Test Cases and Writing Tests First. Learn the Basics of Test Driven Development in Ruby using this Beginner Course. This course will take 4 hours to complete.

Practice skills using 7 katas

  • Use the downloadable checklists to guide you when coding
  • Learn 3 different techniques to do Test Driven Development
  • You can be more productive if you practice TDD at work. Companies that adopt Test Driven Development are great places to work.
The material used in this course is the result of feedback from students who attended my TDD bootcamps and tutorials. This is a course designed by a developer for developers.

The concepts are first explained in a presentation. Then a coding demo illustrates how to apply the theory in practice. At the end of the lesson an exercise is given to reinforce the material.

You will learn the following concepts:
  • Assertions
  • The structure of a test
  • TDD Cycle
  • Minimal Implementation
  • Starter Test
  • Story Test
  • Next Test
  • Refactoring
  • Obvious Implementation
  • Fake It Till You Make It
  • Triangulation
  • Hiding Implementation Details
You will be able to attend interviews for companies that demand TDD skills to get a six-figure salary. Complete with working files and code samples, you'll be able to work alongside the instructor and will receive a verifiable certificate of completion upon finishing the course. I have interviewed people and I have seen the common mistakes made by candidates.

Subscribe Now

For only $9 / month, you get my support and access to all of the above. Send me payment via Paypal to to get access today!

Wednesday, September 06, 2017

UI User Story Example

Miya is part of the awesome group called The Foundation. She is a developer by trade and she wants to send cold email to do market research in her area of interest, IP law. She tries and finds it's interface very confusing. She is new to cold email marketing. She signsup for toutapp and finds that it is very bloated. She posts on TF forum to get some recommendation for cold email marketing automation tools. They recommend vocus which is also not beginner friendly. She has questions like: Will this allow me to upload a CSV file and schedule the emails to send out based on template. Vocus website does not provide any answers to these questions.

Miya found the interface very confusing to use. Instead of days, you had to convert the days to hours for the followup sequence. It had variation and A/B testing as part of the setup which was not required for her initial set of emails to be sent. It was difficult to find the merge fields and had to contact support several times over the period of 5 days. She did not know whether it was a bug due to the browser she was using or which icon would display the merge fields. She had a specific task to complete but found it extremely difficult to use the product. The training video she found on youtube channel of was irrelevant and she wasted few hours of her time watching the unrelated video to her task. She was very frustrated.

As a developer she started to do research on open tracking and threading features found in other products. She figured out threading is not really required. She found out that only the first email open must be tracked and ignore the email open when they are replying to her email. Scheduling the emails to trigger would require a fair amount of work. She found some good resources on how to authenticate to use the Gmail API for sending emails.

Goal: Cold email and followup for contacting prospects

Tuesday, September 05, 2017

Business Model Canvas for SaaS Business

Key Partners
What can you outsource to whom?

Web Hosting Providers
IaaS Providers
Open Source Projects

Key Activities
What will you need to master?

Customer interviews
Product Development (Product design, Software Development)
Deployment and Maintenance

Key Resources
What do you ned to build up?

Code base

Value Propositions
What is your unique value proposition?

Business Productivity and Collaboration

Customer Relationships

Customer Conference
Acquire and Lockin

How to communicate and deliver?

Self service

Customer Segments
Who are your customers?

IP Attorneys

Cost Structure
What are my costs?

Product development
Partner costs (IaaS)
Marketing and Sales
Hosting Fees
Customer Acquisition Costs

Revenue Streams
How will you make money?

Usage based, by user or by transaction

The Four Pillars of Wealth

Clay Collins and Perry Marshal recommend:

1. Automated Sale
2. Recurring Revenue
3. Sell a reproducible product or a tool (break time for money dependency and scale)
4. No accounts receivable (Get paid in advance)

1. Find pains
2. Presell
3. Outsource product development

1. Find the problem
2. Sell the solution
3. Hire a developer

1. Idea discovery
2. Sketch the solution (create a paper prototype to solve the problem)
3. Presell the sketch
4. Outsource product development
5. Launch the product

Find booming industries and sell them software tools.


Notes from Dane Maxwell's video transcript 
Read The Automatic Customer by John Warrillow

Wednesday, August 30, 2017

Cold Email Guide

How to achieve reply rates of 40, 50 or 70%.

- Prepare a well targeted prospect list. Don't sell sweets to a diabetics list.
- Number one goal is to get a response (either positive or negative).
- Follow ups lead to 55% of responses.
- Follow up can be a one liner. Just wanted to make sure my email below didn't fall through the cracks.
- Be prepared for rejection.
- Aim for certain ratio and improve it (ex 1 positive reply for each negative reply)
- Contact at least 100 prospects before making any decision
- Make it short, layout a clear offering that compel them into replying
- Just reply 'yes' and I'll send you more information
- Use the name of the person in the email
- Get small commitments before going for big commitments
- You can pre-warm a relationship by using referrals like: Bugs Bunny mentioned I should get in touch with you
- Tuesday to Thursday is the best days to send

Monday, August 28, 2017

Problem Discovery Questions for Conference

I am attending a 3 day conference in my target market. I had to come up with questions based on the amount of time available. The goal is to learn about their problems.

One Question

1. What tasks take up the most time in your day?

Three Questions

2. What's the hardest part of your day?
3. What product do you wish you had that does not exist yet?

Seven Questions

4. What are some unmet needs you have?
5. What could be done to improve your experience with [process/role]?
6. What’s the hardest part about being a [demographic]?
7. What are your most important professional goals?

Wednesday, August 16, 2017

Dealing with Vague Requirements in Software Development

1. Very vague and unknown requirements should be moved out of scope. Use scope control as a way to filter out.
2. Build a quick and dirty throwaway prototype to find answers to the vague / unknown requirements.
3. Identify the vague requirements and ask the product owner the right questions to fill in the blanks.
4. Conduct a requirements grooming session to flesh out the vague requirements.
5. Ask the stake holders to prioritize the backlog and work on the well defined requirements.