Monday, August 31, 2009

Notes for freshers trying to get a job in IT


There is a recession and the market is bad for freshers trying to enter the software industry. Graduates who were offered jobs in campus interviews have been asked to wait by companies. Companies have dropped out of campus interviews for this year. I know that last year many freshers who were being trained were laid off (almost the entire batch in my last company).
Things are looking bad for people looking into stepping into the software industry for the first time. On the other hand, if you have a couple of years of software experience, things do not look so bad - companies still are recruting people with minimal experience.
In this post, I will try to give some advice on how to tide across these times. I will follow it up with a primer for freshers about the workings of an IT corporation and career paths.

My Credentials
I was a VP in a medium sized company for some time. Among other responsibilities I was one of the primary trainers for incoming freshers. I set up syllabus for such training, and also evaluated freshers regularly. I have been an interviewer on campus a few times. I have also evaluated computer training companies for outsourcing our training.

Why do Freshers fare worse in a recession?
Let us say I am running an IT company. I have projects coming in "pipelines". I have a set of current projects and they may be expanding or closing down. These projects may be in different technologies (such as Java, .NET) and therefore moving people around in these may be a problem.
An IT company constantly faces manpower issues. People tell us that the main reason is "employee turnover". That is, employees keep leaving companies in search of better jobs. But that is a small part of the problem.
Unlike manufacturing companies, software work cannot be transferred easily from one person to another. In manufacturing companies, producing a piece of a product (such as a telephone) takes the same amount of work for each telephone. Reproducing each product the same way is the main focus in manufacturing. Thus there is lots of manual, repetitive work.
But in a software company, reproducing a software or packaging it in a CD is trivial. It does not take any effort. The main problem in software is CREATING it according to specs.
Thus the avreage worker in IT needs to be much more qualified and intelligent than the average worker in other industries.
So, when a new project comes in, finding the RIGHT person for a role in that project is a big pain in software. Even if you have ten people sitting in bench, it may be difficult finding the right person.
I as an IT company owner, find staffing and recruitment difficult. I decide that I may run my business more profitably if I found smart people from college. The college already has a built in evaluation system, so I depend on that system to find smart people.
In India, seeking computer science engineers alone does not help me. A person passing as a computer science engineer, with high marks, still may have NO idea about what a company needs right away. I will come to this later, but that is the nature of the university degrees here. Particularly in computers. It is not so bad in electronics or in automobile industry. I joined an electronics company when I passed out of college. I got no training, but I was productive in two days, fixing circuit boards. That does not happen with software so much.
So companies end up seeking college grads, and then training them for two to three months. For an actual productive work, it takes upto 6 months of hand holding for a fresher - even if they are from a computer science background.
But companies still do it, because they can justify the costs. Freshers are likely to stay longer in a company. They are also paid less. And they are less dmeanding from the company. There are several advantages to investing in freshers.
But they all disappear in a recession - because the lack of projects and mass layoffs flood the market. All of the above advantages now also apply to experienced engineers in a recession. So, companies end up not recruting freshers.

Training Courses and Certifications
There are different modes in which companies recruit outside campus. They have walkins. They have a referral system - so if you know someone's friend, it helps (nothing wrong with that).
Meanwhile, you are sitting at home, trying to decide your next course of action. Your parents are worried and they want you to do something to get a job.
In this situation, I see many freshers take a standrad approach - they join computer courses to learn more. They write certifications or other exams.
My opinion is that these are useless. I can tell you right away that computer courses have ZERO value for a recruiter. In my opinion they are a waste of money.
So are certifications, unless you actually use that as an opportunity to learn. The certification that a fresher shows is simply a way for recruiters to ask questions in that direction. The certificate itself has no value.
I have evaluated software training companies to determine if we can outsource training from my last company. I interviewed people from some premium training companies. The trainers had NO idea about technology. They themselves had no grasp of concepts - they needed training themselves.
There are three types of training companies:
1. Top-tier like NIIT - In my opinion, these are bad too. But they may have some value because they have placement services. But they are costly.
2. Second tier - these guys want to be NIIT but they are really really bad. They are affected by the lack of good trainers.
3. Third grade scamsters - these guys will promise a job and have other scams up their sleeves. They are evil - stay away from them.
My advice is, do not spend money on computer training courses. Recruiters do not respect them. In fact there are people who even disrespect if you went to NIIT. If you have an engineering degree or an MCA, they are of much more value than computer training certs.

Self-Learning
In times of recession, as I explained above, companies are not going to train you. They want someone they can put on a project and can be productive in atleast a week.
If you can prove that you can do that, you can get a job.
Let us assume there are walk-ins or you get a referral through a someone you know. The aptitude test part of it is over and you are about to face an interview. Let me tell you what I would like from a fresher.
I would like him/her NOT to be a fresher. (From now on we will assume the fresher is a female).

Seriously, I would look for proof of the following (much of this assumes a web development project):
1. She should know HTML, CSS and Javascript - no excuses. When I say HTML, I don't mean creating a list with a marquee flowing on top. Do NOT list plain HTML in your resume, without including CSS and Javascript. And learn CSS and Javascript.
Your BEST hope as a fresher is to know HTML, Javascript, CSS, and then ASP.NET or JSP or PHP. That is the correct combination for an entry level position without training.
2. That she knows a language such as Java, C#, Visual Basic .NET or PHP. It is not acceptable to say you know C or C++. You are unlikely to get a job with C or C++. Don't even list C in your resume if you know one of the other languages.
3. That she has worked in a project that makes "business sense". Address Book is NOT a project we like to hear. Instead if you said you worked in creating a website for you college library, it is slightly better. If you had created a web application for managing your syllabus and project work at college, still better. If you had actually built a website for someone's electronic store, you are ideal.
That means you understand the complexity of a actual web application. Hopefully all that you are saying can be justified when the recruiter further questions you.

Employable Skills
As a fresher, your job is to learn employable skills. I mentioned above the knowledge that can get you a job. Let me break it down a little bit more below. Again, I am talking about a company mostly performing web or desktop development - not writing embedded software.
1. You should be familiar with an editor such as Eclipse, Netbeans or Visual Studio.NET. Eclipse is the best bet. It is also free.
2. Given a photoshop layout of a webpage, you should be able to lay it out in HTML. This is a key skill. It requires lots of work to learn.
3. You should be able to write a simple "Register" form and save it to the database in any platform such as .NET, Java or PHP. You don't need to know all of them - just one platform is fine.
4. You should know standard algorithms such as reversing a string or sorting a list in either Java, C#, VB.NET. I do not like to ask these myself, but people still ask these questions.
5. You should know how the web works - cookies, query strings, going from one page to another (redirects), session state and other ideas.
6. You should know how to design a couple of database tables with foreign key relations (normalization).
7. You should know basic SQL. Inserts, selects, updates, deletes and joins.
8. Try to know what source control or version controling system is. Knowing the concept or having someone demo it to you is enough.
9. You should be able to create "reusable" controls in ASP.NET or JSP or PHP.
10. You should know how to "validate" a form on the client side - making sure phone numbers are correct etc.

How do I gain these skills?
Here is my advice on how you can go about building these skills:
If you are in college or just out of college, prepare to do some learning of your own. Forget about computer courses and certifications. I will give you a small path for learning PHP. You need a computer at home or a friend's home.
1. Buy a book. You have to learn some things from books, no other way. Spend money and buy the Wrox press book "Apache, PHP and MYSQL".
2. Follow the instructions in the book to download Apache, PHP and MySQL and install them separately.
3. Follow the few examples in the book and build simple web pages.
4. Take a website you like. Choose a simple page in that site. It can be a complaint page or a contact us page. Even use my website http://www.alphazonsystems.com. When you view it, the images will be downloaded to your computer. Take them and use HTML and CSS to build the exact same page as it looks on your browser. Try this in IE and Firefox.
5. I think there is a Wrox press book called HTML, Javascript and CSS. Buy it and use it to learn CSS and Javascript.

After these steps, try to do a couple of simple projects - one is the famous Address Book. Others should be more complicated, such as a bookstore.
My point is this - if you have computer access, then get a couple of books and SELF-LEARN. There are numerous resources in the internet to help you learn programming. If you face a problem such as "How do I restart Apache?" just search in Google and you will find hundreds of pages.
Remember when you learnt how the television works in school? After that whenever you looked at a television you can understand how it works. Understanding websites is like that. Once you build a couple yourself, you can understand how any webaite works. Take a look at Google. Try to figure out how it works. How does Yahoo mail or gmail work? It is easy to figure this out from the bookstore example, believe me.
If you walked into an interview with the above skills under your belt and listed in your resume, it is likely you will get a job.

3 comments:

Anonymous said...

Great post. Just forwarded it to my cousin, who is a fresher and looking for a job.
On self learning, I just want to add one more thing. He/she need not concentrate exclusively on Web technologies. It can be Swing/.NET based applications as well. They can try developing small applications and utilities.
On training institutes, yes, most of the trainers are failed software engineers or people who couldn't make it to developer position. They will be of little help.
This post will be very useful for freshers. Great work!
Pradeep

Maheswari said...

Nice article for all those aspiring young stars who want to have a good career start...

Unknown said...

jsr solution the software developing company is going to organize an entrance test for free software training. the

test is held on 14 November 2009 at quest institute of Chandigarh mohali (landra) . this test is absolutely free. and

the students who will pass out this examination will get free software training. for the registrations please visit

following link:- .net training