Category Archives: Method

Every tool has its cost


For such a fairly long time I haven’t written anything. Not because I don’t have anything to write, but it’s hard to pull complex things out of my head. But now it seems to be time for a warm-up :)

One of my senior, Mr An, has a favorite sayings: “Until you don’t depends on tools, you are not truly a developer.”

Truthfully, I don’t think I have fully understand what he means. A developer with more than 10 years in this industry may have a different view to a young one like me. But to some extent, it seems to be a good idea.

For a certain amount of time I have tackled Maven, Spring Framework, Java Serverpage, Freemarker… I end up spending most of the time trying to fix bugs, caused not only by the framework, but also by mis-configuring Eclipse & its plugins. To be honest, it’s annoying

Actually, Eclipse is such a good tool: nearly everything you think that a good IDE should have, it exists in this free solution: refactoring, navigation, source-control-supported, Maven-tools… Such many functions integrated in a single program. Pretty handy, isn’t it?

But here a problem arise: when you have too much utilities, it will be hard to have a meaningful organization. It make me frustrated when right-click in Eclipse and have a 20-items context menu pop up. Still, navigating through that menu isn’t as hard as understand why and how to use the Eclipse view, explorer, hot key, configuring it to auto-compiling… Those are also the things you need to know to speed the work up. As far as I know, there’s no simple coherent way to do all the tasks.

The same semaphore also applies to any of our developer tools, no matter if it’s an IDE, framework, libraries… or even, methods. In my view, the best tool is a tool with few familiar functions, so that we can easily master and get the best results with minimal efforts. But the fact is that, as long as people want to stuff their tools out to fit everyone needs, that goal is hard to meet.

You must master a tool before you can make it work for you, so there’s a hidden cost. Imagine, if a tool doesn’t allow you work 2 times faster, do you spend 2 weeks to master it, just for use in a 1-month project?

Let’s choose and use tools wisely.

Thoughts when viewing “Studying method for University”

This blog post is the English translation of this post. Because the content gets rather lengthly, I decided to split it to two posts.

Last Sunday I had the opportunity to attend the finals of “effective learning methods” by the Cultural Organizations of Student. Though observing time was short, I feel very interesting with the creation of participating teams. From the professional journals-like reports, to intelligent and witty answers on stage, all showed that participants have a very strong grasp of their learning methods.

The competition wraps up with the winning of team “Dai Nang No”(Great Advance) from the Open University. The remaining teams also gained valuable lessons and lots of fun. However, when the game was over, I feel a little anxious. Student Culture House held the contest to stir the improvement of student learning. But is it really effective?

For a long time, the press has prompted many to complain that their new students are not guided, some was shocked transferring into the university environment. But I’m not sure that hundreds of students sat in the auditorium of the competition, how many percent can apply the methods presented today.

Why do I say that?

Frankly, the “learning method” itself is not the matters of saying and remembering. Learning method is not knowledge.

Knowledge is something static, unchanging, can be recorded on paper. Methods, by contrast, are dynamic knowledge. You can’t learn it by heart, you can write it to papers in case of forgetting. It’s the matter of practice.

Just like learning martial arts, no one can learn by reading or watch others perform. Learners themselves need to practice, so feel each move, each piece of the new technique can be applied. To study a “method”, a learner must apply it, experiment it, flip back & forth his/her problems. Then he can adjust the method to suit the circumstances and character style.

Let’s talk about the most simple: writing letters. 90% of the letters were written by hand, but Nguyen Ngoc Ky, and many other disabled people do by foot. On learning, some people learn best alone, others prefer learning in libraries. Each method has advantages and disadvantages, depending on who all practiced.

So the question here is: How to apply effectively new studying techniques?
In my opinion,  students should note the following when adopting a new method:

  1. The learning methods are merely tools, not a universal key. There’s no silver bullet.
  2. Set a Goal. It can be simple like: I will learn 1 hours at 6 am everyday for a week. Goal itself has the ability to create motivation. This can be considered as the most important thing, help the learner orientation “on track” to overcome obstacles in the learning process.
  3. Notice habits & personal characteristics. Habits form actions, actions form destiny. Choose and form your desired habits, it’s a great asset.
  4. Discipline, autonomy of learners. At begin, it’s hard. As soon as it become a habit, it’s easy. Learn to make your habit.
  5. Review and self-regulation: nothing can be perfect at first try. Do it again and again, improve minor things in every circulation. At last, things change :)
  6. Group learning: not a big deal. It’s great to learn new things from different people.

Learning from Japanese: Kanban for software engineering

This post is dedicated for Japanese and Sagisou, the flowers I love most. Hope for the recovery of Japan after the disaster 03/2011.

**Vienamese: Phương pháp Kanban là một trong những sáng tạo của ngành công nghiệp Nhật Bản. Phương pháp này được ứng dụng rất thành công trong hệ thống phân phối của Toyota, và dần trở nên phổ biến trên thế giới. Nói một cách ngắn gọn, Kanban là một tập hợp các nguyên tắc dẫn đến sự tối ưu hóa dần dần của tiến trình công việc, dựa trên việc kiểm soát số công việc tối đa tại một thời điểm của tiến trình.**

What is Kanban?

Kanban is one of the brilliant invention of Japanese industry. The method was first applied successfully in the famous parts-delivering system of Toyota, before it got recognized and became popular among the world. In short, Kanban is a set of principles which make the work process better day-by-day, based on the pull-system & the control of maximum work-in-progress at one time.

Kanban in software engineering world

In software-engineering, Kanban(signal-card in Japanese) is often visualized by the image of the card-board: a board of the processing-work. A “card” represents a work that need to be done, and there are many card to put on the “queue”, that’s the development process

To make things simple, we can think about a simple queue: units of work are input in one end, through many steps of the process, and the results yield from the other. But the pulling process must follow three main principles:

  1. At a time, there should be a limited amount of work in the system(restricted by maximum Work-in-progress, called WIP)
  2. If the max WIP is reached, the additional work must wait until one of the processing works complete. Then it can be pulled in the system to process. This fact make Kanban a pull system (the people take the tasks to process when they are ready), not a push system (the tasks are pushed in whether people are ready or not)
  3. The process and its policy must be visualized. This requirement is often be made  by a card-board.

If you need a Kanban-visualized story, there’s a very interesting one here: One day in the land of Kanban.

How effective is Kanban?

Kanban is merely a tool. It help visualizing the process, so that we can improve it. By controlling the WIP, the team identify the bottle neck, the characteristics of the work flow; therefore they can make appropriate regulations. It leads to Kaizen - continuous improvement, another philosophy of Japanese industry.

But wait, you are not here to read theory, right? Well, there’s some good reasons to apply Kanban. As a tool, Kanban fits in any kind of process: you may combine it with Scrum, or whatever process of your organization. In many situations, the effective-tuning mechanics of Kanban leads to Agile.

Putting aside lots of successful stories outside of software development, there are also several stories in our field right now. Most of them are positive, though. Pawel Brodzinski found it make his team improve unconsciously. Not working in a team? There’s Kanban for individual.

The summarization of Kanban principles [1]

  1. Limit Work-in-progress (WIP)
  2. Pull value through
  3. Make it visible (visual control)
  4. Increase throughput
  5. Fixed Kanban backlog
  6. Quality is embedded in

[1] Kanban for software engineering
[3] Convert a Scrum team to Kanban
[4] Lean software engineering
[5] Why Kanban
[6] Kanban 101