This article introduces how to carry out the "output study session" that is being carried out in my project (one veteran, two young people with less than half a year of development experience). Since this study session was held, young people's design and implementation skills have improved. I have been involved in training about 8 newcomers in the past, and I think this is the most effective. There are two types of "output study session", "book edition" and "design / implementation edition", but this article will explain "design / implementation edition". Please refer to the following article for the format of "Book Edition". A story about how young people's behavior improved surprisingly at a 15-minute study session every morning
This article is intended for the following people.
--Leaders who want to give them the opportunity to design to train young people, but cannot easily give them -→ I think it would be good to hold a study session in parallel with your work. ――A young person who wants to design but cannot be given the opportunity in business -→ My boss only takes 15 minutes every morning, so I think he will do it for me.
The following is an example of the output from the actual study session. A class diagram of the Memento pattern and a C # program.
This is a hypothesis from my experience. If you have little experience in design and implementation, you will create design documents and source code that include elementary problems that you would not think from an experienced person's point of view. Also, it is often not possible to correct it correctly, even if it is pointed out in a review. From an experienced person's point of view, you may wonder, "Why can't you do the rudimentary content that is written in the first chapter of the textbook?" Also, you may think, "I have made the same point many times, but it is not resolved", but this is also due to lack of experience. With experience, you will be able to calm down and organize your thoughts, so many rudimentary problems will be solved with experience (20 times of design and implementation will usually solve them). I think the bad pattern is to design and implement in business without inexperience, and to generate a lot of rework __. If you do not have enough experience, you should either train with pair programming or gain experience with the methods introduced in this article.
In general, it is said that the quality and efficiency of learning is higher when it is accompanied by some output than when reading a technical document silently alone. In other words, to improve design and implementation skills, it is effective to use a method that involves outputs such as "writing a design document," "writing source code," and "explaining the written results." For more information on the importance of output, see Previous article.
Based on the GoF design pattern, the learnee will create and code a class diagram. The instructor reviews and guides the deliverables every morning in 15 minutes. (The subject doesn't have to be a design pattern, but for object-oriented languages, a design pattern is recommended as an affordable subject for beginners.)
First, decide on the target design pattern for the next day. Think of your own sample program that applies that pattern, and create a class diagram and source code in advance. It is up to you to write it on paper or make it an electronic file. In my project, both class diagrams are paper, one source code is paper and one is electronic.
It will be held every morning for 15 minutes. My project has a 15-minute study session immediately after the 15-minute morning assembly. (If the morning assembly ends early, make adjustments such as increasing the study session time accordingly.)
We will decide today's presenter. The presenter will explain the class diagram and source code of the sample program that he created. The important thing here is to explain in your own words the "merits and uses of the pattern". Other members look at the results and point out points that are not suitable for the pattern and express their own thoughts.
In the case of my project, it takes two days for two people to study, so one design pattern is completed in two days. It takes an average of 1 hour a day to prepare for the students (1.5 hours for preparation on the first day, 0.5 hours for homework on the second day).
If you are familiar with design patterns, no advance preparation is required. I'm not familiar with all patterns, so I'll take every recovery lesson on the target design pattern in books and web articles so that I can teach properly.
As much as possible, I will try to get the presenter to talk about what he has thought (even if there is a rudimentary problem at the beginning of the explanation, listen for the time being). Since motivation is important, we evaluate and praise it by adding points. In order to focus on those who do not make presentations, we aim to "point out before the instructor" and sometimes ask questions there. In addition, we will proceed considering the efficiency of information transmission in 15 minutes, such as doing homework until the next time if we think about it on our own.
This study session is based on the idea that the target person "learns because he / she wants to improve his / her skills". Therefore, the instructor does not force advance preparation. If there are days when I'm not ready, I won't say anything about it. The subject of the study session is the person to be studied. The two young people in my project seem to have a lot of fun working on it, and they usually do a lot of preparation.
At first, I tried to draw only the class diagram, but it didn't work. If you have little implementation experience, you cannot concretely imagine what kind of implementation will be from the class diagram. Therefore, I sometimes write a class diagram that is unlikely to compile. Therefore, I changed to the method of writing both the class diagram and the source code. By writing the source code, I became aware of the above problems, modified the class diagram to some extent, and attended the study session. In addition, according to the learnees, it is now possible to understand the merits of each pattern, which was not well understood just by drawing the class diagram.
By implementing all the design patterns, I gained 23 class diagram creations and about 3000 LOC coding experience. With that experience, the rudimentary problems of "inexperienced and tempered" have almost disappeared. In the past experience, it may take more than a year with work-only experience before such elementary problems are almost eliminated. I gained the same or higher experience points in 2 to 3 months while working in parallel, and learned the basics of design patterns.
Two young people from my project enjoyed this study session and independently improved their design and implementation skills.
This time, the references for each member to learn the design pattern in advance are free for each member due to various circumstances. I think it was easier for members to make statements about different merits and uses due to the different references. However, some articles on the Web are not appropriate, so it may have been better to decide which book to use as a reference. The next time I do it with other members, I will use the book "Introduction to Design Patterns Learned in Java", which is easy to read for beginners. The title is Java, but I also recommend this book in C #. Please refer to the following articles for the details of the book. 4 technical books that I regret that I should have read when I was a newcomer
Using the contents of this article, I am making Lightning Review, a review support tool. Information is also posted on Twitter → @kojimadev
Recommended Posts