Seasoning the Raw through Extreme Programming

5 06 2007

One of the biggest issues facing IT companies in India today is hiring good staff. I think it’s become abundantly clear to my regular readers that this has become something of an obsession in my work. So, to break the monotony of dealing with idiots who claimed they were experienced, I started an experiment a month back with a couple of raw recruits straight out of college. Now these boys were sharp guys who had a good attitude to learn, and plus some basic knowledge, albeit quite limited and convoluted.

I’ve concluded that the primary drawback of hiring people “fresh” out of college is that they don’t know anything practical. The sad part is that their heads are so full of theory that by the time they get out into the real world, they’re completely confused and absolutely incapable of practical programming. I’ve mentioned this before in my earlier posts on the state of freshers in India.

In this case, I initially gave each of my two freshers some very simple tasks, different tasks mind you, that would require them to learn the basics of .NET programming. But after 10 days, they had made very little progress and I was left tearing my hair out and sitting with them for 3 or 4 hours just trying to explain how to use classes, how file reader operations work, etc. I mean this was baby stuff they’re supposed to have learned in college. And people wonder why I’m greying prematurely.

The trouble was that I really couldn’t devote this much time to these boys on consistent basis, and the company wasn’t big enough to justify a formal training program like what the big boys at Infosys and all do. At the same time, I was sure that just throwing them in front of a computer with some books and saying, “Code!” wouldn’t work fast enough. So, I hit upon an idea. What if I instead of using them as two separate programmers, I made them work as a single unit?

I got this idea from an article I’d read a few years back on how HP was using Extreme Programming to improve its coding standards. You can read up on Extreme Programming here @ Wiki. One of the concepts that I recalled from this particular article was that instead of have two programmers work separately on different tasks, HP assigned two programmers to a single workstation to work on a single task together. The idea was that the number of bugs in the code went down because there was a second person to verify the code as it was written. So while it didn’t actually speed up the development phase, it did reduce the time taken for the testing phase, an added bonus being that it reflected a higher standard of programming quality.

So getting back to my problem, I realized that the issue I was facing was that on their own these freshers didn’t have enough know-how to accomplish the task, but each of these guys had some knowledge that the other didn’t have. So, I made them work as a team, or one logical programmer to use geek speak, to accomplish a single task together at a single workstation.

I’m happy to say that this experiment was succesful. They delivered their new task inside of 3 days [the new task being one of equal complexity to previously assigned tasks]. I then had them work under a project leader to develop an in-house project for me. Not that I desperately needed the application, but it was a challenging project that required my freshers to cover all the basic concepts you need for a real-world .NET web application. 2 weeks in and they’re almost done.

What I learned from this exercise was that having a second person working on the same problem helped the freshers to think a problem through before implementing a solution, rather than operating on a trial-and-error basis. Additionally, the second “brain” helped to fill in gaps of knowledge that were lacking in the other person. So, together they would discuss a strategy, pointing out flaws in each others theory, and then implement that strategy together, testing and debugging it together. At the end of the day, they accomplished far more simply because they had more knowledge at their disposal, plus the ability to think things through before coding.

I’m not saying they’re perfect though. There’s still a lot of things they need to learn before they can become independent programmers. One major issue I’ve encountered, and one that I haven’t fixed yet, is getting them to conceptualize concepts and problems. For some reason, whenever I asked them something a little abstract like how does a web application work according to the client-server model, or how is a file uploaded handled, or how do URLs work, I encountered a major mental block. I’m only after the theoretical concepts, but for some reason since it’s applied theory, rather than definitions, they have trouble wrapping their brains around these ideas.

In the end, I realize that how to use these boys is not to talk to them about solving problems, but to clearly define the tasks to be delivered and them instruct them to do it. It requires a hands-on presence in the form of a team lead or project manager to clearly define for the boys what needs to be done, but once they’re clear on whats expected of them, they are able to deliver as per schedule. Based on the current results, I’ve decided to keep them together for another 3 or 4 months for them to gain more exposure before splitting them up.

The primary benefits of this approach are that a company does not need to invest in a formalized training program to train “freshers”, and that at the same time these freshers get exposed to real world programming from day one. They understand how live projects are dealt with, what methodologies are in place, what problems they are likely to face, etc. Most importantly, they learn the skills that are needed for them to become productive programmers quickly, especially those needed for the company’s ongoing projects. The company also benefits as it’s no longer dependent on hiring “experienced candidates” [refer to some of my other posts for my take on these clowns], and is able to groom and shape a team for the future.

So, in the near future, I can transition these two freshers into productive programmers who are capable of completing tasks alloted to them. True, they might not be ready to tackle problem solving and such, but that only comes with experience. But, rather than have non-productive people for 4-6 months, I have productive programmers within 3 months. And at a fraction of the cost of the “experienced programmers”.

Advertisements




Insights into Online Video – The Desi Factor

13 05 2007

I’ve been ranting about different things for the past two months, but haven’t really gone into what I do. Well, I have but not entirely. Some of you might be wondering, “Just what does he do?” Others might be wondering, “Uh huh! Ok! So whats that got do with this post?” Other’s might not give a damn. Still I”m gonna give you a little insight into my “normal” world. I’m doing this cause some people have come to the conclusion that I’m a HR consultant. Please, I have my standards. I won’t sink that low on a full-time basis. To those HR folks reading this, it’s nothing personal. It’s just that I’d rather do something more “interesting”. I am a technical consultant primarily, and in starting up new operations HR is a big part of the equation, not my sole interest.

Anyway, back to my story. one of the projects that I’m working on currently has to do with online video. I can hear those groans, “Not another YouTube clone!” Well, it’s a yes and no kind of answer. Yes, we’re into online video like YouTube, but no we’re not the same as YouTube. With over 300+ YouTube clones already on the market, and over 100 million videos circulating out on the ‘Net [though many may be duplicated on multiple sites], you can only survive if you focus on a new direction.

I’ve come to the conclusion that YouTube was a freak of nature that can only happen once. If you look at the market metrics, the Google-YouTube monopoly dominates the online video sharing market by over 50%. The initial MySpace binge and the consequent Google buyout have made YouTube synonymous with online video in the minds of the general public. So the other 300+ sites out there are scrambling to pick up whats left, which makes it a very crowded space to fight for breadcrumbs. Not to mention the associated headaches of how to attract users and how to make money at the end of it all.

Taken in the Indian context though, the market still has opportunity. I don’t think there’s another society in the world that’s as obsessed with TV as the Indian diaspora. The key driver of online video is the availability of broadband internet access (512k+), which is just starting to become mainstream in India. Okay, there are a few Indian-oriented video sites out there that already, but their content is what I’d call “base”. This isn’t me trying to put down my competitors. But when the majority of the videos on those sites are “Sachin’s Greatest Knocks”, or “Guru Movie Trailer” or “Hot Desi Chick Stripping” [I kid you not about the last one, there’s literally TONS of adult content on these sites, all “contributed” by the users] you end up getting a little stifled for choice.

If you get on YouTube, you have access to a variety of content that covers quite a few topics, everything from comedies to documentaries. You don’t get that variety on the Indian sites today. If you’re obsessive about Indian movies (mainly Hindi), then you might be sated by the stuff you find currently on Indian video sharing sites. But if you want variety all in one place, then sorry but there isn’t much choice for you.

Getting back to the Indian obsession with TV. India is a country with over 40 regional languages [I’m sure its more, but I didn’t want to appear too stupid and say 400 or 4000. 40+ is safer but still gets my point across]. Practically every state has its own unique language. And especially in South India, Hindi is not as common as in North India. Sitting in Madras, my TV provides me with access to over 100+ channels [without a special cable box], of which a large percentage is in regional languages showing things like news, soaps [serials in Desi Lingo], and of course movies. All this is pretty much the same as in the US, but the primary difference between the US market and the Indian market is the variety of languages in which content is being produced. This variety of content is why an average Indian household’s TV is on for at least 6 hours day, and that governments are giving away free TVs to win elections. The sheer variety of content ensures that there is something for almost everyone to watch, so people are obsessed with watching TV. This variety of content is king.

So, the key to online video in India is to project it as Web TV. Why TV??? As I mentioned before, TV in India implies variety of content. And that’s exactly what you need to capture users. I don’t think the Indian online video viewing public is at that stage yet where they’ll contribute their own videos ‘en masse’, so its primarily a passive video watching environment, i.e. TV that’s available online. So, you need to get people to treat it like TV. To do that, you need the right kind of content. You can’t manage this if you’re only working with 4 kinds of content, although I’m sure the porno-maniacs out there will beg to differ and go into the variety of content available in certain genres.

And if you can create a sense of ownership which says to people, “This is your own TV channel! Do what you want with it! Add your own videos! Organize what you want, how you want!”, you can capture the hearts and minds of users. And the advertisers will follow. That’s how you make money in this game.





Error: “Professional Ethics” not found

12 04 2007

I’ve been debating whether I should rant about this particular topic for a while now. While its not an earth-shattering pronouncement that people in IT are so damn self-centered and unprofessional, I just think its so pathetic that people are allowed to get away with this kind of behaviour because they’re in IT. Let me fill you in on the story that inspired this thought.

A few weeks back we’d interviewed and offered a guy a position in one of my client’s projects. Now, for a proper character assassination, this guy is in my opinion the dictionary definition of “obnoxious”. I mean he talked like he was some major IIT or Harvard MBA hostshot about career growth, client interactions, business soft-skills, becoming an entrepreneur, yadda yadda yadda. Thats all fine, but we’re talking about some kid from the boonies in Tamil Nadu, India, who I was interviewing as a developer, not as a marketing poster boy. Still, he seemed to have some development ability, and being as desperate as we were for a reasonably skilled developer [meaning he knew that a keyboard wasn’t a musical instrument, and that a mouse was not a footpedal], we gambled and took him on, figuring that if the bugger didn’t perform we can always chuck him out.

So, he’s supposed to join me the beginning of this month. I call him a couple of days before he’s due to join us and confirm that he’s joining us. He says “Yes I am! My resignation notice was until today. I’m just clearing some paperwork up. I will join you Monday” “Ok!” I thought and left it at that. Come Monday, I’m waiting until 1pm and our hero is a no-show. So, I grab the phone and dial his mobile, and ask him, “Boss! You’re supposed to be joining me today! Where are you?” His response is, “Ummmmm… sir… I regret to inform you that I’m not joining your organization.” “Why?” “Sir, my previous company gave me a better offer, so I took that.” I was taken aback since I’d only talked to the guy 2 days before this and there had been no hint of a counter-offer.

“When did they offer you this?”
“Friday, sir!”
“When did your resignation notice period end?”
“Wednesday, sir.”
“When did my contract with you come into effect?”
“Wednesday, sir.”
“So, as of Wednesday, you’re a contracted employee of mine. And you told me on Thursday that you’re joining me. Why didn’t you tell me?”

And I swear, this bastard’s response was, “Sir, they gave me this offer sir. What could I do sir?” I replied, “You could have said no? You could have said that you’ve signed a contract with me? You could have called me and told me about this at least? We might have revised our offer? Why didn’t you do this?” Here he changes his tack a bit, since he’s been pushed into a corner, “Sir, they refused to let me go sir. They wouldn’t give me the relieving order. How can I join without a relieving order?” I said, “The relieving order is just to say thank you for working with us. What matters is that you tendered your resignation. Once the notice period mentioned in that came into effect, you were released with or without the relieving order. And your contract with us comes into effect. We would have accepted an affidavit signed by you, along with a copy of your resignation letter, stating that your previous employer refused to hand over the relieving order after you tendered your resignation. The fact is you had to have given us notice before joining them. No employer can hold you back against your will if you tender a resignation.”

I know its not an entirely convincing argument, but I was MAD, fuming actually. This bugger had given me the run around for over 3 weeks, and talked out of his ass about dealing with clients, on-site relationship management, being a business liaison, and after all that he didn’t even have the basic courtesy to inform me that he’s taking another job. Don’t get me wrong. I would not have stood in the way of him joining anyone else. I can’t do that nor will I do it. But, I do expect people to have basic decency to be forthright and inform me of such things, especially after they have a written commitment to work for me.

Getting back to the saga, our boy tries another tack, his third for those counting, “Sir! You only gave me an offer sir, not a firm order.” I said, “Look at your damn letter boss. Its an appointment order, not an offer letter. Its a contractually binding document. You are bound by that document.” “No sir! that’s not true.” “LOOK AT THE BLOODY DOCUMENT! STOP ARGUING WITH ME! YOU HAD AN ORDER NOT AN OFFER!” “But…, but… How can I join without a relieving order? What if I go to the US and the client asks me about my previous history and asks “Where’s your previous documentation?“” “Boss! Thats my problem not yours. I have to deal with the clients, not you. I have to make sure your papers are ok with immigration and the clients, not you. Your problem is to deliver on what work I assign you. Don’t give me this bullshit! That’s the weakest bloody excuse you could have come up with!”

My patience wearing thin, I gave him a way out of this mess. I told him he finds me a decent replacement within 30 days, and I won’t create any problems. Otherwise, I’ll take it up with his company. He blurts out, “OH GOD SIR! PLEASE DON’T DO THAT! PLEASE THINK OF MY CAREER!” At this point, my temper, which is already at breaking point, erupts, “LISTEN! YOU GOT YOURSELF INTO THIS MESS! YOU COULD HAVE INFORMED ME OF THIS OFFER! YOU COULD HAVE DECLINED THE OFFER SAYING THAT YOU ALREADY HAVE A PRIOR COMMITMENT! OR YOU COULD HAVE SAID YOU NEED SOME TIME TO DISCUSS THIS WITH ME! DID YOU DO ANY OF THIS????? AND YOU WANT ME TO THINK ABOUT YOUR BLOODY CAREER! YOU OWE ME YOU BASTARD! I HAVE GIVEN YOU A DECENT WAY OUT OF THIS! I COULD CREATE A MAJOR PROBLEM FOR YOU AS IT IS! I’M TRYING TO COME UP WITH A CONSTRUCTIVE SOLUTION TO THIS MESS! BECAUSE OF YOU, I HAVE SOME MAJOR PROBLEMS WITH MY PROJECTS! I MAY LOSE MONEY ON THE DEAL SO DON’T TRY TO APPEAL TO MY PITY! YOU FIND ME A DECENT PERSON I CAN INTERVIEW AS A REPLACEMENT THEN I WILL CONSIDER THIS MATTER SETTLED! DON’T SEND ME SOME IDIOT TRASH!

He tries to protest, “How am I supposed to judge a candidate sir? How can I guarantee a person will be good?” “You claim to have 3 yrs of experience? You claim to be a team leader? You talked big about being a business liaison and all? An entrepreneur? You say all that and tell me you can’t evaluate a person’s technical ability???? What utter bullshit! If that’s the case, you’re an absolute liar and I’m glad you’re not working for me! I don’t care what you do but you’re getting me that replacement? Ok!” “Ok, Sir! I’ll get you a candidate! But if he is not suitable, I don’t know!” “As long as he looks to be a good candidate, I will not hold you responsible for his failure to perform. But, don’t send me some stupid idiot off the street!” And I slam the phone down.

Its now 10 days since the conversation, and tomorrow I plan to find out just how this guy is doing. But, frankly I ask you, was I wrong in reacting like I did? Yes, this happens in this industry in India, but must I accept it lying down? Why should I? Why after putting in so much of time and effort in finding a guy should I take this lying down?

People should understand the responsibilities they assume when they sign a contract, that there are professional courtesies and principles to be observed. Like I said, I can’t stand in anyone’s way if they wish to leave, nor will I. But there is a way of bowing out gracefully. Usually, most employers will not stand in your way, so long as you don’t make it difficult and don’t try to be evasive about it. You ensure that your employers are aware of your intentions, and you transition your workload properly to your replacement. At times, you may be asked to stay on a bit longer to help the company complete some immediate tasks for which you are essential before you leave, but this is always up for negotiation.

But being hostile and burning bridges serves no purpose. It just smacks of immaturity, and at the end of the day has no real substance. Life goes on for all. The real loser is the employee because you never know when in life you might need to go back and rely on an old contact.

Sadly, kids [I’m classifying by both physical and mental ages] today are so focused on money, that they have no concept of professionalism, ethics, and courtesy. Their greed and selfishness is so rabid, that they do not think to consider the fact that sometime down the line they may need the people they’ve trod on. They may talk about all these concepts, but ask them to define them. THEY CANT!!! Its a concept completely alien to them. Which will only hurt them in the long run.

My objective in writing this is not just to vent my anger. It’s to highlight to the people who read this, especially youngsters or those starting out in their careers, that you should strive to not alienate people. Your contacts are your main assets in your professional career. Nurture them! Yes, be selfish! Try and get the best deal for yourself! If a better opportunity comes up, grab it with both hands! But ensure that you conduct yourself in such a way that you don’t burn bridges.





Fittest of the Survival

20 03 2007

The title for this rant is from a resume [pronounced “reh-sue-may”, not “reh-sume”] I got of a guy who claimed to have, and I quote, “excellent communication skills”. What had me banging my head against my desk is that this particular gem was in the section “Personal Strengths”, which funnily enough was located on the last page of this particular person’s resume. Now, normally, you’d find this sort of stuff right on Page 1 in big bold letters. Anyways, by the time I’d come to this line I’d already been through the contortionist exercise of rotating his resume 540 degrees to try and figure just what this guy was trying to say. And I gave up once I saw this.

“Fittest of the Survival”??? Did this guy even have a clue as to what the hell he was talking about? I figured out that he was trying to say “Survival of the Fittest” ala Darwin, but what the heck does that even mean? Having thought about it now [a lot], I think I can understand what this chap was trying to convey but the concept is so abstract that its difficult to explain it to another person concisely.

As I see it, my goal in reading any resume is to identify the person’s technical competency and to get an idea of how the person communicates ideas and information in writing. I am not interested in, nor am I supposed to be, considering the metaphysical concepts that arise as I read a resume. I want to be done in 5 minutes. What I find depressing is that this sort of idiocy is just the tip of the iceberg when you’re dealing with the IT field in India today.

In the past 2 months, I must have gone over at least 400 resumes and interviewed around a 100 people in person. And I’ve found maybe 1 or 2 candidates who I’d call as good finds. I’ve seen people who claim to have 2,3, even 4 years of experience, who can’t answer questions on fundamental concepts in the very technologies they are supposed to be experts in. Out of morbid curiosity, I had a couple of freshers take the same test I give to these “experienced” candidates. And guess what? Yeah, you guessed it. They did better than the experienced guys. Which means I am better of taking in raw recruits than experienced people, and training them as I need.

While I’m laughing my way to the bank, this situation also highlights a major problem with the quality of the people who work in IT today. Maybe its because I’m in Chennai and its not really considered a glamorous place to work, but how can businesses scale their activities quickly if the “talent pool” they have to dip into is so bad that the people are not really employable? How can they run efficiently if they have to invest in training “experienced” people all the time? In a word, they don’t have a choice. Whether they like it or not, and usually they do not, they have to run a training program constantly to prepare candidates for live projects.

I must say that I am now starting to appreciate why companies like Infosys, TCS, Wipro, etc. invest so much in training people and having so many people on staff, even if they don’t fully utilize them. I always thought that it was a cheap trick to increase billing to unsuspecting foreign clients. But I realize its more than just that [Although the billing aspect is a major plus of the situation]. You just can’t take for granted the quality of candidates who walk through your doors, so you have to fix that by giving them the training in skills you require them to have. And, with the current skill shortage, its better to have some people on standby to deploy when you need them, rather than trying to hunt around for people once you realize, “Oh! I have a need.” That’s ok for the big guys. They can absorb that cost. How can the little guys manage?

I don’t think they have a choice. They have to constantly run a candidate review like the big guns, which is a drain on resources. Also, they have to go to great lengths to hold onto their best people, lest they get headhunted away to a bigger firm, a bigger name. Every day, you are fighting for survival, and the only way you can really survive is to grow and grow, until you are big enough with a reputation to match to attract the better candidates. It really is “Survival of the Fittest”.

Note: I’ll stop here for now. I admit that this rant meanders across a few topics and could do with a bit more explanation, but I’ll shortly start delving deeper into some of the issues I’ve highlighted here. Stay tuned…





How To Hire The Right Person – Make It A Game

28 02 2007

I admit this isn’t about mismanagement, but then this entire topic is about the do’s and dont’s of running a business… On to the epiphany…

I’ve just been given the job of getting my client’s entire HR process under control. That’s one of the drawbacks of being a “jack-of-all-trades” consultant. People know that you can do more than just one thing. So, I’ve been going over the whole thing from start to finish, from CV reviewing to interview scheduling, evaluating candidates on the phone, the actual interview and the finalization process.

And I just cant help but think, “There has to be a better way to find the right candidate…” which brings me to this article I found on another wordpress blog, about an interesting interview process. The candidates are grouped in small teams and asked to solve a problem within a set time period. What I like about this is that it not only tests the candidates knowledge but their ability to communicate and work as part of team. Its the best way to weed through candidates to identify the right attitudes and skillsets. Gotta figure out a way to incorporate this into my client’s workflow.

The full article is >> here.