Today morning, I read this blog post titled Why Indian startups need to get off their asses and learn to program (via HN). Even though the post is specific to what Infinitely Beta experienced, it quite correctly describes how most Indian startups don't really bank upon building quality products. They think core work can be outsourced and they don't have a team of solid technologists. If you haven't already read that post, I suggest you read that before you read what I have to say.
So what am I writing about? About why (IMO) this is happening. Why Indian tech startups are failing to understand what it takes to deliver a quality product or service. Something fundamentally wrong with the CS industry here.
Point 1: Underestimating the importance of quality. There's barely any tech products that have come/are coming out of India. Why? A major reason for that is building a product means more risk than delivering a service. Risk is something that we here don't take so easily. We're easy going people :-) It's in our culture, you could say. Is it a bad thing? No, of course not. But it's something that you need to break out of, if you want to deliver a product. Services are easier to do, so most people pick them.
However, even in service companies, the usual quality of work is rather crappy. Not everyone can build products and the market needs services too. Service companies don't mean "cheap labour" and they shouldn't! There's nothing stopping anyone from building a quality service company, you can even charge more and your clients won't mind :-)
Point 2: Lack of passion/direction. I just finished my bachelors degree in CS. During four years of college, I've visited, traveled, met up and talked to tons of CS students. The situation is disappointing. Most people who pick CS do it because of reasons like "it will get me a good job" or "that's what every high-ranker does". I don't think more than 15-20% CS students actually want to study it. But they do. And they suck at it. They don't like it. They don't love their jobs. They just want to live a life. So they do the bare minimum that their job asks. They don't have that drive to excel at their work.
However, even people who do like CS, are hit by other issues. Outside of IIT/NIT, the CS syllabus and teaching is horribly outdated and broken. It is taught like we were taught history in school. Rote-based learning. Ugh. They don't see the joy of programming. They don't see the magic of design.
Then there are the "inspirational" companies. Ask any regular CS graduate "what is your dream company?" and I can assure you, you'll mostly hear Infosys/TCS/Accenture/HCL foo. That's your dream company? Companies that don't even judge you technically during their hiring process? You can't think of Google even in your dreams? That just saddens me. People need to start thinking broad, wide and out of the box.
Point 3: The "Design is gay" misconception. This one's a real shocker. I know a fair bit of people who work as "Graphic Designer" or "UX developer" but don't really like design nor do they have an eye for it. They do it because the job asks for it. If you know me, you'll know I'm rather "aggressive" when it comes to design. I can't tell how many people look at me with twisted, cringed looks when I talk about design. What's interesting is how people think good fonts or clean layouts are pointless BUT the same people will ogle at a beautiful car or exquisite jewelry. Wake up, morons. Design is appreciated everywhere. I'm going to do a plug for Infinitely Beta here, because their service paisa.com has a stunningly awesome UI. I was blown away when I first saw it and I don't know how many people I've shown that website to, as an example of good UX.
If this is to change, we need a fundamental shift in the way people think about computer science. No, it isn't easy to get a job in CS. Not the work is not trivial. People need to do things they love, not something daddy, Uncle X or Friend Y considers good.
PS: I recommend reading Computer Science FAIL on GeneralMaximus's blog, for his hilarious first-hand CS education experience.
Update 1: Edited certain words for clarity.
Update 2: Found and fixed some design glitches, thanks to so many comments.
GeneralMaximus : you know, i would like to have something like this playing when i meet some i like
GeneralMaximus : but i'll probably have some Slipknot or Static X on. i just know it :/
GeneralMaximus : "you know the song that was playing when we first met?"
GeneralMaximus : "yeah. wait and bleed."
GeneralMaximus : "lovely memories, no?"
GeneralMaximus : "i guess"
lut4rp : rofl
(Said on IRC, just after listening to the beautiful track "Dance With Me" by Nouvelle Vague.)
Last week, there was a meet-up of FOSS enthusiasts in and around NCR. It was a rare thing because it takes a lot of motivation for us lazy bums to actually get up and go somewhere. The issue I usually have during these meets is that I don't get to see anything productive being done. I just go to meet people. Talk is boring and I do that enough on IRC and mailing lists.
Since it had been some time since I had met the Delhi folks, I thought I'd attend the meet. These meets are always fun as some flame-war or the other crops up and everyone has a gala time. What's a good meet-up without showing passion and dedication towards your favorite projects anyway? :-) However, something very wrong happened during this meet. It wasn't intentional. But I have to clarify the situation.
There was a presentation by Gaurav Paliwal on Debian vs Ubuntu and why you should pick Debian over Ubuntu. I've been associated with Ubuntu for a very long time now. I started using Ubuntu when it was a nascent project (in 2006) and I was a passionate (severe and extremist would also do here) evangelist of the system. Ubuntu was doing something that no distribution had ever done before. It was bringing Linux to the masses. I was a part of those "masses" too. I supported them and I was proud to be a tiny part of the movement.
I continued using Ubuntu till late 2008 and then switched to OS X. Why? For one, I needed a new laptop and the MacBook Pro at that time was the best machine in the market. Sure, it was also 20% more expensive than the other brands but the difference in quality was shocking. Now, at that time I never thought I'd actually use OS X. In fact, people from the linux-india IRC channel will remember my continuous rants against OS X for a week or so :P (I bet I still have the logs lying somewhere). But over time, I found that I worked better on OS X than on Ubuntu. Every application that I used on Ubuntu was available on OS X anyway — Firefox, Emacs, a terminal emulator, the Apache/PHP/MySQL stack. MacPorts helped with projects that weren't already bundled with OS X. All in all, it meant a better work experience for me. A win-win situation.
Gaurav's talk, though correct on some places, gave quite odd and IMO, incorrect reasons to shift from Ubuntu to Debian. Reasons like "Debian calls itself GNU/Linux and not Linux" is not going to get any serious Ubuntu user to move. This is an OS change we're talking about. It's like moving homes, it takes a long time to get adjusted to the new environment. Unless there is a problem, people will not move. You wouldn't either.
Among all the Ubuntu-Debian bashing that was happening, I decided to explain my point of view of why I've been quite unhappy with the Ubuntu project over the past year. The crux of that point is — Ubuntu is trying to be OS X. In fact, it isn't trying anymore, they're simply copying over the experience. Now that may not be a bad thing in some cases, but here, it's an open project we're talking about. I agree OS X provides an excellent user experience in a lot of cases but copying it is pointless! Apple is not the pinnacle of interface design. We can do better. There's lots of places where OS X can be improved. We can learn from them and build a much better system. Hell, even Windows 7 gets some things right that I'd like to see in OS X now.
However, Apple is not Canonical. Apple makes it very clear that they are a vanity product company. Most of their products are targeted at the higher price market. If you want that design and experience, you pay for it. Design is expensive and design sells very easily. BUT, it is also much harder to do. I'll even say it is easier to write good code than it is to do good design. This point got taken in the very VERY wrong manner. There is a difference between saying "Apple makes vanity products" and "Linux is for poor people". I'm shocked that some people actually thought that I'd do the fallacy of meaning the latter. No, that's absolutely wrong. I never EVER meant that, even for a second.
So where did I go wrong? I was very aggressive. I now realize that. I was quite loud and brash. I'm sorry for that. Why did I do that? Again, because Ubuntu as a project is (was?) so dear to me, I feel sorry when I look at it now. I feel worse when I see the stupidities they are doing that makes it so hard to contribute to Canonical-controlled projects (example: notify-osd). I guess I let out that pent up anger and frustration in a very wrong manner. Coupled with a totally different statement I was making, it got taken in the very wrong way.
I hope this makes my point clear now. I never intended to hurt anyone or try and act all cool and impressive. I'll try and keep those "feelings" under control the next time. And I sincerely hope we'll forget what happened and move on to doing actual work :-)
You meet so many people through life. It's like a constant cycle -- meet, forget, meet, remember, forget, half-remember. Not everyone leaves a mark on you, but not everyone is forgotten either. Some people, some very special people have a sudden impact on you...
No, I don't mean the gentle, over-time-get-to-know-better people, I mean the instant omg-wow people. These very very few people in life, are a rare gift out of the sea of mundane humanity that you continue to ignore each day. You loved the way they talk, how they listened to you, the time you spent with them. You're so happy to have met them! "Gosh, I wish I met more such people every day!". Happened to you, hasn't it?
However, suddenly they aren't around anymore.
Maybe you met them on a train journey. Maybe at a restaurant. Maybe at a meeting with clients at work. Sure, you promise to keep in touch. But it isn't the same thing to keep in touch through phone/email/IM, as it is to actually have them around in person. Nuh-uh, doesn't even come close. This continues for a while and then you forget. You forget exactly what it was that made them so awesome in the first place. I don't mean you don't like them anymore, you just forget. Consciously, it's the same. You have fun, you enjoy their company. But you subconsciously forget. Or you think.
Then you meet them again.
And it all comes rushing back to you. It's like clicking the first time all over again. You feel awesome, you feel great! And even though you've (probably) been in touch all along, you realize and say to yourself "Oh so THIS is why I like this person so much!". Did you forget? Maybe, maybe not. Maybe it's just our freak nervous system playing tricks again.
Who cares. It sure is totally awesome. And It happened to me.
Starting my twenty third year of existence on this planet, I'm looking back at the twenty two years that I've spent here as just another life-form. This post has nothing to do with anything. Do not read any further unless you're wearing socks of different colors. I'm just going to rant.
The very start of the year was quite active. Me and GeneralMaximus were still pretty much working full time on Goonj till February. Yes, it was a failed attempt. Yes, it didn't do any good to the world. Yes, we didn't achieve world domination either. But it did do a lot of good to me. I had a chance of trying out something other than Drupal/PHP and I did. It also totally confirmed to me that GeneralMaximus and me are a great team. We have a superior understanding, we think along the same lines and it's fun to work with him. And he's the co-founder I was looking for :-)
Then, came DrupalCon San Francisco. I can't in words properly describe the pure awesomeness that DrupalCon is. In all the events I've visited, nothing, I repeat, nothing comes close to DrupalCon. Paris was great but SF was in a different league. 3000 people, the most famous conference venue on the planet, geek city - everything was great! I had a lot of fun (and a lot of trouble following work on some of the core patches :P). Also, the git migration team finally got it's thing together and Drupal should finish migrating soon!
That's it, most of the good stuff ends here.
My final semester exams went fairly well. At least I thought they went well. MDU thinks otherwise. Or maybe they don't think at all. I think the university has been running on pure randomness for 30 years. Out of one such randomness, it turned out that more than half the CS batch had failed in either Distributed Operating Systems or Advanced Java. Yeah, you read that right. We actually do have a final semester subject called "Advanced" Java. FML. So, after it was clear that half of us were not going to graduate in 4 years after all, people moved on to try and snatch whatever job they could. I moved to IITK for some pretty interesting work with the Agropedia project.
"Personal" life tried very hard to be the saddest aspect of it all. A year of constant swaying this way and that way... eventually, we just got off the swing. Let's find other people to play with. Let's decide our priorities, choose our destiny, build our lives. They say it's bad when you don't get a "yes!" but I will assure you, it is worse to lose a friend. Never again.
My decision to pursue higher studies was one that oscillated between a yes and a no more than anything else. I had never been this confused! I thought I'd charted it all out, I knew where my life was going. Hell, "I'm in control" and all that. How wrong I was... how very wrong. First, I thought I'd do an MS from the US, which morphed into "Nah, let's do an M.Tech. from India" which re-morphed into "Hm, I'm no use at masters level CS, I could study design instead". Just to make it clear, I always had a sincere interest in design, something that comes naturally to me from mom. I've never been told I'm a good programmer, but a lot of people have told me I have an eye for design. Well, that's that I guess. I (still am) preparing for an M.Des. after all. Finally!
Shaastra 2010 was one of the last really nice things to happen. I met the most awesome bunch of people, made some friends I would not part with till the end of the Universe, had a change of thoughts in many things. There's a separate post for Shaastra anyway, no point talking about it again.
That's it. 2010 for me. A lot of indecisiveness. A lot of stupid decisions. Places where I've felt I shouldn't have said/done many things. Decisions I should have taken the other way. If I look at it positively, I say to myself "that's a lot of learning for a year". Maybe it is. Another year awaits, another set of 365 days to mess life up and learn :-)
I remember I was in 2nd year when I heard about Shaastra for the first time. A school friend, who was studying in Mumbai told me that the IIT Madras technical festival was awesome and I should attend. Of course, I couldn't. It would have taken me amazing amounts of mental prowess to convince my seniors and friends that a 40 hour train journey across the country would be worth it.
Move forward 2 years. It's 2010.
Akarsh (kstar) first asked me about a possible Shaastra hackfest around August. At that time, my first reaction was "Madras? lolwot too far!". I'd never been to Madras. Not that I didn't want to go, I actually love to travel, but going all the way to Chennai all by myself would be rather boring. I've always had friends tag along for hackfests. Its a very social, fun thing. Its not a college lecture, after all. This time, sid0 told me he'd come along and do a Mozilla related hackfest again (he'd already done one in 2009), so I agreed to it as well.
As per my "alleigance", the first hackfest idea that came to Akarsh's mind was obviously Drupal :-) But this time, I wanted to do something different. I'd already done Drupal hackfests and events at many places over the past 2 years. So I decided to go ahead with Android. I had been working on my own Android app for more than a couple of months. Even my work at IITK involved Android. The hackfest people had no issues, so it was finalized. Now, the tricky part...
sid0 had clashes with his academic schedule here at IITK and he decided to back out from going. This left me in a fix. Initially, I didn't want to go alone, but here I was again, already committed to the Shaastra folks but having to go alone again. For some time, I considered backing out as well, but then I'd never been to Madras and I'd never met the IITM FOSS junta, so I went ahead. Little did I know how insightful and awesome this trip was going to be :-)
A student was waiting for me at the airport, the drive back to campus was nice, the weather was sunny but cool. The first thing that hit me about Chennai was, there were no flyovers. Actually, there are a few, but that's nothing compared to Delhi. Delhi looks like a different country altogether. The roads weren't as wide either, but the city in general was clean. Nothing prepared me for the IITM campus, however... kstar had told me it was very green and serene, but he didn't tell me it was in the middle of a forest! The campus is very very beautiful indeed, all sorts of wildlife roam free within the campus limits. I saw deer, monkeys and even black-bucks! (They even have rare albino black-bucks.)
For the hackfest, We had 5 mentors with 5 different projects:
- GNOME - Yuvraj Pandian (YuviPanda)
- KDE - Nikhil Marathe (nsm)
- Linux kernel - Kashyap Garimella
- Minix - Gautham BT
- Android - me
I met up with YuviPanda on the first day. He lives in Madras so he took me around the city to random places and of course, the BEACH! I've lived in Mumbai for 7 years and visiting a beach after such a long time was awesome! In all my fun and frolicking, we got nicely late for the first introductory talk that the mentors were supposed to give to the participants. Add to that the fact, that we didn't know our way around the "forest-campus". By the time we reached the lecture hall, the intro talks were over and most of the people had gone :P
We caught up with them after dinner, when we decided we'd give a combined IRC + git tutorial. For some reason I've never understood, I always get to give the git talk. Maybe because I just like git so much! (best. VCS. ever.). nsm was supposed to give the IRC talk, which he too outsourced to me conveniently. Eventually, we ended up doing a sort of a discussion, with Nikhil and Yuvi pitching in for support and details.
I had around 25 people with me in the Android team. Since we didn't have root on the lab machines, it took us most of the night trying to get a chroot environment up and running. Of course, the Android build tools are fairly easy to work with if you're a command line hacker. But these were fresh people, so we were using Eclipse... which is a sad painful story in itself.
By the 2nd day, I had my first major shock. People were waiting outside the lab, 30 minutes before the hackfest even started. This was HUGE. In every hackfest I've been to, 50% or so of the students usually drop out in an hour. The next day, the turnout isn't more than 30%. Here, the turnout was actually *higher*. Some more people joined the Android team, mostly those who missed day 1.
The dedication and diligence of the participants was staggering. I don't care if this sounds racist, but in my opinion, there is a major cultural divide between students from the north and south. There was much better quality of participants here. Everywhere else, most of the people just wanted to have fun, or wanted their certificates. Here, people actually wanted to work and learn. It was a very humbling experience, something I won't forget for a long time.
We continued on our install-and-setup spree this day as well. Some people got Eclipse to work inside the chroot. We had to set up their internet proxy and get the Android ADT tools from inside Eclipse, which turned out to be a *huge* download and *very* slow. While this was happening, I gave the introductory talk about the Android system and its internals, showed them around a basic application and its structure. Later however, we hit fails on the downloads on many machines. It was then I realized that I could've just taken the entire already-downloaded SDK from someone's Linux machine and copied it over. We did that, and it worked! It wasn't going to be so easy though, we began getting javac failures while building the Hello World app. Turned out, we had a broken Java install inside the chroot :/ Took most of the 2nd night to fix this, but it was worth the effort.
I knew I could never meet my expectation of the entire hackfest in one night. The build tools and SDK setup had wasted too much time. But still, we wrote *some* code after all. I showed the students how to add activities, how to link them together using Intents. XML had to be explained to some people but generally, the students were *very* enthusiastic and did all that they could. I tried to give them all the info that they'd need if they went back home and tried Android development on their own.
As expected, all this work over the night got the participants rather bored. To fix this, the organizers went great lengths to get all of us coffee and biscuits in the middle of the night! (hats off to Subhashini, Kirtika (rkirti), Sarthak (sp1408) and Kashyap. You folks were awesome!). We also did something else — all the mentors demoed some interesting FOSS projects they'd worked on. I decided to demo Goonj and from the peals of laughter from everyone, I'm guessing everyone enjoyed the story (it really is awesome, maybe I'll write a book on it someday...). I also talked about Google Summer of Code and all the mentors pitched in with their GSoC experiences, to help the hackfest participants with tips and useful hints.
I took this group photo at 5 AM. Most of them are Android participants, with some GNOME and Linux kernel ones as well. A hearty thanks to everyone who was involved with the event and to everyone who participated. This was by far the best hackfest I've attended and I thoroughly enjoyed myself. I'd love to come back again! GO SHAASTRA!