Sei sulla pagina 1di 6

ple for useful in projects.

But they are not really useful even after training, they spend a large amount of time in pr What People Know

Note Following write up is written with programming people in mind, but it is as much applicable to people coming from other background and being trained to use application for other purpose such as configuration. Engineering Graduates What do you expect from a person who has undergone study at a catering college for 4 years? - Expect to be able to cook for a group of people? What do you expect from a person who has undergone a vocational course at an institute? - Expect to be able to do the tasks related to the course? What do you expect from an engineer who has done 4 years of degree at an engineering college? - Expect to know only theory and lacking practical experience. Cannot produce anything immediately, but has good analytical skills, good memory and communication skills. The difference here is our education system is based on theory for engineering education. There is practical / laboratory time, but it has two drawbacks. - The time is very limited, only a small amount of things are done as a matter of practice. - The focus of practical is a small subset of the actual product which need to be produced and nowhere near to the quality required by the market place. Unlike for a cook, whatever he cooks, is pretty close to the finished product available in market. This may be due to inherent problems in setting up large scale workshops to give prospective engineers a real life production environment. Computer education is no different. We follow the same pattern of a lot of theory and a lot less practical time. Also production from practice is a small product which is nowhere near to what is available in market place. But does it need to be so? Most education institutes nowadays have enough computers and setup to produce programs and applications close to the ones available in market place. However, this may be the approach may be deep rooted in the education setup which may be difficult to change. Things are worsened by our emphasis on exam based evaluation approach. In this case, people are forced into rot learning and memorizing. This has become more of a style in most young people. In general people have less time now as compared to say 20 years back due to more avenues like internet, mobile, TV etc. So memorizing help to clear exam rather than practice as it takes time. General observation of the people who join fresh into IT Assuming the people have requisite education required for the job, they have: - Good knowledge of theory, if one talk to them and ask questions, they can very well explain most things including programming languages, databases, business environment etc.

- Complete lack of practice, if they are asked to write the same piece of code which they talk about, they struggle for even simple logic. (It is like complete knowledge of mechanics of swimming but not knowing swimming). What is required for good programming skills? I think most important component technically is Logic Building which is also most ignored. Knowledge of syntax is not that much important at this stage of life but become more so. This may be due to our education system, coaching classes etc with focus on exams. But this forces people to rot learning leading to preference of memorization over. Post years of working like this, their minds are tuned to memorization which will take time to adjust to design. So the problem to be fixed is teaching syntax but teaching logic building or design skills. Most of the freshers totally lack general programming development skills. What we do is try to give them details of a language like ABAP, C, JAVA etc. Actually after a few years of experience we know that one can learn syntax of another language easily, however it is the design of programs which is difficult. This is exemplified by some additional observations; - Most of them can talk at length about variable handling, global data, local data, pointers, memory management etc. But while programming, cannot understand how variables are to be handled. - If I ask them to write a logic, immediately they jump to what syntax to be used rather than logic building. - If they need to read data from 2 tables, they can easily write a JOIN, but if they need to read data separately and merge, they cannot come up with a logic. How to train? Extending our style of education, training in corporate world is also very much theoretical. Try to teach as much as possible in very short time. However, our expectations are different from he trainees, we want them to be able to produce real products as soon as possible. We want them to be productive within a very short time. Then why are we training them similar to in an education institute? Our training is generally focused how the language is designed not how programs are to be designed. For example, while teaching a programming language, we will divide it into following sections; - Data declaration (data type, length, decimals and related syntax) - Operations on data (assignment, calculation, string operations) - Flow control (IF, GOTO etc.) - Loop control (FOR, WHILE etc.) - Array handling - File Processing, Database Processing - Functions and Subroutines - Other advanced topics

Then we ask people to write programs giving them business problem description. Something like below. What People Know Data Declaratio n X X Operation s X X Flow Control X X X Loops Control X X X Array Handling Database Operations

Problem Scenario to be solved

Now to solve a business problem, people need to pickup different components from these vertical towers and form a logic. They need to pick up components marked as 'X'. This is still does not require any creativity, but an existing business problem with properly given scenario to be solved. Also pickup readily available and taught technical components. Still most people cannot come up with even a simple logic. What is the problem? Fault is in our training methodology which is focused on 'SCIENCE OF SYNTAX' and not on 'ART OF PROGRAMMING'. We need to move them from rot learning to developing their lateral thinking, design skills. Model can be how we learn another human (Marathi, Hindi etc.) language. It is learnt by a combination of knowledge of words, reading and speaking the language in daily life. We start with small usage by learning basic language skills and then slowing sharpen our skills with usage of more words and grammar. Another example is learning cooking. Let us use the same table from above figure and see how we learn cooking.

Basic Spices

Additiona Cooking l Spices methods (garam masala) X X X X X X

Cooking utensils required

Problem Scenario to be solved-1 Problem Scenario to be solved-2

Additional taste ingredients (Sugar, Lemon Juice etc.) X

Final Preparations (Decoration, serving) X

X X

In cooking we start with basic recipes and at every step show people actual usable output which can be produced and eaten. We show use of different spices, cooking methods, utensils for each of the recipes. For example, we may start with dal, vegetable, rice and roti. Not only this gives a quick introduction to cooking to the prospective cooks, but also show how a wholesome meal can be made. Slowly we then move to more complex recipes and methods like sweets, farsan, baking, frying etc. We do not - I repeat we do not explain them science of cooking in one go, rather it is taught as we make a progress with each recipe and learn different spices, methods etc. New Training Approach How to achieve our objective of having people productive post training in computer programming languages? We need to provide training in the form of actual productive scenarios so that people develop a perspective on how to produce real products. Teach all the language constructs by scenario and not by syntax. Each language has specific usage, so scenarios will be different and way we teach each language will be different. We need to divide each language into different vertical components. We also need to come up with scenarios which require use of different language constructs This will be a depart from our current method which goes by syntax grouping. Which also means that all languages will be taught in different way, which is closer to their real world usage and not syntax grouping. We also need to slow down in terms of the amount of content which will be taught in a given time. As we need 30 days of 1 hour each of practice to learn car driving, but it cannot be compressed into 3 days of 10 hours each day. There is a mental capacity one has which limits the amount of knowledge which can be absorbed by each individual. There will be many paths which can lead to final outcome, I will list one approach. It will take slow and steady effort to move these minds to do design from memorization, logic from syntax. We have to develop their design skills. 1. Slow pace during initial phase - Introduce only the syntax which is useful to build basic program structure which we plan them to do initially. 2. Teach only basic required syntax. A language like ABAP has evolved over past 30 years and there is a lot of syntax. During regular course we use only a subset of that. As they get confused on all the various combinations possible. 3. Give them enough time to develop their own programs by giving them design document and asking them to come up with the program design themselves. During class exercises we do not have enough time for people to come up with their own designs, so we use a short cut of giving short and simples exercises or we end up giving them most of the logic as very few would come up

with their own logic. (Imagine experience of cooking a meal with only dal to eat! We then expect people to cook for marriage party!). 4. Start with a manual exercise (if they do not use computer then..) with use of books of business. Then map the same with programming. This is very helpful in bending mind to logic building and design. This will force people to think about design before jumping right to syntax. ABAP for Freshers 1. I think the course which is X days can be lengthened to X+50% days. Also if possible reduce the batch size to 20 (for 1 PC per person) or 30 (for 1 PC for 2 people). Eventually people will spend less time on bench and there will be overall savings as learning will happen in training. 2. Remove some less useful & complex parts (Dialog programming, Lock Objects etc.) and move them to Training Phase-2. 3. Rearrange the course by program design and not by syntax. Introduce only the syntax which is required to do a particular style of programming. Which means that different versions of the same syntax can be introduced at different points in the course. More focus on developing complete programs rather than knowing all syntax. Slowly they themselves will learn to find out complex versions of syntax. (example: DATA and TYPES statements, standard internal tables and nonstandard internal tables etc.) 4. Some non-essential versions of syntax can be left for self study. Final Thoughts - Every situation is different. I'm writing my general observations. Things will evolve with experimentation and input from others. - The change will need change in the content, training method. - It will also require training the trainers on these aspects of training. We as trainers sometimes drown trainees in the sea of SYNTAX which is troublesome for them. - Finally, best would be to evolve into a mode of mentoring and coaching so as to people develop their design skills rather than just teach them different Syntaxes. - Additional advanced training can be provided within 3-6 months for advanced language concepts if required.

Potrebbero piacerti anche