Showing posts with label computer. Show all posts
Showing posts with label computer. Show all posts

Wednesday, August 15, 2012

Change in the definition of growth ? Not just number of employees or revenue, but also quality !!!

(Please don't think I am biased to favour the Indian IT industry, I am a part of the bandwagon so I include references to it)
Recently while talking to a senior executive at a company I came across this question written in the blog title, he mentioned that companies have recently started to realize that while growth is important, but increasing number of employees into the firm is no good way to achieve it.
In the last decade companies hired lots of graduates and staffed them into various projects outsourced from abroad. The resources were shown to the clients as resources waiting to start executing the projects. More the resources more chances of getting newer projects. 
One good thing which the recession brought in was growth of analysts and consultants.
10-12 years down the line HR analysts realized that companies have grown to fat sizes and that this is no good way to grow. By simple high school math one can figure out that by increasing resources and doing the same amount of work reduces productivity per resource !
This meant improvising the existing talent so that productivity and revenue both could be increased.
This doesn't mean that we need to stop hiring at the entry levels in the future but we need to definitely get the best people at entry levels itself. By hiring quality people at the entry level, companies will get better people at higher levels in the future. Better people means more quality work is done, ensuring client satisfaction and finally growth in terms of revenue.
So it seems, gone are the days of rampant and blind hiring at colleges during final/pre-final years of graduation. If you are reading this and if you are looking for a job then its time to be not only talented, but also to do your work in a qualitative manner rather than just quantitatively. To tell you the truth, if you are good, people will like to stay with you and companies will make efforts to retain you (in cash or in kind). But if you ain't good nobody cares, there is a huge ocean of people waiting to showcase their skills and talent.

Wednesday, August 8, 2012

Reasons why IT industry isn't the same anymore

Back in time 10 years back, being a part of the IT industry in India was considered uber-cool and elite. The profession commanded respect and even the mention of the word computer science engineer sent bells ringing in the ears of neighborhood aunties looking for grooms for their daughters. Onsite trips for a few months or sometimes years were the norm and people got richer and richer. Property prices zoomed up in cities and suburbs and property brokers thought of different techniques to fleece the buyers in the name of IT boom.

But what happened to the once elite considered profession ? Why isn't it the same anymore ?
Why has it become a dharamshala for all kinds of people ? Why doesn't it come back to it normal self (pre-2007 era) ? Where are the phenomenal salaries that were offered to employees earlier ?

Reason #1 : ( There is no IT in IT ! )
IT work involves insignificant amount of knowledge related to computer science or information technology for that matter. Anybody who knows how to click and type with decent amount of common-sense can come over and start working.

Reason #2: ( IT work is nearly complete )
Most of the IT work has already been completed and optimized in these last 12-15 years of IT boom, which leaves behind little to be done. Clients can today just order a solution over the internet, just like you order a book from amazon.com. The little configuration or customization that needs to be done doesn't need to be outsourced , it can done by hiring a few more members into the IT team of the client themselves.

Reason #3: ( Privacy Issues )
People are today concerned about their privacy and hence are the companies handling the common people's data also concerned about data security and privacy. This has led to companies forming their teams which does the IT work at their own location with lesser issues of data privacy and theft. Specially banks and investment firms.

Reason #4: ( Supply >>> Demand )
The industry is today over-saturated with employees. There is no need for much head-hunting. Thousands of employees are sitting idle today having no work to do at all (read bench). Now, how can one expect that one will be offered a envious hike when he switches companies ?

Reason 5: (Reason#1 + Reason#4)
Finally, the job is such that it doesn't require any heroic programming or analytic skills. On the floor (the workstation where you work) everybody is alike.So this leaves little for the supervisor to differentiate on the basis of your academic background/skills. So you might find a science graduate doing the same work as a electrical engineer. Companies have been seen promoting schemes for bachelor of science graduates to complete their masters along with a job at their offices. It helps them to save costs and get trained bonded resources to work for peanuts.

Wednesday, June 27, 2012

What is missing in our computer science curriculum?

This is a nice article, i have abridged it from an existing blog I read somewhere else. I have added the link in this article.


It seems that universities fail to train students who can build good software. Most graduates know what inheritance and interface are, but few of them can properly choose and defend which to use. Most graduates have taken classes in “Operating Systems” and thus can talk a lot about threads and scheduling, but few actually have read books like the one from Doug Lea. They cannot be entrusted to write multi-threaded code. Most graduates memorize the visited nodes when writing a function to detect cycle in a linked list, but few of them are aware of Floyd’s cycle-finding algorithm. The funniest thing is that a lot of them think that they are writing object-oriented code because they have replaced ‘struct’ in C with ‘class’ in C++. They are yet to read a book on design pattern.
In other words, these graduates cannot use the programming languages effectively (ineffective). They cannot communicate their ideas to colleagues in their code (incomprehensible). They do not evaluate the space and time complexities of their algorithms (inefficient). They produce spaghetti code that is so difficult to modify (unmaintainable) so we have this motto in the industry: if it ain’t broke, don’t fix it. It is next to impossible to add new requirements without rewriting it from scratch (inextensible). Often when I do code review, the code looks like scribble to me. I have no way to tell whether it is right or wrong (incorrect).
I would like to point out that computer programming is a real professional that requires more than merely reading “C++/Java/C# for Dummies”. We need the programmers to know more than just the programming constructs and some irrelevant theories they never use on the job. Given a project, a competent programmer should be able to understand the problem, design efficient algorithms in terms of space and time complexities, evaluate different implementations, type in legible code, and provide systematic evidences that the code work. It is very unfortunate that universities fail to deliver students that qualify.
Why don’t universities produce good programmers? The major problem lies in the curriculum. Somehow the schools assume everyone can read the book such as “C++/Java/C# for Dummies” on their own. Consequently, most fresh graduates write dummy code.
Yes, we do programming projects for courses like Data structure, Operating System, Artificial Intelligence and etc. But these assignments aim to enhance the students’ knowledge in the particular topics. The code is never graded based on how professional it is written. Take Operating System as an example, the assignments aim to enhance the students’ knowledge on the concepts of thread and the OS scheduling algorithms but they are never designed to train students on writing good multi-threaded programs. The textbooks used in class teach about mutex and semaphore but they do not teach how to use them effectively. How many students, after taking an OS class, can design a thread-safe stack? I bet that most of them know what threads are and what a stack is, but few can design an efficient and effective thread-safe stack class.
The second problem is faculty. As a university the undergraduate courses are usually taught by newly graduated students. These students are trained to publish journal papers. Many never deliver any industrial applications in their life time (not hands-on anyway). Not only do they not know how to write good code, but they cannot appreciate how important it is to produce good code. For instance, in a Data Structure course, a professor teaches about stack, but he is unlikely to implement a thread-safe stack class for professional use. Without ever working in the industries, it is very difficult for a professor to understand the details and issues associated with using a thread-safe stack. It would even be more difficult for him to appreciate how important it is to provide systematic evidences to show that his class works and is ready for a third-party to use.
One may argue that “Computer Science” is about science so we study Artificial Intelligence, Operating System, etc. Science is about research and innovation. It is not about programming. My dilemma is that if we cannot go to computer science schools to seek qualified programmers, where should we turn to? Also, what exactly is the use of these university trained computer science graduates if they cannot write good code? After all, not everyone becomes a scientist. Most of them are engineers that code the science ideas into real products that benefit our societies.


Original Here:
http://numericalmethod.com/blog/2010/11/03/what-is-missing-in-our-computer-science-curriculum/