<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener("load", function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <iframe src="http://www.blogger.com/navbar.g?targetBlogID=8895384&amp;blogName=Learning+%40+Stanford&amp;publishMode=PUBLISH_MODE_SFTP&amp;navbarType=BLUE&amp;layoutType=CLASSIC&amp;homepageUrl=http%3A%2F%2Fwww.stanford.edu%2F%7Esomik%2F&amp;searchRoot=http%3A%2F%2Fblogsearch.google.com%2F" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" height="30px" width="100%" id="navbar-iframe" title="Blogger Navigation and Search"></iframe> <div></div>

Monday, April 14, 2008

An afternoon with John Van Maanen

I had the privilege of attending Prof. John Van Maanen's talk this afternoon. He was the professor of Prof. Stephen Barley, who has been advising me on my research on the Stanford Police (so, he could be one of my intellectual grandfathers).

I noted some gems on ethnography:
  • Ethnography is the most scientific of the humanities and the most humanitarian of the sciences.
  • You can assert the textuality of ethnographic fact and factuality of the ethnographic text at the same time.
  • In the long run we'll all be dead. In the long run, we'll all be proved wrong. A good academic career is when the first precedes the second.
  • You have to begin with spectacular ignorance.
  • Historians have the problem of getting rid of their presentness to get into the past. Ethnographers have the same problem but it is more spatial. Two approaches may be taken:
    • The first approach is to cut your ties.
    • Second, put yourself into the same position as those you're studying.
  • Logic of discovery vs logic of verification
  • Five Templates/Temptations:
    • Realism: Getting out the news, labor-intensive, selection, emphasis, letting other people do the telling, first-person accounts ok, e.g. Venkatesh, author of Gang Leader for a Day, Going Tribal: Extreme Ethnography. Danger: What you get in coverage, you lose theoretical acuity. Not too big a price to pay.
    • Importance of History: Historians moving into ethnography, ethnographers moving into history. Critical ethnography, Marxist scholars criticize ethnography - too close to see big picture of systems.
    • Fluidity of Meaning: Post-modernism..
    • Missed the fourth..
    • Advocacy: Good being represented, begins with a preface, ends with a point-of-view.
If you were present at the meeting and have any corrections/additions, please let me know.

Thursday, March 30, 2006

A Guide to Getting a Programming RA

The all-consuming endeavor of most graduate students from South Asia is to find a research assistantship the moment they land, if not earlier. The topic dominates conversations so much so that a typical conversation goes like, "What is your name? Do you have funding?" - when people are in a hurry they sometimes mix up the order.

Funding is a big deal for South Asian students coming straight from undergraduate studies simply because education is very expensive and most people rely on personal funds or loans. This weighs very heavily on minds that haven't yet seen the color of money, who find it hard to remember that it is possible to pay off the loan in about a year since graduation (lets assume a modest $7000, that's $84,000 per annum - Stanford Masters tuition is around $43,000 per year).

I know that I cannot take this tension away. However, I can give some advice, having done a little bit of research on labs that hire software development talent. I got to do a study last Winter, understanding the problems that professors face when hiring Masters students for software development. Regardless of the department, there was a remarkable similarity in the issues faced. I will try to present some of them, and suggest concrete steps students can take to make good decisions and increase their odds of having a successful educational experience at Stanford.

Professors are generally scared of Masters students. Masters students tend to be desperate for money and will initially promise the world in order to get an assistantship. They don't usually take the time to think about research (RA = research assistantship). Once they're given a programming RA, a couple of things have been seen to happen. First, it turns out their programming skills might be good but their software development skills are awful. They can take the professor back a couple of quarters (as in, someone has to come in and clean up the mess). Second, they have homework. And between homework and research, homework takes priority. Third, even after they cross the first two hurdles, learn and start performing, the time has come for them to graduate and the professor has to now retrain someone or drop the project.

I am not trying to be cynical by citing these reasons. I think it is very important to understand the system if we are to work with it. The reasons above cause professors to prefer Ph. D. students for meaningful work. However, it is not always possible to find Ph. D. students with solid programming skills, and there are openings for Masters students. These are kept hidden, if the professor values mail sanity. Usually, existing students are told to contact friends they trust for potential RA candidates.

Let's take a look at what these dynamics do to the educational experience of a Masters student. Until funding has been obtained, a Masters student in the South Asian community feels like a loser. Every time someone gets an RA, it becomes the topic of the evening conversation, and calls of commendation pour in. It starts to feel as though the goal of coming to Stanford is to get an RA, and not a Masters education. If you're lucky, a mentor can help set things right by reminding you of why you are here. If you're not, this leads to miserable nights.

I submit that the two scenarios are painful both for the professor and the student. The professor is not moving ahead on research and the student is having a bad time. If you don't agree with me so far, then you can stop here. I also submit that it is possible to get out of this mess and be really happy, the ENTIRE time you are at Stanford. Read on.

There are two frames I will use to tackle this scenario. Philosophical and Material.

Philosophical
First, happiness is not a condition, it is a decision. You decide to be sad or happy. You decide to worry or be stressed. If you can accept the truth of this, then you will find there is no reason to be sad, no matter what. From day one, remind yourself of the immense honor and opportunity you have by getting admitted to Stanford. You must show your gratitude to the world by being the best student possible and learning more than anyone else. You will let yourself down by doing any less. All your material decisions will be based on this philosophy. If you find people discussing what a sad situation it is that RAs are hard to find, you must not let that get to you and inspire your friends to see the opportunity that they already have.

Material
Lets look at the material side now. This is a whole lot easier, as objectives and criteria are external. They are not often explicitly stated, but the purpose of this article is to make them explicit.

First, we must begin by aligning with a professor's research interest. They need the best programming talent they can get so their research can progress. It is easy to miss the fact that there is research involved, and the best programmers for a professor are usually also interested and aligned with the research. If you treat programming as a day job that you must somehow get through to pay for your tuition, you will be miserable and make your professor miserable as well. So, find a professor who does or likes what you would love to do.

Second, it is true that you won't be an ace software developer if you have never developed software. Don't count college hacking experiences - that was about machines and languages. Software Development is about people, psychology and communication. It is not fair to expect you to know this if you haven't worked professionally - but what the heck, one of your colleagues reading this article will take the effort to learn, so you can't afford not to if you want to stay in the competition. You need to check-in to a training center in India or wherever else you are and invest in yourself. If there is no training center, then sit down and teach yourself. What training should you get? Here's a list that I think is essential:

[1] Extreme Programming Methodology: How to build software in an agile manner - learn how to run the Planning Game (professors love it when exposed to it), Retrospectives, Continuous Integration, Test-Driven Development, Refactoring, etc..

Book - Extreme Programming Explained by Kent Beck
Site: http://www.xprogramming.com, http://www.industrialxp.org
Mailing lists: Extreme Programming, Industrial XP, Extreme Programming India (ask on this list for training opportunities - I think ThoughtWorks keeps organizing seminars and workshops)

[2] Test-Driven Development (TDD) and Refactoring: These two are so important that even if you couldn't understand XP, you must do your best to master these.

TDD
Book - Test Driven Development: A Practical Guide by Dave Astels
http://www.testdriven.com/, http://www.junit.org
Mailing List: Test Driven Development

Refactoring
Book - Refactoring: Improving the Design of Existing Code by Martin Fowler
http://www.refactoring.com
Mailing List: Refactoring

[3] Design: For any serious programming, you must understand Object-Oriented design. A lot of people use C++ and Java's OO features grudgingly and create terrible messes. The test for anyone knowing Object-Oriented design is if they understand "Design Patterns." It is a fun subject, and your level of programming climbs several notches when you know this.

Book - Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, et al.
Book - Refactoring to Patterns by Joshua Kerievsky, et al.
Mailing List: Design Patterns

[4] The craft of programming: Learn how to use your environment to support agility. If you are a Java programmer, then learn how to use Eclipse really well - http://www.eclipse.org - this IDE is free. Figure out how to setup your own CVS repository to do version control of code. Attend an Eclipse workshop in India. If you are using C++, then Eclipse supports C++ as well. The Microsoft tools for programming tend to be primitive - make sure the IDE you pick has native support for Test-Driven Development and Refactoring (like Eclipse). Learn how to write tests in Eclipse and have it lead to production code. Learn how to do automated refactorings in Eclipse.

Book: The Java Developer's Guide to Eclipse, Professional Eclipse 3

Optional (depending on the lab)-->
[5] Databases: Master working with at least one database, learn about ODBC/JDBC bridges and drivers. Build a reasonable application to get your hands dirty.

[6] Web Development: If you can, learn how to do web-based development - servlets and the Model View Controller pattern that drives so much of it. See if you can pick up the Struts framework.

The Secret is Out
Now that the secret is out, if you don't get trained, your friends will and that will put you at a disadvantage. So better get started..

Once you have this background, you will find professors very interested in talking to you. Then, it becomes a matter of aligning research interests and personality. With this background, you will not be rejected for lack of technical knowledge, and it will help you generate opportunities.

Just so you know, 6 to 7 months is sufficient time for picking these up, if you put your heart into it. It is a much better investment than simply worrying about funding. After reading all this, you may just decide that you do not want a programming RA. That is what I did. I liked one professor's work in Global Teamwork and took a risk - worked with this professor for two quarters without funding. It produced immense learning for me, led to a summer internship and a quarter's RA. It also led me to love research and apply into the Ph. D. program. My close South Asian friends have had similar experiences. Two of them focused on Strategy and worked with a top marketing professor for two quarters to produce a top-class Harvard Business Review case study with their names on it. This case study was used as a final for the professor' s class. Both have top notch jobs now in designing Strategy (Deloitte and Microsoft), due in no small part to their background work in this area and the risk they took.

Good luck!

Monday, December 05, 2005

Sticky Ideas

A course in the GSB, "How to Make Ideas Stick" has made a big impact on me. My friend Raghav Kapoor took it last year and told me not to miss it. Prof. Sutton also recommended that I take this course. Going by his last recommendation (Diversity), I had to take this course.

A most wonderful class this is! Challenges usually involve communicating ideas within 1 minute such that people are unable to forget it.

The professor, Chip Heath, is absolutely awesome in his depth of knowledge and the manner in which he leads the class.

Some examples..
The challenge: Come up with a way of convincing people to donate organs. You're at a basketball match and only have 1 minute. No visual aids are available but you do have a few volunteers.

Here's what I came up with:

Volunteer 1: The kidney is full of Nitrogen. Nitrogen is good for plants. I want the plants in my grave to flourish. Therefore I can't donate my kidney.

Volunteer 2: The heart is a great pump. Arizona is a desert land in need of water. I'd like to be buried in Arizona so my heart can pump water and help irrigate the Arizona desert. Therefore I can't donate my heart.

Volunteer 3: The lung is a great air purifier. I'd like the insects in my grave to have pure air. Therefore, I can't donate my lungs.

Volunteer 4: If none of these situations apply to you, call 1-800-ORGAN-DONOR today.

So what do you think?
What stunned me was that I struggled to come up with something for an hour. And then, I used the templates we studied in class and all kinds of ideas started coming in.

If you're here next autumn, I highly recommend this course. If you find any idea that you consider sticky, do let me know about it - I have now become a collector of sticky ideas.

Thursday, June 02, 2005

The Warrior Code

Continuing in Prof. Howard's series of mind-blowing classes, I took The Ethical Analyst. During the course of this class, I made a presentation on Military Ethics: The Kshatriya Code. Although I didn't conclude anything meaningful in that presentation, Prof. Howard's penetrating questions made me think really hard about what military ethics might be and how it would help me make decisions, if I were a Nazi officer asked to engage in horrible crimes.

Here's an attempt to address this issue, by looking at the Kshatriya code of warfare in ancient India, through three ethical violations in the Mahabharat War. The following discussion requires the viewing of this presentation.

The warrior code is the military version of the maxim, "Peaceful honest people have the right to be left alone." The military maxim might look like, "He who lives by the code, dies by the code." -- or, if a warrior does not live by the code, then he won't be killed according to the code.

In the Mahabharat war, Karna broke the code by killing 16-year old Abhimanyu with deceit. Therefore, the code ceased to protect him, and when his chariot wheel sunk, Arjuna decided not to honor the code for a violator. The beauty of the code is, its voluntary. If all the Kshatriyas start breaking the code, they're responsible for what follows, their imminent destruction. Therefore, it is in their interest to not break the code at will.

I am thinking this fits in nicely with the maxim society idea (see previous blog entry). If there must be an army, then it is in their interest to formulate such a code.

Now, I can use this idea to answer Prof. Howard's question on the Nazi example (everything seems to boil down to the Nazis - what would we do if we were a Nazi officer and asked to engage in horrible acts). If I were a soldier, I would have voluntarily followed this code. Like Drona (the teacher who massacred 25,000 soldiers,... before being killed through a lie about his son), if my commander told me to do something that violated this code, I would know for sure that it would be wrong. I would then have free will to go ahead or not. Personally, I would not go ahead. But if I did, I wouldn't expect the code to protect the way I die (i.e. honorably).

This is like Arjuna being asked to kill his teacher Drona on the other side - only he had the capability, and for sure, he had the orders. He refused, as it was against his personal ethic.

If I were a Nazi doctor, then a very different ethic would be in place. The allegiance notion would not apply - duty is first to the patient and then to anyone else - so its a different code.

I think this code is not about what should be, rather its an expression of what has been in most societies. The English knights, the French musketeers, the Japanese samurai and of course, the Chinese warriors all had some form of a warrior code, that prevented indiscriminate killing. There is this whole notion of a "good death," followed by the Buddhist Japanese and is expressed beautifully in the movie, "The Last Samurai," which captures some of these ideas.

What do you think? I would value your comment (click below).

Sunday, February 20, 2005

Kautilyan Society

I am taking this knockout class called Voluntary Social Systems (MSE 299), taught by the grand-old-philosopher of this century - Ronald Howard. I've always romanticized being taught by a man of a Socratic stature, holding dialogues much like Socrates and his detractor Thrasymachus in The Republic (Plato). That desire has been fulfilled by Prof. Howard.

He radiates wisdom, and I highly recommend his classes. In this particular class, we're examining what a society would look like if there were no government (and no taxes!), and he's convinced me so far that it would be pretty darn good!

Some of my work in this class:
1. Mini Case Studies on successful voluntary systems in India
2. Presentation on Kautilyan Society - medieval Indian around 4th Century BC, with the data coming from Kautilya's, "The Arthashastra." It was a good deal of fun and I've learnt some startling facts about India's past.

For one, men had to pay women dowry to marry them. If the wife wanted to divorce, she would have to return the dowry. If the husband wanted to divorce, he couldn't get his money back (this was to ensure that there was no economic motive behind a divorce). Drop me a line if Kautilyan Society interests you and we can have a nice chat.

Wednesday, December 15, 2004

Simulation of a Fast-track Software Project

For my project work in "Organization Design for Projects and Companies" (CEE 242), I teamed with Tulika Majumdar, to simulate a software project of a startup company using SimVision - a path-breaking tool developed by Prof. Ray Levitt to model the physics of Project Work. We had rather interesting results. Initial reports suggested that the organization wasn't going to finish in the budgeted timeframe - 6 months. A year and a half was a more realistic estimate.

The simulation helped us study changes in the organization design. We added 5 more developers to an existing 5-person co-ordinating team, and the project now showed chances of finishing within 6 months. It turns out that it is too expensive to hire 10 people in the US, so the company talked of outsourcing. We simulated this too, and found that this would push the schedule back by more than a year, thus proving counter-productive.

I am frankly quite fascinated with this technology, and await to study the results of actions taken by the company as the project unfolds. If this sounds interesting to you, I'd highly recommend Prof. Levitt's course (Autumn Quarter).

Tuesday, October 26, 2004

Stanford Predicts: Presidential Elections Tracked at Stanford

I am in the Stanford Predicts team led by Prof. Sam Chiu, and was able to use the work on floodfill to create a map showing the distribution of Bush and Kerry's winning chances. Check out the site for the latest on the Presidential Elections.

You can also try the interactive map.

To all the hackers out there - here's a little challenge. When you move the mouse over the states, you will see the display change instantly. Detecting which state (polygon) you're in is a non-trivial problem for java applets. How do you think the detection is being done to give a real-time response?

HINT: Look at the states really hard. The proof is in the picture (or the pudding).