Saturday, July 03, 2010

Students and Professional Software Development

In May 2010, I conducted a workshop on 'Introduction to Profession Software Development' in Sir Padmapat Singhania University, Udaipur (SPSU). Previously I have conducted various introductory sessions for new joinees in Geometric Ltd (my previous employer). In all the projects that I worked on, usually 50% team members were 'freshers'. While working with these fresher/new joinees, I realized that even computer science students have no clue about 'professional software development'. Most of them have not even heard of 'version control'  so there was no question of using any version control system.

Obviously when they join a software company, it is a 'culture shock'. Also when these students try to work on some short internships with the industry, they spend more time learning such tools/practices rather than  development of their project. Hence industry mentors are not very happy with the output of such internship programs. 

The objective of this five day workshop was to reduce the intensity of this culture shock and help students to with internships, last year projects and also prepare them to work on programs like 'Google Summer of Code'.

Participants were divided into teams 4-5 students each. A SPSU professor was assigned as 'mentor' to each team. The daily program was divided into 
  • class room sessions of about 2 hrs every morning, 
  • 15-20 min presentation about yesterdays work by the teams 
  • working a 'mini-project' during remaining time.
I conducted following sessions during the 5 day program along with reviewing the design/code. The team of SPSU professors worked with me to mentor the students, answer their queries, review the code/design etc.

Day 1 : Difference between amateur and professional software development. And the tools of professional software development (e.g. Version Control, Bugbase, Build systems etc).
Day 2 : Writing specification document
Day 3 : Key Principles of Software Design and how to write design document.
Day 4 : Principles of User Interface Design
Day 5 : Bad coding practices and how to avoid them.

The workshop was very interesting experience. 
  • Most of material I prepared before hand has to heavily modified based on interaction with students. 
  • As usual some student groups were not at all interested while some groups did fabulous job. 
  • The professors were serious about mentoring the students and took a keen interest in their teams work. However, many professor didn't have any experience of working in a industry and it showed.
  • Many students had done a basic java course. But most of them did not have any idea on developing a GUI in Java. Same was true for students working on C# or C/C++. 
  • Some teams worked on Turbo C compiler. Obviously that experience with Turbo C and developing GUI with TurboC is not going to be very useful today.

The Program was organized by Industry Readiness Center (IRC) and Sir Padmapat Singhania University, Udaipur (SPSU) in collaboration with Poorvanchal Systems Pvt Ltd.

What do you think about such workshop ? Will they be useful to students and industry ? I am interested in hearing about your experiences.