Monday, March 16, 2009

Building your resume in a bad economy

The previous post discussed building your resume. While an internship or a startup might work well when the economy is good, they aren't always good options when the economy is bad. So what can you do when nobody has internships for you? Or what can you do if the previous options do not appeal to you? First, it is important to note that a bad economy is not all bad for students. Students have few commitments and responsibilities: they are usually unmarried, and can continue living with their parents for a while longer. So as a student, the goal should be to continue working on your interests and wait for things to get better.

The best candidate in this section is writing Free Software: software that is licensed under a very generous license, like the GPL, the LGPL, and others. This is fast becoming one of the strongest signals for the capability of a technical candidate. Working on a mature product like Apache, and being able to make good progress says volumes about a candidate. These projects accurately reflect real-life software projects, and expose students to many problems that are difficult to simulate in classrooms. Being able to contribute to an existing project is much tougher than starting from scratch, so these make wonderful playgrounds. Even if you fix three big bugs in the summer (a bug a month), you are off to a flying start in terms of a resume. Free Software projects have a huge impact. Everyone from small startups to the biggest of online companies use a variety of Free Software. The projects are widely distributed, and contributors include the best and the brightest. Also, the wide variety of software ensures that there is bound to be a project that fits your interest and level of programming. All the resources are freely available. This is an amazing networking opportunity: working on the Linux kernel would put you in touch with some of the brightest systems engineers in the world! Finally, your contribution is visible to the entire world: all the source code is publicly available. The payoff from such work can range from little or nothing (you work and nobody pays you) to very competitive (you take part in Google's Summer of Code or other bounties). Free Software work on a resume shines through, so rest assured that your work is recognized even if it isn't financed. I took part in Google's very first Summer of Code while I was a student. It was an amazing program and has improved in successive iterations. I highly recommend it. The time required depends on your level of commitment, ranging from a month to three months.

If nothing else, you can build a community in a very direct way. Putting up a blog, putting up a forum, or a way for like-minded individuals to get together might just work. This pays nothing, will probably not amount to much, but requires little or no time. Many people make long-lasting connections through their local Linux User Groups, and learn a great deal as well. This is noteworthy only if your contributions are. In any case, you get in touch with people of similar interests that might suggest more fruitful ventures. Linux User Groups tend to have a high concentration of sharp people, and the number of fundies and fanatics has been limited in my experience. Your mileage may vary, but it makes a good start. As you can tell, the payoff varies widely. The networking opportunities have a very wide range, depending on the area. However, you do learn new things, and get to explore some field of your interest. This might not be the real world, but it comes pretty close.

I would caution students against unpaid internships. If pay is a measure of your worth, an unpaid summer internship speaks poorly about your skill or the employer's view of you. A far better option would be to spend time exploring your own interests and working on something that is directly interesting to you. Even a summer spent learning the guitar is more fruitful than being someone's slave. A friend of mine spent considerable time teaching in a third-world country, while another spent nearly a year bicycling through Asia. All these people gained vast experience. This experience did translate into some marketable skill, and it also reflects in their remarkable world-view. Another friend of mine spent his summer building huts in an earthquake-hit area. In addition to losing naivete, he lost quite some weight. That summer turned him from a chubby character to a fit, handsome boy. Neha volunteered at the SPCA for a month one summer, and enjoyed it thoroughly. I would recommend volunteer work over unpaid labor in a commercial organization. Here's the reason: unpaid work hints that you either do not have any marketable skills, or that the employer isn't capable of making use of them. Both speak poorly of the transaction. Even as a student, you do have valuable skills: new ideas, exposure to new technology, enthusiasm and time, in addition to your professional skills. So it means that the employer doesn't really know what to do with you, and is hoping that your slave labor will be compensated by their name on your resume. It isn't worth it. Good companies pay their interns well, and poor employers do not shine on resumes, making an unpaid internship one of the worst deals. If you do decide to volunteer, the time requirements for volunteering are completely up to you, the networking opportunities are limited. Why do it? You get a wonderful understanding of the world, and a remarkable feeling of achievement that is hard to match.

As always, your goal should be to do what is interesting and fun to you. Building on your interests is the best way to build your resume.

Saturday, March 14, 2009

How students can build their resume

Life is tough for students. It often seems like the lessons are worthless, and the real world is too disconnected with the toy examples you get to play with in school. Bad programming classes reinforce this idea of learning through toy examples. I've seen more than a few resumes where the software experience is limited to trivial projects done in school alone. Both students and employers realize that this is not enough. Ideally, students are expected to get some industry experience before they enter the job market. This post talks about some of these avenues. This will be a long post, so it is split into parts.

Internships are great at building a resume. Most good internships consist of solving a small subproblem that is directly useful. The employer gets to test the student's skill in a real-life problem. The student gets to see a real problem and apply his understanding to it. Needless to say, rote learning is not rewarded. A solid grasp of concepts and an inquisitive mind are the best thing you can bring. Students might be asked to implement something simple and time-consuming that both tests their skill and frees the remaining developers. Internships are among the best sort of resume building: the student earns money and learns valuable skills. Both sides build contacts, and evaluate each other. The average internship lasts 3 months and pays close to your full-time salary.

Startups seem to be a popular resume builder, especially in the West. Depending on how much time is spent in the startup, they can be great opportunities. In a startup, you get together with like-minded people to form a company to solve some problem. Everything from the idea to the implementation must be done in-house. This is perfect for small teams of highly capable individuals. Web-based startups were quite popular a few years ago. Making a website is easy especially if it is tuned to a specific need. Unlike internships, the average startup takes a lot of time and effort. It is more risky in terms of payoff as well. Your resume does not take a big hit if your company folds: startups are inherently risky, and everyone understands this. Depending on the problem you tackle and how far you get into it, it can have a wide range of impact on your resume. At worst, it still shows initiative and drive. You learn a lot of top-level issues that are generally not made available to junior employees. Finally, you get to solve a problem from beginning to end. That said, startups take a lot of effort and time. It can easily impact your academic career if you aren't careful. Finally, your networking options are limited compared to students doing internships.

A simple alternative to a full-fledged startup might be a simple website demonstrating an idea. These work best if the idea needs the long tail of audience for the best impact. Say you've developed a new way for people to pick the best commute times. You buy a domain ($8), some space ($30?), and put up a website showing off your idea. People use it if they find it useful. You get the satisfaction of having made a real product, even one that is simple and small. You could try monetizing it with Google Ads or similar services. If you find a lot of people using your website, you could turn it into a startup. If there's no traffic, at least you have a working product and a better idea of the work behind a real service. The time you put in depends largely, but shouldn't be more than three months. The payoff is very limited: you're unlikely to make much money. Networking opportunities vary, but the website lives on as a proof of what you can accomplish all by yourself. The biggest payoff is actually making a useful product and learning the entire process, even at a tiny level.

The next post will consist of options like software development that you can do yourself, and why unpaid internships are a bad idea.

Monday, March 09, 2009

Average Quality

Is it worthwhile to have good janitors and administrative staff in universities? How about staff in dining halls (called "mess-boys")? My dad certainly thought so. He often told us how the dining hall staff in his university was top notch. As children, we thought it strange that someone would remember the quality of such things. Who cared about mess-boys when you had wonderful teachers?

At IIT Bombay, I faced some of the worst staff. While there were a few gems, like the kind lady who arranged transcripts, most of the clerical staff were rude and unhelpful. The sought to assert their power over students rather than help them in any meaningful way. Many of them saw students as an annoyance, and as temporary visitors in their bastion. The worst were the security guards, who thought that their position somehow gave them unlimited power. While the best interaction was remarkable, the average interaction was abysmal.

Such low-life staff really bring down the average quality of the place. While your best interactions might be pretty good, you also have to live through many terrible interactions. Interactions that you cannot avoid and whose frequency you cannot control.

When I began working, I was amazed at the quality of the best engineers. They seemed like super-humans: smart, fit, affable, polite, productive. I was discussing this with a person from my team. He mentioned that he had worked in plenty of places where the top 5% were very good indeed, but that this was no indicator of quality. According to him, what really set this place apart was the quality of the average engineer, which was much higher than his previous companies. You are lucky if you only get to interact with the best. Usually, you interact with all kinds, and then the average quality is a better indicator of how happy one would be in a company.

Recently I had a chance to witness a dramatic lowering of average quality. A friend of mine was grumbling about how she wasn't happy with the system administrators at her job. While her peers were very nice and smart, she dreaded interacting with two system administrators. In the past, she had no interaction with them but due to some hardware change, she was forced to deal with their antics. They wouldn't let her install emacs on a machine, for some utterly contrived reason. They wouldn't even install Python, even when it was essential for her to do her job! These two clowns are causing her so much misery, that it overshadows any sense of satisfaction or accomplishment due to her everyday work. This isn't in some backwater either, this is happening in the main office of a prominent Silicon Valley web company. If this company had been a little more selective in their system administrator hiring, she would have been a lot more productive. I've talked to some more people from this person's team, and her observations are shared by others. The consensus is that firing these two people would have a huge positive effect on the productivity of everyone in her team.

So maybe my dad really had something when he spoke of the quality of the mess-boys. A collection of many good mess-boys make a great campus!

Saturday, March 07, 2009

The Indian Diet

In a lot of countries people divide themselves into two populations according to diet; the vegetarians and the non-vegetarians. There might be a couple of additional marginal groups but the variety in diet types is still fairly limited.

Among Indians, we find a plethora of dietary groups. Here's an abridged list:

  • Pure vegetarians (plants only)
  • Regular vegetarians (plants primarily, but eggs are fine, especially when eggs are hard to detect, as in cakes)
  • Eggetarians (plants and eggs)
  • Jain vegetarians (plants, but not all plants)
  • No-beef group (the cow is holy)
  • No-pork group (pigs are unclean)
  • No-beef-and-no-pork group (the cow is holy and the pigs are unclean)
  • Chicketarians (chicken is fine, but no other kind of meat)
  • No-meat-on-certain-days-of-the-week group (because life is not confusing enough?)

For many, the adherence to their form of diet is not just a preference, but is followed with a passionate vigor. When offered several things on a plate, some of which are a strict no-no, they do not simply ignore the no-no portion and eat the rest. They will often send back the entire plate and go hungry. This is pretty extreme! It is fine to have rules, and to stand up to them, but only if the rules make sense. Vehemently defending silly rules is not the mark of maturity or intelligence.

This finicky diet preference is not usually well thought through and logically arrived at. In most cases is something that people inherit from their family. They know that the diet preference is somehow loosely linked to family or religion, but they can't exactly pinpoint how. It is a preference that is inherited through religion, society, or family. Nobody thinks it through, nobody digs deeper.

This lack of a questioning attitude leads to a inconsistency in beliefs and rational thought.

Let's take the chicketarians, for example. If they're vegetarian because they don't want to eat a thinking and feeling animal, then how is it they're willing to make an exception for chickens? Even if they're in it for religious reasons, where exactly does it say in a religious text that it is okay to eat chicken, but no other animal?

If the dietary preference was rational, we should be been able to feed pork to a no-pork person by breeding the pig in extremely clean surroundings and feeding it carefully. But I doubt this actually possible. In the movie Pulp Fiction, a strongly-worded dialogue tries to get into why Jules doesn't eat pig: What if a pig has personality (search for pig on the page)? If pigs are bad because they eat dirt, what about mushrooms? The tasty button mushroom grows on manure. Whatever is offensive about pigs is doubly true of mushrooms.

It might be beneficial to re-examine why we don't eat certain foods. Preferences without rational reasons are not worth keeping.

Thursday, March 05, 2009

The Golden Rule

Recently there was a terrorist attack in Pakistan. The details of the matter are not clear yet, but they are somewhat similar to the terrorist attack in Bombay a few months ago. During the Bombay attack, I had heard a lot of talk for a pre-emptive strike against the country harboring the terrorists. At that time the blame generally fell on Pakistan, as Indians are often quick to blame Pakistan for a lot of violence. I am never in favor of any pre-emptive strikes. I fear what such an action would allow, if there was a terrorist attack in Pakistan. A terrorist attack, such as the one last week in Pakistan, would be enough justification for hostility against India. That is, if your standards were consistent.

Let's put it another way: what if China had a terrorist attack in Tibet, and some Indians were suspected? Is China justified in attacking India?

The proponents of first strike rarely consider the reverse situation, and that is where the double standards emerge from. I had a wonderful discussion with a friend of mine, who supported Israel's first strikes into targets in Gaza and Syria. The official reason is to attack military targets. After he had made his point, I asked him if Syria should also be allowed to carry out first strikes against military installations in Israel, his home? Of course, this is where he disagreed. It is fine for us to attack someone on the flimsiest of reasons. Our enemies, on the other hand, should provide a lot of evidence before they strike us. What was amazing was that this person, a logical and intelligent man otherwise, could not spot the fallacy.

I see a similar situation with immigration. I was discussing America's opposition to immigration with an Indian parent. His child is a successful engineer in a successful tech company. So his point was that educated Indians make a huge sacrifice in moving to America. They work hard, pay taxes, and are model citizens. So he couldn't understand the discussion over H1B visas, which limit the number of foreign citizens that can work in the US. This person was a Maharashtrian, so I asked him, "Well, since this is how you feel about immigration, you certainly must be opposed to Shiv Sena?" The Shiv Sena is a political party in Maharashtra, which is build on a platform of keeping non-Maharashtrians (for instance, people from Bihar) out of Maharashtra. This is even more aggressive than being opposed to immigration. Imagine California limiting the number of people from Montana that could come to work in California. This is what the Shiv Sena proposes. To my surprise, he supported the Shiv Sena, and was offended that any parallel could be drawn between the two situations! The Biharis are often trouble-makers, he said. The Shiv Sena was justified according to him. The same person was a Bihari in someone else's Maharashtra, and offended.

It is such a simple concept, "Treat others like you'd like to be treated", and yet we manage to get it wrong so often.