Filling The Gap Between The Academic Life And The Professional Life

Everyone working in the Software Development field has felt the gap between the academic life and the market. It is easy to find a PROGRAMMER but it is not easy to find a Software Engineer. When a new graduate enters the market he/she takes time to understand the importance of following a process, because they had challenged themselves at the code level (I don't say that it is not important), but they did not focus on the higher level which is the process of building quality software.  Most of the professors (if not all of them) and academic institutions do not give any importance to the software process, which outputs a graduate with allmost no knowledge of why a process should be applied, why we document our work, why do we have a requirements document.

Most of the computer science fresh graduates when they get employed and they start working on a project they have a question "when I will start coding?". Here comes the struggle with the employers who are applying a process (or at least have a requirements document). The struggle is to convince the new graduate that he/she should follow the process, and they should follow the requirements document without adding their artistic touches.  Another problem is that recent graduates almost have zero knowledge of the costs of producing a software, and that any extra day over the schedule can be costly.

I want to share my experience when I was an undergraduate, and when I entered the market. I was lucky that I was instructed throughout the four years I spent in my university by a professor who insisted to teach us how to apply a process in even the smallest programs we did. In the first two years (the courses were introduction to programming and Data Structures), she used to teach us the top down design method by defining our problem and defining our inputs, processing and outputs before writing any code. She taught us that we should have coding standards, and how to document our final work. (By the way no assignment was accepted without meeting these things). Through the other courses we were automatically applying this method in our assignments and project. In the third year, I took with her software engineering, and I was the luckiest person because I believe this is what really matters for me in the market, it was easy for us to cope with understanding different software processes and why we are using them. We applied it in a mini project for the course, and then in the graduation project.  We learned how to choose a process according the type of project with taking into consideration several constraints including time and money .