MonthAugust 2011

Interview with Sriram Krishnan (5 years old)

5 years ago, I was in my 10th and new on the Internet. I had been coding for about 5-6 years already, but mostly with TurboC and VB6/C# (thanks to MSDN CDs I steal from Sudar). And then this interview happened and pushed me farther out into geekland :)

Presenting a reprint from 2006, my interview with Sriram Krishnan, then Microsoftie. Note that the opinions here are of a Sriram 5 years ago, and do not necessarily represent what he thinks now :D And the questions are obviously the questions a younger, naiver (and stupider) Yuvi would’ve asked, so bear with that. I was incompetent then (I probably now am too :P) – but notwithstanding all that, I still think this makes for good reading.

First, tell us about yourself

I was afraid of that question :)

I’m Sriram Krishnan – I work as a Program Manager here at Microsoft. I work on Visual Studio for Devices – that means I help people write software that runs on smart devices, mainly mobile phones but even refrigerators, washing machines, set top boxes are smart machines. I’m from Chennai, studied in SRM Engineering College and finished my BTech IT last year (yippeee!). I’m really tall (6 feet 5), really loud and have an unhealthy love for Star Trek and most forms of TV in general. I studied in Sir M Venkat Subba Rao Matriculation Higher Secondary School. It’s in T Nagar.

As a Program manager, what are your Job responsibilities at Microsoft?

I need to explain this a bit as a ‘Program Manager’ is a unique beast to Microsoft. In short, PMs have all the responsibility and none of the authority. Basically, we ‘own’ the feature. This means that we figure out how the product/feature should look like. This means talking to customers and finding out what they want. We then own the ship cycle – so we have to figure out how many features can we build given the limited time and people we have. We then go write ‘specs’ or specification documents. The developers take these and turn this into code. We are always the external face for our feature.

Now, this doesn’t mean that we control the developers in any way. All the 3 roles (developer, tester, PM) are equally important. If my developer doesn’t like my spec, he’ll tell me so. That’s why my title is interesting- I ‘manage’ the program rather than any people. Folks get confused due to the ‘Manager’ part of my title :) Hope that explains what a PM is in short. You really have to be here to understand the full scope of what a PM does :)

Now, tell us something about Microsoft…

Microsoft is a weird and interesting place. Kind of like Never Never Land (if you know Peter Pan). It is big – the people here are really smart. It is scary how many people your software can touch. Imagine if you were the guy writing the Start Menu in Windows – imagine the number of people who are using your code. The sheer amount of responsibility you have is incredible

Another interesting thing is – for whatever interest you have, you can be sure to find some team in Microsoft working on it

Most of all, I like the people. Incredibly, scary smart. I love the fact that I can say I work in the same company as Dave Cutler (the guy who lead the development of the NT kernel).

Tell us about your College Life.

It was awful. Seriously though, I now think that I wasted too much of my time and energy worrying about things like exams and college. When I recently went back to college for my convocation, I told my HOD that the only useful time I had spent in college was the time I had bunked and stayed at home.

If you’re a geek or a creative person, I would urge you – spend time on what you’re good at and what you like doing. Spend time drawing or writing or coding. Don’t spoil your health too much by killing yourself for your exams

When you reach 12th standard and all throughout college, people will always tell you “This is the most important exam of your life”. That is nonsense – no one at Microsoft has ever asked me how much marks I have got

What matters is what I did in my spare time in school and college. I liked to play around on my computer – and that’s what has helped me

College was awful. I spent a lot of time learning subjects I hated and that were useless to me. School was better in that there wasn’t the pressure we had in college (except for 10th and 12th public exams). The best part about school for me were the culturals I attended. I got over my fear of the public, of strangers. The public speaking I did then helps me till this date.

If I could go back in time, I would tell myself before the 10th exams “Don’t worry about it – no one will ask you about this even 2 months from now”

I would tell myself before the 12th exams ‘Don’t kill yourself’. Don’t spoil your health. It’s not worth it. No one cares”

I would tell myself “Spend more time having fun. Go play more. Spend more time on your computer. Spend more time dreaming. Spend more time idling away time. Spend more time reading good books (not related to studies)

Spend more time discovering yourself”

And finally, spend more time not growing up

Any Advice on following your footsteps and cutting classes? Tips and Tricks?:D

Let me be clear by what I meant there. I didn’t go to college a lot because I did a lot of creative stuff at home. In all my 4 years of college and the many, many times I bunked college, I don’t think I ever went to a movie, for example.

If you’re looking for me to say “skipping class is ok”, I’m not going to say it. I’ve seen too many people waste their college lives by skipping class and wasting their time.

I’m saying – do what you want to do and what you think will hold you in good stead later. Follow your passions. Don’t go party :-)

One of the reasons I got away with a lot of this was because I had a great academic record and I had a long history of doing well at inter college symposiums and so on. That kind of credibility helps

 

What do you think of Marks?

Don’t put too much weight into them. Don’t spoil your health or your peace of mind over them.

And please don’t judge people based on them.

What do you think of the current “Education System” in India?

Loaded question and one that I pontificate on at length all too often.

I think it is broken. Here’s why.

Human beings think. They are good at it too. However, no school or college encourages you to think. Human beings are good at doing new things. The greatest things in our history have come from someone asking ‘What if’ or ‘Why’

But in school, you’ll probably be branded as a brat if you ask ‘Why’.

All throughout school and college, I saw people being taught to be the same. I saw individualism suppressed. Being yourself was bad – being like everyone else was good.

College was worse than school. If you need to have 250 engineering colleges in Tamil Nadu, what chance do you have of getting quality lecturers? So you make do with what you have – which is mostly lecturers who couldn’t get jobs anywhere else.

And then they force students through 4 years of mindless torture, while the college authorities devote time to useless things like banning jeans for women and cellphones on campus.

I’ve always dreamed of someday setting up a school where people would be encouraged to think for themselves. Where they would be taught to question everything.

I told someone recently ‘The most useful time I spent in school and college was in the time away from class. In school, the most valuable thing I learnt was how to speak on stage, thanks to all the culturals I went to. In college, it was all the days I bunked and wrote code at home’

Question Everything. That’s a good mantra for everyone.

 

If the Education System is broken, why ain’t it fixed?

Because the people who can don’t care. And it is the ‘broken-ness’ of the system that keeps them in place.

 

If you were the Education Minister, what would you do?

I’m going to sum up everything in one line.

Teach people to think. Don’t teach them to be like everyone else.

Have them write essays like ‘Why is Isaac Newton wrong’ rather than essays that conclude with ‘And thus, we conclude that so and so is true’.

Teach them to question. Teach them irreverence for the status quo :-)

To the young students out in Schools, what is your advice on becoming a good Developer?

Being a programmer is hard. It means days, weeks of debugging the same problem. It means having to constantly relearn your tools and your materials. Compared to doctors, the human body doesn’t spout new limbs every decade or so, does it? But, you get new programming languages, new operating systems, new tools and technologies almost every day.

So don’t do it unless you love it. Please don’t take up computers because it is fashionable or because it is an easy way to make money. Take up computers because you love it at a very deep level.

Be curious. Poke around your machine. Try to understand programming at all levels. Know how to make a button spin. Know how Windows allocates the memory for that button and the data structures involved.

Code for fun. Write programs that *you* will use. Write programs that your friends will use. And then write more. The more code you’ll write, the better you’ll get. Read good code. You’ll learn a lot.

Read good books. ‘Structure and Interpretation of Computer Programs’ and almost all of Tannenbaum’s books are must reads.

Code more. Learn a new programming language atleast every 6 months.

Remember this – no other profession can create so much with so little. You can’t create an iPod or a Ferrari or even a small pencil from your bedroom. You can create an operating system though :-)

Try everything – atleast once :-)

Eric S Raymond and Peter Norvig have written great articles on similar lines. I would strongly recommend you to find them and follow them.


What’s your advice to students on choosing Colleges?

Thanks for asking me this!

  • Choose a college with good transport facilities. If you need to leave and come home, you should be able to quickly
  • Choose one that lets students go attend symposiums, culturals without any restrictions
  • Don’t join one that imposes these moronic ‘boys and girls shouldn’t talk’ rules. Inter-gender communication is important in the workplace.
  • Apart from the IITs and Anna University, chances are low that you’ll find good faculty in other engineering colleges. Yes, there are a lot of gems out there but they are few and far between. So you would do well to ignore claims of a great faculty
  • See what the former students of the college are upto. See how many have gone on to join Microsoft or Google or pursue a Phd.
  • Join a college for the quality of the students, not for the education or the faculty. Trust me it is the people around you that will make the most impact on you
  • Pick one that doesn’t enforce attendance so strictly (i.e. they won’t fail you because you have 74.95%)
  • Pick a course that you *know* you enjoy. Don’t join a course because it is the ‘in thing’ right now or because your parents said so.

    In fact, the last point merits some more explanation.

    I see a lot of students doing this – joining non-computer science departments and then getting a job in an IT company. Please don’t do this. Why? For it’ll be a long time before you’ll get all the CS background required to be a good programmer. Computers are like art – no one can ‘train’ you in 6 months.

    I need to tell a story here.

    When I wrote my engineering entrance exams, I had to wait a few days for my counseling. I remember watching on Sun TV, an interview of the guy who had scored the highest marks and who was Rank #1.

    He had picked some electronics related course at Anna University. When the reporter asked him ‘why’, he said ‘Because anyone can learn computers by going to a class for a few weeks’.

    I remember shaking my head and thinking ‘what an idiot’. For you cannot learn computers by going to a class for a few weeks.

    Pick a course you already enjoy.

What do you think CS Students should be taught in High School? College?

Python? And the Visual Studio Express Editions;-)

Seriously though, students should be taught how to debug. And how to code iteratively. I never understood why you have to write code on a piece of paper and then present it to your examiner – that’s not how you write code in real life.

And most importantly, students need to understand the in-depth working of whatever they’re using. What is the processor doing when you do a printf? You need to understand stuff like that

What do you think of “Computer Institutes” like CSC, especially for non-entry level courses?

 

I shouldn’t be too hard on them since I would have never got into computers if it weren’t for one of these institutes. It really depends on the expectations you have.

Please don’t join an institute because they’ll get you a certificate or because they’ll get you a job. That’s the worst motivation ever. Join to learn something. Don’t expect them to teach you everything though.

What first hooked you on to computers?

This is quite an interesting story. Until 12th standard or so (sometime in 1999), I had never touched or used a computer apart from a few DOS commands we used to learn by rote for our exams. I had wanted to be a writer or get into graphics and animation.

My life changed one day in 12th grade when my Computer Science teacher summoned
me during a lunch break. It turned out that there was an unknown institute (called Comp-U-Learn) that was doing a free, promotional “Introduction to Computers” course.

Guessing that it couldn’t hurt (and it was free after all), I trotted happily to this computer institute where we learnt things like how to create a folder, how to draw in Paint and so on.

One incident there changed me forever. One particular class, we were being taught how to copy-paste and the instructor happened to say ‘Please right-click on the ‘My Computer’ icon on the desktop’. Puzzled, I shot up my hand and eagerly asked ‘Sir, where is the desktop?’

Everyone in the class, including the instructor, burst out laughing.

I was hurt. In an almost cinematic fashion, I vowed to myself then that no one would ever laugh at me regarding computers again.

The ‘course’ was for 15 days and the institute wanted students to sign up for an additional 30 day course on C/C++.

I was the only student who signed up for the additional course. Since I was the only guy around, the bunched me with a bunch of older people who were studying Java and I got introduced to wonders like ‘import java.awt.*” and so on.

I finished 12th standard and the day after my TNPCEE engineering entrance exams, my dad bought me a computer. It was a P3, 850 MHz machine with an astounding 256 MB of RAM.

I was hooked throughout the holidays. I spent the entire holidays writing code in VB6 and have been coding ever since…

Why do I love computers so much? I’m really not sure. I think it has something to do with the sense of creating something, molding something from nothingness into a work of beauty. I tell my non-programmer friends that one of the greatest pleasures of life is seeing something finally work correctly, to track down that last pesky bug.

I’m also seduced by the idea of so many people using code that I’ve written. How many artists get to mass deliver? :-)

Which Programming language do you respect the most? And, which one do you find the most useful?

 

Well, one of the things that you learn over time is to appreciate different things in different languages. People ask me all the time ‘Which programming language do I learn?’ and that is a fundamentally incorrect question.

A programming language is like a tool in your toolbox. You don’t use a screw driver alone and refuse to use anything else, do you?

Anyway, here’s a list of some programming languages that I respect and why I like them.

Visual Basic – My first love. Made programming accessible to the masses. I love the idea that normal people could now code, even if it was only an Excel macro.

Python – My current favorite. I love its simplicity and the idea of ‘batteries included’. I think this should be the first language taught in school.

C# – My bread and butter. Anders Hejlsberg is a genius – I love where he has managed to take C# without making it inaccessible to people who want their curly braces and their semi colons

Lisp/Scheme– Twists my head in some very interesting ways. When you code something in Scheme and you see it work, you get a sense of achievement – the same thing you get after you’ve written an exam well. Someday I hope to understand macros. Maybe a day after that, I’ll understand continuations.

C/C++ came close to being on this list but I decided against it. Weird, considering that I write so much code in them.

Anyone you can call as Role Model in your life?

Interesting question – I’ve always had too much of an ego to acknowledge anyone as a role model.

However, of late, I’ve realized that I do look up to two people. One is Bill Gates and the other is Steve Jobs.

With BillG, there’s this whole side of him that people outside Microsoft never get to know. I am amazed at his depth and breadth of knowledge – I’ve read stuff from him on topics as varied as database query processing techniques all the way to virtual worlds and search engines. I’m amazed at his sheer smartness and intelligence – there are a lot of stories in Microsoft of ‘BillG reviews’ which talk of how smart he is.

I also love the fact that he’s so passionate about software, and of late, solving the world’s problems.

With Steve Jobs, I love his eye for beauty and perfection. And I would someday like to get his ‘Reality Distortion Field’.

Kind of politically incorrect for a Microsoft employee to admire Steve Jobs, isn’t it? :-)

Quickies
Your Favorite Books
               Lord of the Rings, Hitchhiker’s Guide to the Galaxy, anything by Frederick Forsyth and Michael Crichton. And Peter Norvig’s AI book All of Ayn Rand’s work deeply influenced (and comforted) me as well.


Your Favorite Authors

Apart from Forsyth and Crichton, I loved Conan Doyle as well. I love Joel Spolsky and Paul Graham. Robert Scoble is a friend and so is Don Box – I love to read them as well. Of late, I’ve loved reading Guy Kawasaki. Closer home, India Uncut (Amit Verma) is always fascinating. Am I allowed to list myself? :-)

Your Favorite Music

 

Anything by U2, Scorpions, mostly classic rock. And a lot of movie themes – I love the John Williams score to the Superman movies

Your Favorite Gadgets

Zune – when we release it :) [
Please prepare for extensive trolling from Apple fans –Ed]

 

Your Favorite Geeks

Dave Cutler. Barry Bond (he works on my team :-) ).Raymond Chen. Peter Norvig. Rob Pike. Andrew Tannenbaum. Guido Van Rossum

Your Favorite Software
Visual Basic 6. Python. Winamp.


If a Genie were to give you three Wishes, what would you ask for?

For an infinite number of wishes. Hey, we at Microsoft think big :-)


What would you like to say to the Students?

Question Everything. Never Belong. Ask yourself ‘What can I do that I’ll be remembered for the next 1000 years’.

And work towards that.

What would you like to say to the Teachers?

Don’t teach unless you love to.


What’s your Advice to Parents?

Don’t put so much pressure on your kids during exam time. Exams really don’t matter
What’s your advice to the “normal guy” on becoming a geek?

Be curious. Enjoy technology and poking around technology. Ask yourself the question ‘How does that work?’ and ‘What if X could do Y’ and so on.

Be a tinkerer!

My Vim setup

I moved from emacs to vim a while ago, and have been steadily accumulating a series of plugins in my .vim. They’re all up in my rather messy dotfiles repo. Here’s a slightly more neatly organized list of the plugins I currently use:

  1. command-t – File opener and buffer switcher. In-fuckin-credibly useful.
  2. vimpress – What I use to blog since moving to wordpress.
  3. matchit – Lets % work with html tags
  4. commentary – Generic commenting and uncommenting script NERDCommenter has replaced commentary due to being more flexible and having more options.
  5. fugitive – Incredibly awesome git wrapper for vim. I rarely go to the commandline for git these days
  6. tagbar – Useful code-exploratory plugin when I’m looking around a codebase trying to familiarize myself.
  7. supertab – Buffer completion in insert mode only when I need it.
  8. gist – Put stuff up in gist to pass it around
  9. BufClose – So I can close a buffer without messing up my splits
  10. extradite:Glog replacement that builds on top of fugitive. I don’t understand why this isn’t bundled with fugitive
  11. TwitVim – Yes, so I don’t have to go to the browser (and be consumed by chat/reddit/hn) just to post a tweet.
  12. ack.vim – Ack integration for vim. Do yourself a favor and use ack instead of grep.
  13. Syntastic – Automatic syntax checking so that I don’t miss a semicolon and not know about it
  14. php-doc – Insert boilerplate PHP doc compatible strings in my PHP files whenever I want to. Very PHP specific, need to find something that works across languages. (Note: This plugin has quite some identity crisis. It’s named PDV but it’s filename is php-doc. Since php-doc is more descriptive, I’m using that)
  15. delimitMate – Automatically closes quotes, parens, braces, etc for you. I initially thought this would be super annoying, but in fact it is rather very pleasant.

I’m also on the default desert color theme – haven’t found anything better. Suggestions welcome – both for the color scheme and for new/replacement plugins. After trying out wombat and jellybeans color schemes, I have settled on wombat for now.

Suggestions for more plugins still welcome :)

This is the list as of 24 Aug 2011. Updated as of September 2 2011 (added 10, 11, 12 since last update). Updated as of September 5 2011 (changed 4, added colorscheme change). Updated as of September 12 2011 (added 13, 14, 15). I am moving quite fast, am I not? Will keep this post updated as and when things change.

The fridge at InterviewStreet office

We bought a fridge two days ago, and spent a day stocking it up. Perhaps it needs a bit more non-liquid content in it, but I think the choco fills and Dark Fantasy biscuits (not to mention the litres of Ice Cream we’ve stocked up on) would do just fine for now :)

And before you start harping on about ‘health’ – the bottom tray has a mysterious cover full of apples shipped from Chennai by mom.

Non-ASCII Characters in HTTP Headers

I was debugging an issue at work today where a (generated) file refused to download in Chrome, but the same URL worked just fine with wget. I remember reading in the HTTP Spec that HTTP headers can only be lower ASCII, so when wget mangled the output file’s name, the problem was obvious – the file name contained a character that wasn’t in lower ASCII (an accented A). Chrome had borked on encountering it, while wget soldiered on. Using iconv to strip non-ASCII characters in the file name on the server side fixed the issue.

Moral of the story? Read the RFCs! The HTTP one, in particular, is remarkably readable and you should read it if you’re doing non-trivial Web Development.

P.S: If I had had time, I’d have went around testing this behavior in several user agents and documenting their behavior (and possibly submitting bug reports) – but <insert-excuse-here>.

 

You are a programmer if you can run code in your head

From HN:

From my experience, the largest hurdle first time programmers have is being able to execute programs in their head. It takes a cognitive leap to go from the source code in front of them, and what happens at runtime.

(emphasis mine)

I believe that if you have made that cognitive leap, you can call yourself a programmer. It means you’ve entered into the second hump – you are a programmer. One of us. Welcome :)

This is also the reason why solving programming challenges at places like InterviewStreet Challenges, CodeChef, TopCoder, SPOJ, etc also increase your general programming skills – they require that you continuously run code in the interpreter in your head. Helps you train your procedural memory. Same reason why learning different language paradigms (OOP, Purely Functional, Procedural, etc) makes you a better programmer.

Reminds me that I have four more chapters in SICP to finish and Clojure to learn :)

 

© 2017 Yuvi Panda

Theme by Anders NorenUp ↑