SUPPORT OF BEGINNING SOFTWARE DEVELOPERS
The project aims to create conditions and environments which are highly supportive for efficient professional training of beginning software developers. The concept is based on the model of an apprenticeship workshop and a master-apprentice relationship. Apprentices solve realistic programming tasks while being supported with their mentor or more experienced colleagues. The project does not expect any starting knowledge or experience from software development. The work is always remotely done via the tools for remote team cooperation and is paid proportionally to apprentice’s productivity. The apprentices are primarily students (mostly from high-school) and secondarily the project requalifies adults.
The basis of the method is to work only with internally motivated apprentices. Attention is thus focused on creating conditions for very effective development of competencies and informing potential applicants about the possibility of professional development through this project. The method is thus aligned (and very analogous) with the approach of Summerhill or Sudbury educational models. The time between addressing potential applicants and expressing interest in it usually lasts several years and attracts approximately one in a hundred.
After expressing interest, the applicant receives an introduction into programming and the first homework of a school character. At the latest after twenty hours of practice, he/she begins to be integrated into a real software project and receives the first tasks to be developed there. The mentor makes sure to support the apprentices in overcoming difficult places. The projects are of a commercial nature and the monetary reward for the apprentices is used as part of the feedback describing the progress and competencies of the apprentices.
Rewards also serve as a motivator and alleviate the loss of income in education for adults. At the same time, contact with the mentor and other colleagues in the work team saturates the social needs that are necessary for many people, because not everyone is able to learn on a long-term basis alone. More experienced apprentices partly take on the role of mentor, thus deepening and broadening their understanding of the issue, because explaining with the intention to help the other comprehend is in itself a significant learning activity. A prerequisite for apprentices, in addition to internal motivation, is a certain basic level of analytical thinking. For less demanding programming sub-professions, it is sufficient if the person in question does not completely lack logical thinking. The age of the project is not limited. The usual experience is that adults learn more slowly than young people.
It is possible to start at the age when young people begin to develop their first competencies in complex human activities, which is usually around the age of twelve. In the case of such young people, for legislative reasons, it is not possible to pay a reward for the side-products of their learning; the interactions thus take place in the mode of children’s developmental activities (i.e. the legal concept for justifying children effort on developing activities such as learning musical instrument skills, professional chess playing, …).
Summary of applied principles
Principle 1 – Selections of apprentices through inner motivation by the motto “When the student is ready the teacher will pop up.”
Marketing and any offerings of the program avoids temptation and is non-invasive. This approach works as an effective filter so that only internally motivated applicants get into further contact with the project. Personal contact and the transfer of information on a personal level play an important role, as it is possible to communicate non-surface information in both directions.
Principle 2 – Individual approach and educational goals.
At the beginning, the mentor listens to the applicant and, together with him, tries to suggest an area of programming that suits the person. It is not always possible to satisfy the wishes, but at least they are formulated and steps on how to reach them are defined. The mentor is interested in ensuring that the person has the right conditions for programming and learning.
Principle 3 – 20% of tools are sufficient to solve 80% of problems
The mentor explains the minimum number of concepts so that the candidate can start gaining practical experience as soon as possible. This requires the mentor to have a good understanding of his profession and to have an overview of what is important and what is not. The mentor should also be able to clearly explain the nature of complex mechanisms (for example, by analogies from another area). From our experience, explaining one programming language takes several hours of explanations.
Principle 4 – Intensity and rest
The apprentice alternates two types of tasks. One on the verge of his current abilities. Here the mentor provides help at the moments when the apprentice begins to get lost. The apprentice is not responsible for the successful completion of the task, but for doing the best he is able to do within the agreed circumstances. The mentor also makes sure that the apprentice does not take any failure as a personal failure, preferably in the form of an agreement before starting cooperation. The second type of task has a difficulty that the apprentice has already overcome. Here the apprentice has the opportunity to rest during a more stereotypical work and by applying the already learned he consolidates his knowledge and competencies.
Principle 5 – Meaning of the tasks for external world
It is essential for the success of the method that the apprentice starts soon working on the tasks that are needed by an external entity. It is very suitable to program software projects that have a commercial economy or for which someone is willing to pay. In addition to expressing gratitude for the contribution to the apprentice’s work, the reward is also expressed in money, which thus provides very realistic feedback and points out the value of the activity performed. This is a strong motivator to continue learning.
Principle 6 – Orientation to freedom, self-realization and consideration of sociological phenomenons
The mentor makes sure that his personality traits and worldviews do not shadow the perspectives and development of the apprentice. A good signal is that the apprentice is complementing the mentor’s weaknesses in the first days or weeks. The mentor pays attention to maintain high-levels of social qualities such as equality, freedom of expression in the team and the exchange of views on the matter in both directions. The mentor takes great care not to lay unreasonable expectations in the social climate of the team about the contribution of individual members, which could have a self-fulfilling effect.