PythoniCamp General introduction 2 pages This article looks at Python Camp’s developer training mode, which is coming from a long time course of vibrant practices of CpyUG community. It shares programmer training experience of current IT industry in China. It analyzes the imbalance between Python demand and supply. It further proposes a generalized Python training mode. Article Writers 1 page Zoom.Quiet Work experience 2000/05 - 2004/10 Shanghai Xunbo Digital Technology Co., Ltd. http://www.infopro.cn 2004/11 - 2007/09 http://www.sina.com 2007/05/18 Kingsoft Software Co., Ltd. http://www.kingsoft.com Python experience Had access to Python in 2000 Joined pytohn.cn in 2004 and developed wiki-based MoinMoin 1.4.2 Setup CPyUG on July 30, 2005 http://wiki.woodpecker.org.cn/moin/BPUG/2005-07-30 Since then, kept carrying out Python application/marketing/communication activities Qingfeng Work experience 2005/05 - 2010/02 SINA http://www.sina.com 2010/03/01 http://www.douban.com Python experience Had access to Python in 2002 Joined pytohn.cn in 2004 developed wiki-based MoinMoin Aknowledgements 1 page HD, has personally sponsored Python promotion activities and provided plenty of Python programmer jobs, pushing forward Python development in China; PanJunyong, , founder of zopen.cn, has long engaged in promoting zope/plone technology by organizing Python study activities; Limoodu, , an independent Python learner, has completed heavyweight tasks by himself, setting an example for Python promotion in China; CPyUG (China Python User Group), ranking in the list of Python core technology discussion, has long brought together many experts and successfully held several offline technical exchanges with its good social influence; Zeuux.org, as the only professional free software community, invites RMS to lecture in China each year and offers an online platform for technical exchanges; Kingosft.com, as the first local professional software developer, has been providing support for a variety of exchanges and application of open source technology; Beijing City University actively meets social needs with an open mind by providing a stable Python learning environment. Phthoniamp, a way forward to quickly nurture Python talent with practical knowledge Zoom.Quiet Kingsoft.com Zoom.Quiet@gmail.com Qingfeng Douban.com Paradise.qingfeng@gmail.com Introduction This article begins with two of our teaching practices inspired by Python Camp and discusses how to promote Python in the certain context of China. It covers: IT education in China Current situation of Python talent Practical methodology of PythoniCamp Achievements by PythoniCamp practices Future Plan of PythoniCamp IT education in China China's IT education is characterized by teaching basic knowledge, which is nothing wrong; however, with too few hands on courses, most students can not integrate theory with practice. As a result, they have superficial basic knowledge without pragmatic competence. Meanwhile it is not easy for companies to take up enough students who can be put into work directly; and all of them have to receive appropriate training after their employment. So the main problem is that there is no link between market and education; universities could not produce talents desired by companies and school students do not know what companies want. PythoniCamp's biggest goal is to bridge companies and universities; so that companies can have experienced people to lecture in universities to provide students with useful knowledge and to help students find their appropriate learning direction. University curriculum analysis From comparison between curriculum for Computer Science and Technology of Computer Science and Technology Department of Tsinghua University and MIT open course for Electronic Engineering and Computer Science, it is concluded: Textbook Colleges and universities all use self-developed textbooks; Textbook-developers are not authorities of related fields; Textbooks are in accordance with national curriculum requirements; Generally the national curriculum lags behind social needs for at least 5 years; This make learning objectives and entire content of this discipline disconnected with real requirements. Scope of textbook 2/5 is related mathematics / circuit for science students; 2/5 is introduction to various computer-related fields; 1/5 is involved in development practice, all of which are just M$ related technologies (VB / C + + / SQL Server). Content of textbook Nearly half is pure theory; Others are mostly characteristics introduction to related technologies; As for courses related to computer science, only a few are compulsory and the rest are optional. Learning requirements The courses, compulsory or optional, are examined according to the outline of examination and little attention is paid to whether students understand the real purpose of subjects and correlation between each field. Take "data structures and algorithms" as an example, it is required to know only what data structures and algorithms are; it is required to remember several C / C + + / JAVA-based data structures; it is required to write out pseudo codes of several classical sorting algorithm; with the above knowledge, students will pass the exam! Eventually students only carefully follow their textbooks; they do not understand what the software is and how to design a software; they have no collaboration experience in software development team; they can not operate other kinds of OS except M$. Employment reality At present more than 1000 colleges and universities in China set up computer-related disciplines. Of over 5 million undergraduates enrolled in universities each year, 3% or more enter computer-related departments. Nearly 300,000 undergraduates of computer-related major graduate each year, of which nearly 20% choose to continue with graduate school, about 1% are self-employed, and others join the job-seeking force. IT industry needs nearly one million employees each year, of which 40 million would be computer talents. Gap of software testing jobs is up to 200,000; gap of embedded software engineers is 150,000. With rapid development of software outsourcing industry, there is a growing deficit of software engineers using Japan, Korea and other small languages; and the gap of Japanese outsourcing software developer only reaches 300,000 or more. There are about 3000 large companies in China and only less than 5% of them have established mature information construction; so state-owned companies have a great potential to take up graduates. However, current job-placement rate is not optimistic. Employment comparison Take Kinfosft College as an example: 600 people sending out an invitation of online test were filtered out from 2700 resumes in July, 2008; And 46 passed the test; After training, 16 were qualified; They were recommended to various departments in August,2008 and 13 of them entered employment; The job-placement rate is 0.48%. Statistics of Beijing City University: There are 4 IT-related departments in Beijing City University; The number of graduates is 6000; according to incomplete statistics, computer science graduates are about 2000; After graduation only about 1 / 80 of students engages in software development; and the proportion is decreasing year by year. There is no statistics about students engaged in software development 3 years after their graduation, but it is estimated that the proportion is less than 1 / 100. Job-placement rate of college graduates in the province is 7.61%. False employment phenomenon Moreover there is false employment phenomenon in colleges. Colleges cook evidence for students’ employment status through various ways to show their nice annual "graduates’ employment rate". That is because school's attractiveness depends on "graduates’ employment rate". It is believed only good schools have high "graduates’ employment rate", which will win students and parents over. And only schools with sufficient number of students could apply to education funding, thus making further development. Therefore, many students were unknowingly put into false employment in recent years. False employment phenomenon shows colleges can not provide students competitive advantages. Why? Teaching: Scripted teaching has led to the following phenomena: Students can only use a similar secondary mathematics / physics / chemistry approach to study computer science. They memorize isolated concepts through doing exercises. They can not compile basic software independently. They are unable to master programming skills in school because they are used to memorize codes by rote without full understanding of programming. Most students can not properly understand procedures and data structures. Development experience: A majority of students to work do their assignments by directly copying seniors’ work. Although most of students have their own computers, but they basically use the machine for games rather than for program development. Even though some students independently complete their development according to teaching materials, they can not grasp the language features because they do not exercise timely communications with each other. Attitude: Most students follow classroom-based courses and rarely go on with their self-learning; this is because most of them just want to get a certificate, which will enable them to enjoy salary of graduate level once employed. From primary school to college students are required to do by book; they never take on any course or training concerning work ethic and attitude. Further, students are not asked to independently cope with difficulties but allowed an access to references of seniors’ work. With exam-oriented education from primary to university, students unwarily take on such thought that they will get promoted through all kinds of tests future in companies, and that there will be students / seniors / teachers available to help them solve problems. While facing any pressure their first response is to run away from it or to have make-up exams; they lose their curiosity and courage to explore the unknown on their own. Summary: Computer discipline of colleges follows the traditional computer science education, whose focus is on systematic theory rather than applicable skills. As a result, some graduates have neither a solid theoretical foundation, nor sufficient application of skills; so it is difficult for them to adapt to needs of computer applications, let alone to meet practicing requirements of IT industry. However, courses of computer discipline of software colleges and vocational schools are oriented to IT companies. These schools use flexible teaching mode, but they could not bridge the gap between talent training and company demand due to many factors such as lack of actual projects, shortage of training base and quality teachers from the front line in companies. Rise of PythoniCamp The article writer also graduated from a typical Chinese university, and after years of struggling as a quasi-programmer, he entered the free software world through PHP. Since then he got to know the technology community, starting a happy collaborative learning; Also through self-learning and use of Python he had an access to Python and deep appreciation for its elegant problem-solving performance. His own practice convinced him that this is a very effective technique, which shall be a must for all kinds of software teams. Then in the ongoing process of CPyUG ClassMeet, he met practitioners from various industries / fields, which further confirmed that development problems from software companies share common characteristics and efficient teams have something in common. All of these common characteristics can be resolved and expressed by Pythonic thinking. He also found the aforementioned shortcomings of computing education in communication with them. He summarized causes of college students’ confusion and deficit of self-teaching awareness as well as ability into the following: There is a gap between students and companies, i.e. students lack solid knowledge foundation while companies need an overall problem-solving capacity. Second gap is that students have simple development experience accumulated from assignments while companies need a development team with coordinative ability. Another gap is that students are accustomed to exam-driven learning method while companies need a self-motivated self-teaching ability. Some college students can bridge the above gap through self-training before graduation, generally through self-oriented development or participation in free software development. In the process of continuous development and online communication for at least a year, they are exposed to the integral scenarios of real software design / development / test / promotion, thus gaining a professional quality of a basic programmer. But such kind of students is rare and they either are taken up by companies before their graduation or start their own business. Basically many students with no real interest in computer just want to get a professional certificate for an IT job; such students will not become a real developer and basically enter marketing / customer services upon their graduation. Some students are really interested in the computer, but do not know how to learn programming. They take school subjects seriously without knowing they can not be qualified as a basic programmer with such learning. These three kinds of students are the target source for PythoniCamp. How to quickly improve these students’ ability has always been in the writer’s mind. With these thoughts and some experiments he started a variety of internal training, online FAQ, offline classmeet since 2004 and have accumulated some feasible training methods. From October, 2007 he also built his own team in a relevant company by personally conducting recruitment and training to further involve all aspects of activities concerning PythoniCamp. And he had specific implementation plan. In July, 2008, for the first time he had a full practice in Kingsoft College. Kingsoft PythoniCamp What is Kingsoft? Kingsoft Corporation Limited is a leading software developer, distributor and service provider in China. Kingsoft now has R&D centers in Zhuhai, Beijing, Chengdu, Dalian, and Shenzhen. Its two main businesses are software and online games. It has several well-known products such as Kingsoft Office, Kingsoft Power Word & Kingsoft Internet Security. What is Kingsoft College? Kingsoft set up a full-time holiday training camp for the juniors. Through a period of two or three months of training, it provides trainees with basic knowledge in program, independent program development, program development team; and with such comprehensive training it tries to select software R & D talents who could meet the job requirements and have pragmatic skills. From 2007, Python has shown its advantages of easy-to-learn and efficient maintenance in its application in all aspects of the company. And some large-scale projects have begun to use Python to perform development. But it's difficult to recruit experienced developers. Hereby proposed by some employers, the first PythoniCamp training was held by Kingsoft College and presided over by the writer. What is PythoniCamp? Its full name is Python Experience and Devil-style Training Camp. Through the practice of real projects students are enabled to quickly establish a sense of teamwork and good programming behavior. Students with no responsibility in mind become a responsible quasi-employee. Students with potentials are identified for relevant companies; and follow-up and training are conducted to make companies to have the right staff at the right time. Many software companies want to recruit people who have experience and can quickly fit in the team, which is just a deadly disadvantage for college graduates. They need a "catalyst", which can combine students’ accumulated knowledge with real working scenario to make students better understand the process of software engineering practice. In the PythoniCamp, we will create a real software engineering environment and through intensive interaction we lead students to learn on their own and to make them go be self-inspired and creative. Why do we choose Python? There is demand for Python Programmer by relevant departments; Python is a quickly-mastered script language. Trainees can collaboratively finish relatively complete work within a few weeks, thus experiencing the entire software development life cycle; Python is a pure tool-type script language. It can be mastered in the shortest time, so trainees can focus on problem solving rather than on development skills of the language itself (in order to force trainees to give up textbook-style waterfall-like development process which is picked up in school.) Training program Trainee Target source is those who pass the preliminary test of the Kingsoft College. Source trainees are fresh graduates majoring in computer-related disciplines from 14 universities. Organization structure Three teachers from the department where the writer serves to give routine instructions and answer questions and guide their development; the writer presides over all kinds of routine “standing” meetings. One assistant teacher from Kingsoft College is responsible for routine maintenance of the training camp, such as monitoring student activities and giving them a rate accordingly. User representative, reported by four contact persons, is responsible for inquiry of users’ requirements by collecting their actual needs from 7 systems in 4 departments; user representative is also responsible for the final work acceptance. Program The camp provides short yet necessary knowledge lectures and immediately enters trainees into the work environment for development. Once lecture: introduction of Python; about50 minutes; target: recruit voluntary participants from Kingsoft college; Once lecture: Python job description; about30 minutes; target: introduce jobs in Kingsoft and PythoniCamps 'development for boosting students’ confidence; Two lectures: basic Python training; about 100 minutes each; target: describe practical Python knowledge to nurture Pythonic thinking and instruct Python learning direction; Twice lectures: guide to PythoniCamp activities; about 50 minutes each; target: describe collaborative thoughts of a development team; introduce development management tool platforms; instruct conventions for use of development environment; set up the weekly-updated agile and iterative development method and practicing details. After that, the camp immediately asks trainees to team up according to their interest to take on their project and perform the iterative development until the PythoniCamp training session is over. Training method Real project team! Provide perfect development management tool platforms: Use SVN for version management https://kcpycamp.googlecode.com/svn/trunk/ Use Trac for task / bug tracking (intranet http://trac.rdev.kingsoft.net/kcpycamp/) Use the wiki for knowledge sharing http://wiki.rdev.kingsoft.net/moin/KcPyCamp Use the mailing list for open discussion http://groups-beta.google.com/group/kcpycamp Use online communication in IRC #kcpycamp (freenode.net) Guide iterative development: Elect iterative development manager and contact person by the team to conduct development and coordination respectively as well as requirement management. Actual development is promoted by regular meetings: Answering questions twice a week: Questions are submitted to the assistant teacher through various channels before 17:00 on Monday/Thursday or to teachers through mail before 17:30. Q & A at 11:00~11:30 on Tuesday/Friday. A milestone meeting once in a week: Regular weekly meeting is held at 11:30~12:00 on Friday to demonstrate development results of this week. “Standing” meeting is conducted twice a day to coordinate daily development: Each one talks about his task of the day at 09:00~09:15. Each one summarizes his progress of the day and main difficulties at 16:45~17:00. Teacher shall be open-mined and answer trainees’ questions as far as possible as a colleague but never to offer help. If no students ask questions, the teacher shall cultivate trainees’ self-motivated learning and experiment attitude by putting up and asking questions himself in the standing meeting; the teacher shall repeat a variety of practical thoughts needed in work and the following: "Teachers can provide all the help on the condition that you have to be clear of what you want." "For any problem, when the meaning of the problem is clearly defined, the problem has been resolved by half." "99.9% of difficulties encountered in the process of development also have been encountered and solved by others, and what you shall do is just to found it out." "For a problem, only when it has been known and thoroughly considered by the whole group, its solution could be the most reliable." Etc. Assessment Focus on identifying potential and selecting the one who can adapt well in psychology / awareness; pay attention to the code forming process and team efficiency rather than quality of codes. Focus on good behavior; put forward maximum quantitative targets; provide an objective assessment for trainees’ adaptability! Assistant teacher records daily rates; the results, not detailed assessment standards, are aired weekly. A total of 44 assessment points of 20 items As for potentials, focus on self-learning habits and leadership potential As for collaboration, focus on teamwork and communication skills As for skills, focus on developing capacity / efficiency / habits Training results The first session of PythoniCamp in 2008-08 22 participants out of 35 students 2 drop-outs 5 development teams Final completion and delivery of 3 systems 5 trainees passing the examination 3 trainees taking on by companies Job-placement rate of 14% is 30 times of that of social recruitment. Achievements by trainees MogBench: Code: http://kcpycamp.googlecode.com/svn/trunk/MogBench/ Name: Mogilefs File System Management Tools Features: Based on Django; simple and practical Mogilefs file cluster management and analysis interface. CCRJ: Code: http://kcpycamp.googlecode.com/svn/trunk/kcCCRJ/ Name: Kingsoft College C++ Code Rule Judger Features: Based on the command line; automatic compliance verification of 14 code conventions for C + + code presented by training camp trainees. VER: Code: http://kcpycamp.googlecode.com/svn/trunk/kcVER/ Name: Virus Encyclopedia Robert Features: Command-line tool; simulate the administrators of http://vi.duba.net/; read the virus analysis; and automatically submit entries. HHD: Code: http://kcpycamp.googlecode.com/svn/trunk/kcHHD/ Name: Human Resources Handbook Features: Interview management platform prototype; the interviewer can manage the time scheduled, the interviewer resumes, interview progress and scores. BCU PythoniCamp Traing program School Curriculum: 8 hours per week; 2 classes; about 60-80 students Weekend class: on weekends; 4 hours per day; continue for about half a year Learning targets: Stage I : Basic Python Stage II: Python high-level language features: yield expression and metaclass object Stage III: Django, GAE Achievements by students Herostory http://code.google.com/p/herostory/ One student developed a complete Japanese-style 2D game engine in order to end the game books API development by exercising all aspects of Python. For this API engine, you can create any of SLG or RPG game. And through this project the student learned the use of Python test cases, making the engine stronger. School teachers platform http://code.google.com/p/bcuteachingweb/ Through this platform, teachers can post homework and courseware, and students can learn online and submit their homework online. This platform makes the teaching process more transparent. Through this program, the student completed learning of the Django and Django Admin. Early Education Net http://github.com/hexuotzo/khufu This is a real project. In addition to using the Django, the student also compiled a number of Python scripts to facilitate the operation and maintenance. The student also learned how to optimize Mysql, memcache, etc. and had a lot of practical work experience needed for the actual work.