How we get software engineers in current world, most of the software engineers in India are not studied the software as a mainstream subject in their curriculum [ For Eg. Electronics, Electrical, Mechanical and even Civil ]. Perhaps there is a small % of people who might have studied software / IT as a main stream.
When we hire non IT/Software graduates as software engineers, do we really provide the necessary training to them ? Even the people who are studying the Software main stream is the course content relevant to the current industry ? I was trying to find out how many times the syllabus changes for software / IT engineers, typically it is 6-7 years for Indian universities. I am not sure about the other countries like US. Even after change there are very less changes happened.
There is a subject called “Software Engineering”, When I studied 10 years back it talked about the SDLC(System Development Life Cycle) Water fall model development with Plan, Analyse, Design, Implement and Maintain. This might sound very familiar to us, still I didn’t use this methodology for more than 5 years now, as Agile Methodology is the latest and which is working well for the real time projects. I am sure still our students are not aware of this in college, they still learn the water fall model come out of college.
No company can give them a proper training on the Scrum/Kanban or Agile methodology when they are going to join. This is a learning he/she has to do along with the project. There are many things we learn on the job. This would really help the companies / project teams to make the new joiner up to the mark or pace.
I observed in some advance universities, they have added Java, .Net, PHP languages as a subject to learn for the students of Engineering. Now the question for me is, Does this help to the software industry ? I am still skeptical about it. In these subjects they are focusing on the syntax and practical examples of syntax etc. Where as I would prefer the knowledge of the student should be focused on Object Oriented thinking.
I usually give the freshers a program called “Railway Reservation”. It has some specifications, At a time you can book 5 seats and the seats should be near by if they are available. There are only 70 seats in each compartment etc. Most of the people would not ask any questions after reading the requirements. They assume lot of things. Then they start writing code, taking a two dimensional array. They don’t even bother about thinking what are the objects involved in this and how they would behave? What are the attributes they possess ? All this could be because of our education system. From the day we start programming we tell students, how to write program [Find Prime number/not, Print Fibonacci series, etc. ]. So we start writing programs from beginning. Perhaps we should teach the students, Designing. How to analyse the given problem, does it follow any pattern, what is the desired behavior of the problem, how can we optimize the code already done.
To come up with these kind of questions the students should know what are the Design Principles, what are the Design patterns already available to solve their current problem. This kind of practical syllabus would be more relevant for the students as well as employer who hire these students.
At least the basics of Design principles and Design Patterns are a must to have things in any computer science course. Hope you all agree with me. Thanks for taking your time and reading my ideas.