Monday, April 19, 2010

Don't Be Strangers

I joined CS3216 because I was looking for a good simulation of a startup environment.

I think much of my school life has been about simulations. I created a debate club because I wanted to simulate leadership - especially against rabid school opposition; I played Judo because it was a good simulation for pain. I'm not sure if they're perfect simulations, but I try. And so - for my application to 3216 I wrote:
This is probably the only time in my life where I may learn the realities of a startup without the threat of monetary failure, and I must admit that I was saddened when you told us that this would be the last 3216 offered in NUS. I originally planned to wait a year before applying; I believed I would’ve been a better programmer then.
But I'll say it: CS3216 has been an amazing simulation.
 
I am supposed to tell you about what I've learned from CS3216, but I'm not sure how to do that without sounding corny, or staid, or weird. So ... let me tell you a couple of stories.

Networking should be immediate
The night after the entrepreneurship lecture I hunkered down at PL6 to take a stab at Sportup's design. (It was a wasted night - nobody liked the design and so I had to start from scratch a couple of days later ... but anyway). Sometime after 11 Tomithy came in, bringing food with him, and he sat down with a whole stack of name cards in front of him. "What are you doing?" I asked.

"Emailing." he answered.

And so he did: I glanced over now and then, and he was shooting off emails to the people he'd met at the entrepreneurship session. I thought to myself: now this is something I've got to learn to do.

But of course I didn't email the people I talked to that night, and of course I didn't get anywhere on that. This must change, of course, and soon. (An aside: Toms is amazing. Did you guys see how brilliantly Supremacy was executed?)

Chemistry is difficult
I have to be honest here: I made a couple of big mistakes in CS3216.

The first, and biggest, was to choose the wrong teammate. Now I'm not sure if wrong really means ... 'wrong'. I believe 'wrong' really means 'wrong for me', or 'wrong for us.' It could be that a hundred and one things got in the way, and I just didn't make the effort to make sure we were on the same page. But if I'm honest with myself: I think now that we shouldn't have worked on the same projects. We'd have saved each other a lot of heartache that way.

I have learnt that chemistry matters - and it can be impossible, sometimes, if you've got the wrong mixture. Our personalities were direct opposites, and we came from completely different world-views. I think, on one level, I should've stepped back and let him find a better, more suitable teammate. But on another, it's good that I've learned this now - in the simulated environment that is 3216; better here than in the real world, with an actual startup.

Some relationships just won't work out - the trick is to figure out which.

Things came to a head between the two of us, the night leading up to the final project presentation. We were in COM1, and we were ... loud in our disagreements with each other. So I went downstairs, to vent to Orry and Hung. And the advice they gave - they were amazing.

"This isn't a problem about design," Orry said, "It's about something else. Something bigger. You've got to figure that out before you attempt to fix it -"

"But there's no time!" I said.

"Yes, there's no time." Orry said, and there was pity in his voice. I slumped in my seat.

I'm not sure what I could have done differently. Working on a project in CS3216 is a little like marriage - and if you pick the wrong partner, no matter how hard you work at it, you're doomed, rather, to fail. And that's a humbling thought.

I wish I could've gone back to change this - all I have now are apologies to my teammate, and that's not much.

Beware the Dunning-Kruger Effect
I got my first taste of the Dunning-Kruger effect this semester, and I'll keep that in mind the next time I work on another high-stakes project.

Learn to stay focused
This from Hung, on my teammate problem: "I think one thing is that your design isn't fast enough. Like - I can't worry about (Supremacy's) design - because I've got so many other things to do. But he could, because he was so far ahead than where you were. You were slow with the design. I think ... I think it's because you're not focused enough. You can get very distracted sometimes. This is not something you can change immediately. It takes time. Slowly, perhaps."

Hung is right.

Derive arguments from first principles
Prof actually attacked me for some of my essays. Lesson learnt: derive arguments from first principles. I'm still trying to figure this out, because some arguments are too big, and too intricate that deriving them from first principles would take a whole book (e.g.: the argument that fairness is objective takes 100 pages of intricately argued logic), but this is, I think, a principle worth holding on to.

I am thankful for this - too many of my essays, when I look back on them, have jumps in logic that are clear to me, but not to an average reader.

An algorithm for taking criticism
Having your professor attacking you for your own good was tough, but from that experience I think I've finally figured out how to take criticism, and it goes something like this:
Upon receiving criticism, determine if a) person means well (wants you/your app to improve) or b) person does not mean well.

If b) disregard criticism.

If a), filter for two kinds of information: valid points and invalid points. Invalid points are points where you know the critic is wrong - for instance, if he/she is assuming prior experience that is completely different from your past experience - ignore this. Do not get defensive. Nobody knows your personality as well as you do, and in the course of giving advice, the person is likely to get several things wrong about you. This is normal.

Focus on valid points. Ask for (impartial!) third party opinion, from people who know you well enough.

Absorb valid points.

Thank critic.
There are different kinds of motivation. Star Wars will never be the same again.
I've a feeling Prof really likes Star Wars. He thinks he is better looking than Yoda (though Yoda is kinda cute). Okay wait, that wasn't the point I was trying to make.

The point is this: motivations matter. For the longest time ever I was motivated by ... I don't know, really. Wanting to prove detractors wrong. Or wanting to prove myself to myself. Prof said this was bad. Much of his advice on the matter was shrouded in geeky metaphors like the 'dark side' and the 'way of the force', but he was making an important point. Motivations matter - and some are inherently better than others. I will be leaving CS3216 thinking about my motivations, and I'm not sure about the answers I may find.

I'll pray about that. And I'm fairly certain I'll find answers, sooner or later.

Doubt is normal
Doubt is okay. It is normal.

I stayed up nights wondering if I was on to something on Treehouse (I'm still not sure). I delayed launching Pandamian for a full year because I thought it was going to be disruptive to the publishing industry - too disruptive for a 20 year old to launch on his own. CS3216 has taught me that it's okay to doubt - and I learnt this from talking to Kah Hong, to Reuben (who himself was doubtful over Voucherous). It's cool to know that there are other people out there who also doubt, who also fear. I think - when Pandamian launches, one of the first things I'll have to do is to set up some kind of informal support system between founders - because the doubt, the stress, can really be too much for one person to bear.

But I'm not sure, of course. Too many things can happen, and there's no telling how things would be like even a couple months down the road. What I do know is this: if you're going to start a startup, do it with someone else. The doubt can be overpowering otherwise. That's a valuable lesson indeed.

And, lastly:
"Don't be strangers, when you see each other in school, in the future. I wish you the very best."

Don't be strangers
'Don't be strangers' was probably the last thing Prof said to us after the poster session. Looking back on the course, I now realize that the people I'm closest to are the ones with whom I've pulled all-nighters/spent long periods together with. Kah Hong has been a real blessing, in terms of support, and he's one of the few people in the class who has a real sense for 'what users want'. I've spent nights in COM1 with Orry, and Hung, talking about all sorts of weird things. But I think this connection applies to everyone in the class. There are too many other people with whom I can now nod at - in the hallways, the biz canteen - and know that we've shared a semester of pain together - and survived.

I entered CS3216 alone, and left with friends. And I can only be thankful for that.

Onward.

9 comments:

benleong said...

The first part of your algorithm is flawed. Sorry, can't help myself since I'm a CS prof lah.

When you get criticism, EVALUATE for truth. The person doesn't matter. The intentions doesn't *really* matter.

There's often no smoke without fire.

You just need to replace the filter with the following:

Upon receiving criticism, evaluate the truth and/applicability of the criticism c:
if (c.makesSense())
c.deal();
else
dump();

Eli James said...

Hi Prof! I KNEW you were going to respond to the algorithm! =P

But seriously though. I thought about it for quite a bit, and I have to say that the first part has to be there for a reason.

I originally wanted to write
if (c.makesSense() && badIntention())
c.filter.truth
call.externalOpinion()

But the emotional trauma of having to sift through the personal attacks takes too much time. People usually say 'ignore the critics', and I now realize that it applies to precisely this situation.

benleong said...

If you can't deal with personal attacks, there's some other piece of software that needs to be upgraded.

Was it Windows? :-P

Eli James said...

=)

Jon said...
This comment has been removed by the author.
Jon said...

think you used up your word limit there.

Dunning–Kruger effect is an interesting read. Thanks.

Toms said...

Hey Cedric,

This is another wonderful piece of writing from you very reflective and vocal. It tickled me and sobered me at the same time. Wow. (=

What I see in you:
1) You are vocal. You have a good sense of humor. And you have great passion for things. You will make an awesome awesome evangelist. (=
2) You have a good sense of purpose and conviction.
3) You are self-reflective and honest, which means that you have huge capacity of to grow. I think you have the will to reach your potential in Life. Keep going at it, but make sure that you focus and do things w/o regrets. It's okay to fail, but it is not okay to give excuses.
4) Do take your time enjoy Life and enjoy others.

Like you, I also left 3216 with many questions (thanks Prof) that needs sorting out. And I think that we both intuitively knows that work needs to be done and the strength it takes to do this kinda fundamental reasoning with ourselves. Let's sort them and these answers (or perhaps more questions) could be our greatest take-aways. =D

Cheers
Toms

Ps. Thanks for the compliments. Sincerely, I have awesome team-mates and everyone of us are willing to work our ass off. (=

Eli James said...

@Jon: Sorry about the wordcount. =/ And you're welcomed, on the Dunning-Kurger effect. Hope that helps.

@Toms: Thank you for your kind words. I guess ... I'm slightly disappointed with what I've accomplished in CS3216 - but on the other hand, I guess the learning's more than made up for it.

I wish the best of luck for you and Supremacy, Tomithy. May it change lives the way you wanted it to! =)

Ryan Teo said...

Some resources for you to consider:
Team dynamics
Summary of 5 team dysfunctions
http://www.conequity.com/conequity/cms_bwm/uploads/4.pdf

Leadership
http://hbr.org/hb-main/resources/pdfs/comm/microsoft/level-five.pdf