A standard mouse, good for teaching though

Important factor when giving lesson

I get the idea for this article after reading Testivus on Test Coverage story. In this story, three programmers asked Testivus about proper percentage of test coverage. Testivus gives three different answer and every answer depends on skill level / knowledge and attitude of the programmer. The same can be applied to every lesson that you, or anyone when teaching.


Let’s take a situation, where you are teaching newcomers about programming. First, you teach them about variable, data type then if-else, function and so on. You will try to arrange the topics and course material as easy and as non-technical as possible. Later on after several meeting, you can move to deeper and more technical topic.

Absolutely you won’t mention about interface, clean code, architecture, dependency injection, CQRS or any advanced-level topics during the first course. They don’t know what those topics are about. They won’t get anything beneficial from those topics. It is same as a programmer attending a seminar about newly founded medicine which can cure cancer, presented by researchers targeting senior doctors.

You don’t teach any advanced topics during first course for newcomers

Why so

Man 1: hey, YYMM’s stock is on golden cross today!
Man 2: Have you see the 60 days MACD? It haven’t touch the support yet!

Are you an investor? Or have you do stock once or twice? If you do, then you will know what the conversation above is about. Assuming that you don’t know anything about stock, what is your reaction when I tell you to buy a stock because it’s on golden cross today? What knowledge do you get from that?

Nothing. You don’t even know what a stock is about. You don’t even know about the stock basics yet. The basics is included as: stock unit, how to buy it, how to sell, how the price is formed, open/close/high/low price, closed market, closed time buy, etc. After that you need to learn about resistant and support, then graph, then you are approaching the more advanced concept such as fair value and reading quarterly financial statement.

Now let’s say that you already learned the basic, then suddenly you attend a seminar led by George Soros about how to do a 3 months projection of a stock value based on current financial statement. I guarantee that you either be confused and get nothing, or at max you only get the minimum value from it.

Now let’s say that instead of that seminar, you attend a local financial institute seminar about how to do cut loss and planning for cut loss. You already know the basics and that topic is not too far from the basic. You will understand what the seminar is about and get full benefit / knowledge from it.

When attending a wrong course, you will be confused and get nothing. However when attending a right one, you will understand it and get full benefit

The case in IT / Programming

“How to build an e-commerce with PHP, mysql and laravel for beginner”. When I ask for suggestion about what topic should I bring for newcomer, many colleague suggested that topic. Then as usual, I spend 15-30 minutes explaining why it doesn’t work. Every time.

This is also the basis for my decision to use javascript as programming language for newcomer. Weakly typed, interpreted, support procedural and multiplatform. They don’t need to do variable declaration, initialization, type casting (conversion still exists, though), directly run the code without compilation, and no need to learn about object oriented or classes and the likes. With this, I can teach how programming works and they can immediately learn about the concept of programming.

The software requirement is negligible. With a programmed environment, for example this jsfiddle:, someone can begin programming anywhere anytime. So far I only find one weakness and that is to receive input from user, you will need to learn html first. That’s some big sidetracking I must say.

I use javascript as programming language for newcomer because it is weakly typed, interpreted, support procedural and multiplatform


To ensure that the topic you bring in a course can be learned effectively and beneficial, you need to know the skill / knowledge level of said attendance.