Articles

Home


Test Prep

GradMentor

World's most comprehensive GRE prep tool.  Bigbook solutions, section tests, unlimited CATs, writing assessment, university selection, resumes, cover letters, college essays, vocabulary, and more.
 

WordMentor

World's most comprehensive GRE prep tool.  Bigbook solutions, section tests, unlimited CATs, writing assessment, university selection, resumes, cover letters, college essays, vocabulary, and more.


Career skills & Counseling
 

CareerMentor  
 
Scientific career counseling, training and recruitment assistance.  

The most effective and complete tool (the only on on the web of its kind) in its category.  A web based psychometric, aptitude assessment service (Mirror), digital training in language, personality, career skills, computer and IT skills, corporate skills, resume creation software.  
 
 

EnglisMentor

English training for non-English speakers. We start from the basics and take you to a comfortable level in this 90-hour training program, with training in reading, writing, speaking, and grammar.

more...
  


For
Institutions or Colleges

 

DigitalMentor enables your institute (college or university) provide comprehensive career training to your students.  

DM provides coaching in all the essential components of your career --- communication skills, life skills, personality skills, entrepreneurial skills, computer and IT skills --- in one single package.  

Over 400 hours of digital programs and 1000 pages of books, and unlimited Web support makes this the only comprehensive training and career development tool on the web.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Software Engineering: The MBA of Computer Science 
 
  


I have heard many Computer Science students in our colleges say that Software Engineering is a “dry” area. They feel it is one of these courses that you have to study to get your degree, but is boring and does not add any real skill.

Nothing can be farther from the truth. If you equate skills like writing code, testing, designing programs, and documentation to individual machines in a factory, Software Engineering teaches how to use these machines in harmony to produce the best products. If you think of coding, testing, etc as surgical instruments, software engineering teaches how the doctor must use these instruments to get the best possible results.

In the nascent stages of software education in our country in the early 80’s, Software Engineering was covered in just one course in a 4-year program. That coverage gradually increased, and now in a 3-year Masters program like MCA, students take 3 – 4 courses connected to Software Engineering and software project management. In the United States, the primary software generator in the world, full-fledged Masters programs in Software Engineering are common and in high demand. 

The above analogy of the factory explains why software engineering is rapidly becoming more important. Let us say you know how to make pots. You start with a small setup of one pottery wheel, and your focus is on perfecting the technique of making the pot. As you grow, making pots becomes just one of the skills needed for making a successful pottery factory. If hundreds of people with hundreds of pottery wheels are working in your pottery factory, your emphasis has to be on their coordination, process flow, maximizing individual productivity and job satisfaction, and of course, maximizing the quality and quantity of the factory’s output. Similarly, the skills and knowledge needed for software manufacturing are very different from programming skills.

Software industry has grown more complex. From 2-5 people groups producing small software programs, now most programmers work in 40-4000 people groups producing large product families, sitting in multiple geographic locations. Life cycles of products like the Windows operating system or a large banking solution go on for years. In such a situation, it becomes critical for each programmer to understand that he/she is a cog in a large wheel, and that following standard practices and coordination are of fundamental importance.

The goal of Software Engineering as a field can be summarized as reducing risk. Risk comes in many ways in software development. The final developed software may not be what the customer originally wanted. The software may fail unexpectedly in critical situations, or have bugs. The development costs or times may far exceed what is originally planned. The software may be cumbersome to modify rapidly, when new hardware or software products become available in the future. Development process may become so tension-prone that critical individuals or teams break up during important periods. Simply put, Software Engineering is a collection of methods to systematically minimize all possible risks during the software life cycle.

I hope it is clear to you now that Software Engineering is an absolutely essential and exciting area. Students who are well equipped in Software Engineering knowledge not only code better. They also know how a group of people can be made to produce high quality software, which exactly fits the customer requirements, using the minimum possible time and money. Such students immediately become assets to the organization they work for. A degree in Software Engineering is to Computer Science what an MBA is to Engineering.

Software Engineering provides excellent opportunities for individual creativity. It in fact rapidly accelerates your growth in a software company. Ways to optimize one software process are usually very different from those for another. Comprehensive Software Engineering methodologies like the Rational Process and Agile Programming have evolved over the past decade. While these have strong prescriptive components, they emphasize flexibility, allowing a lot of room for case-by-case customization and individual creativity. That software engineering is an art can be understood through the comparison with Management techniques.

As the use and development of software becomes a rampant, companies and individuals are measured by the Software Engineering practices they employ. A small percentage of Computer Science practitioners may thrive on unstructured algorithm and technology development. But the majority necessarily has to understand and practice strong Software Engineering practices. You may be seeing in hoardings, advertisements and web sites proclamations of software companies being SEI-CMM level 5, ISO 9001, FDA-certified, etc. Such models and certifications are quantitative indicators of how good the Software Engineering practices of an organization are.

Programming is like painting. You sit alone in front of a powerful medium, the computer. You have a vague idea of what to create, and the output evolves stroke by stroke. Left on its own, programming is a deeply individual activity, like any art. Professor Donald Knuth’s legendary 7-volume series “The Art of Programming” reflects this insight. In order to make tens or hundreds of programmers work in tandem, a structure needs to be defined, within which uniformity, predictability and productivity thrive, while preserving individual creativity. This is what Software Engineering does.

So what does this all mean to you, as a student of Computer Science? Bachelors programs in CS (BE, BTech, BCA) or even Masters programs (MSC, MCA) do not adequately cover Software Engineering. This is partly because the curricula for these programs have been defined years ago. During your CS education, you need to keep your eyes open to how software gets developed in the Real World. You need to understand best practices in designing, analysis, testing and documentation, and of course coding. A specialized degree or diploma in Software Engineering would help immensely in putting you ahead of other students. Given the choice of 2 students, one who is an excellent programmer and one who is a good programmer with good Software Engineering knowledge, most employers would prefer the latter. Recognizing this need, established universities in the United States, like National Technological University, are offering a dedicated MS in Software Engineering to Indian students. 
(For more details, see http://www.iiie.us ).


Back to Articles Section

 

 Copyright 2004 www.placementor.com All rights reserved.