Saturday, November 12, 2005

Background

I used to be a programmer. I guess I liked the job, but I wasn't happy. I felt stuck. I wanted more control, I wanted to make all the decisions. I was sure I knew better than the rest of my teammates, and much better than my team lead. What can you do, I was twenty one. Then a funny thing happened: someone up there (where the air is thin, I guess) decided I should be promoted. So they promoted me to be the new team lead. I was happy and grateful.

The hardest two and a half years of my life followed. Being the team lead wasn't easy on me. At different times I was angry, stressed, pissed, hopeless, clueless, annoyed, betrayed, outraged, ashamed, bored. Most of the time I was more than one of the above at the same time. On a couple of oh-so-special thursday nights I was all of them at the same time.

I constantly felt like I'm about to have a heart attack, my ears will blow off my head to release all that steam, and my intestines will spill out of my eye sockets.

It was a blast.

Two weeks ago my time was finally up. I finished the job and returned to being a programmer for the two months remaining until I'm released.

I noticed two things about that two and a half years.

The obvious - I learned a *lot*.

And the not so obvious.

I learned how to be a better programmer.

 

A good programmer

Well, a definition is in place I guess. It's not enough to write fast and write without bugs (It's a must, but not enough).

The most important things to me in a great programmer are: (a) team work, (b) "big head", (b) getting things done.

(a) Any software today that's worthwhile (I mean, that can make profit) is a product of a team of people. That software and these teams succeed and fail as a team of people.

(b) Software development done by a team is almost totally unmanageable (don't beleive anything else they say). That doesn't mean there are no correct and "best" practices. If you don't do them - you're screwed for sure. But they don't guarantee success either. Once you have all the correct practices in place, you solely rely on the programmers to do all the needed things, big and small, in order for the project to be successful. And it takes a very special kind of person (a "big head" they call them in the IDF) to do these things. Trouble is, you can't really define these things in advance, and you can hardly teach anyone to do them.

(c) Programming is the perfect breeding-ground for perfectionism. Software can never be "done". There will always be unsolved bugs, and unincluded features. And this is just the excuse any programmer needs to not get things done. So when you realize that the project consists of a thousand tasks, all of which must be concluded for the project to be done, you must have programmers who know how to get each and every task done. Or your project is rotten eggs.

 

Team Economics

Your career, good programmers, bla bla bla. What's with the stuff about economics?

I know, I took the long rout, but I'm getting there.

See, Adam Smith teaches us that the invisible hand guides us in all our actions, individuals and groups alike. And when everybody does what's best for them, the whole benefit. It's why Communism collapsed, America is the only super power, and Big Macs are so cheap and are everywhere.

bigmac.jpg

Now, these theories are applied to more and more areas of life lately. But I never though of it in relation to sofware development, nor have I read about such application anywhere. I should have.

Last week I was sitting at my desk, hacking away, when I had an idea of how to shorten our solution build times.

<side note (but wait, spaces are not allowed here! aaaaaa!)>

Compiling takes a lot of time at our place. We have some build-events inside Visual Studio that make it longer. I figured I could save myself a minute or so for each time I build the solution, by adjusting the build events. Turns out it was a stupid idea, embarassing even, so I won't go into it. The technicality of it is really not the issue here.

</side note>

I estimated I can save myself something like 30 minutes a day, if I invested a couple of hours immediately. I could be making "profit" within a few days. So I went for it. I implemented the solution, was happy, but then realized it was all unnecessary, so I threw it away. Case closed.

But this got me thinking about the way I made the decision to invest the time in implementing the time saving feature.

It was pure economics. Cutting build times had nothing to do with the specific coding task I was working on. And I was about to *lose time* working on something else. I still went for it, simply because I could see clearly that I will be able to produce more within a weeks time. See? I am on to something.

 

Examples

I'm sure a bell is ringing for you now. These kinds of decisions are everywhere in the lives of the project and the team. Usually the profit/loss calculation is more complicated.

I can develop a quick solution in an ASP.NET page which will benefit me know (code complete, go home early) or I can develop, say, a reusable web control which will take twice the time but will cut development time of future pages in half for everyone on my team.

I can develop a class that accesses a database table for my module or I can develop a general-purpose class that uses metadata files to access any table.

I can unit-test my code using a temporary driver page or develop a clean unit test class which will benefit me when I make changes to the code later.

And so on.

And how are these decisions usually made in a real-world team dev. environment? 99% of the time it is the developer measuring visible short time savings (say, in the couple-of-weeks area).

 

So Now What? (A Word of Advice for Team Managers)

The issue I just described is so ubiquitous, you can almost define our jobs as handling and managing this kind of economics well.

Look at the team as the single entity in this economy. Profit is less bugs, shorter schedule, *as a whole team*.

One developer working for 3 months, then 3 developers working for one week each is better than 4 developers working for 1 month each. It's not economical for the lone person working the longest, it's profitable for the team.

Single task taking 1 month, than 5 tasks taking 1 day is better than 6 tasks taking 2 weeks each.

How many of these decisions are made the "profitable" way for the team? Not many. Because the economics governing the single person who makes the decision are not the economics that benefit your team.

So it's your job to create an environment where the coder profit will coincide with the team profit.

How? I don't have non-obvious ideas yet. The obvious to me is: you must be aggressive in "investing" (usually time) correctly to make profit (usually later). Rule of thumb: if you're in a team that looks like the ones I know, you're probably not making enough of these investments. Your team mates are probably making most of the decisions, based on narrow single-coder economics.

 

So Now what? (A Word of Advice for Programmers)

We're all human beings. It's okay to be guided by self-benefit. Don't be your team's communist, it won't work. But we're probably not making enough of the right investments either. Don't be short-sighted, many investments can bring profit in a short time. But you got to have balls, of course. Nobody cares what kind of stuff you developed if you took twice as long to accomplish your current task.

(1) Be confident. You'll make up the lost time before they'll fire you, most of the time. Pop quiz: anyone you know got fired for building solid frameworks? Reusable controls?

(2) Market yourself. Make sure everybody knows what you do. Make others benefit from your investments, you'll become indispensable. It's all enonomics after all.

 

Conclusion

Team dev. economics are an interesting way, IMO, to look at what we do, as team managers and developers. I didn't study economics unfortunately, but maybe some insights into our jobs will come from looking at them from an economical stand of point. I think I can do some thinking and googling about it now.

Want to join me as partner in a cool new startup?
Get in touch: pasha at cohai dot co

Bookmark and Share Sunday, November 13, 2005 1:29:09 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [777]  
 Saturday, November 05, 2005

I forgot to tell you I got the Benq FP71G+ eventually.

It's 17 inch, 8ms refresh rate. Works very well so far, I recommend.

I also recommend dealing with MasterPC. Had no problems with the order, the screen showed up after three days.

benq lcd.jpg

Want to join me as partner in a cool new startup?
Get in touch: pasha at cohai dot co

Bookmark and Share Saturday, November 05, 2005 8:32:27 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [12]  
 Friday, November 04, 2005

Check out some pics I took in Modiin today. It's here.

p.s.

By the way, what I said about Flickr limiting the free account to 20MB a month: come to think of it, it's reasonable, because you usually won't upload the photos at their full size anyway. So 20MB is enough.

Want to join me as partner in a cool new startup?
Get in touch: pasha at cohai dot co

Bookmark and Share Saturday, November 05, 2005 2:58:21 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [50]  

I just started working on my Castellano two weeks ago. Luckily, Or is fluent, and provided for me the must-know, real-world, survival-enabling phrase list. And I just had to share some gems with you:

"no tepreocupes, conozco un rabino reformo" (don't worry, I know a reformic Rabbi)

"cuales son mis derechos?" (what are my rights?)

"a mi me gusta Maradona, vos te gusta maradona, porque pelear" (I love Maradona, you love Maradona, why fight?)

"el mosad te asesinara" (the Mossad will assasinate you)

"me prefiere bailar con chicas"... (I prefer dancing with girls)

..."sin embargo, podemos quedar amigos" (but still, we can remain friends)

"tienes una copia de la partitura de esa opera?" (do you have a copy of this opera's partitura?)

"no soy comunista" (I am not a Communist)

"si no regresare del trek, divida mis cosas entre los huespedes del hostal" (if I don't return from this trek, please divide my belongings among the hostel's guests)

"tengo seguro completo, llama un helicoptero" (I have the complete insurance, call in the helicopter)

 

If you are only going to learn 10 phrases, make sure it's these.

Want to join me as partner in a cool new startup?
Get in touch: pasha at cohai dot co

Bookmark and Share Saturday, November 05, 2005 2:48:53 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [268]  

It's always exciting to go through a favorite-song-switch. I had one two weeks ago.

What's a favorite-song-switch? I can split my life into periods by the song I loved listening to the most during that time. The same thing happens also with "favorite-artist", "favorite-book" and so on. But "song" is one of the most important ones. It's like the "World Cup of period definers" for me. Or maybe it's the "World Series". Never mind.

All this just to tell you that "Rumble On" which is on the "Led Zeppelin II" album is fantastic. Music, lyrics, everything.

Made the switch.

 

I also love the word pair. Could be a good company name, no? (That's always an important issue, right? Good names are not to be taken for granted.) Unfortunately www.rumbleon.com is taken.

But I can still grab www.rumbleonsoft.com.

 

Want to join me as partner in a cool new startup?
Get in touch: pasha at cohai dot co

Bookmark and Share Saturday, November 05, 2005 2:36:04 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [8]  

People can be easily categorized into two groups: the ones that love Woody Allen's movies and the ones that hate them.

Me mate Or always claims there's that third group, "the others". But there is no third group this time, trust me.

That magnificent dichotomy itself is not what troubles me though. What troubles me is that way too many otherwise reasonable and respectable folk seem to fall in the group that hates his movies, which is, of course, the wrong group.

That I simply do not understand.

Woody Allen's flicks are amazing because they are just so bloody real and truthful. When I watch one of his "family" scenes (the ones depicting a typically disfunctional jewish family, usually all talking at once) I feel like this movie is simply about *my* life. And when I sit to dinner with my parents (bless them), it's almost like we're shooting his next movie.

Mother: "You look thin."

Me: "Mom, I'm exactly the same."

Mother: "I know when you loose weight, how much did you lose?"

Me: "I didn't lose anything, I gained two kilos."

Mother: "You were probably weighing with your clothes on. Why are you not eating anything?"

Me: "I just ate, I'm not hungry."

Father: "He doesn't eat? Why doesn't he eat? Give him something to eat."

It's scary.

 

The only other artist I can think of now that made me feel such a strong sence of "truthness" is Ernest Hemingway. The problem is, everyone who's taste I respect,  loves Hemingway. There is no controversy here.

So what the hell is wrong with you people on Woody Allen??

 

"Do not worry. You have always written before and you will write now. All you have to do is write one true sentence. Write the truest sentence you know." - Ernest Hemingway, A Moveable Feast.

 

Want to join me as partner in a cool new startup?
Get in touch: pasha at cohai dot co

Bookmark and Share Saturday, November 05, 2005 2:15:14 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [9]  
 Tuesday, October 25, 2005

You now, Flickr has become really fantastic. They managed to create a sense of community over there, and they have tons of ways to stumble upon stuff you weren't looking for in the first place.

I usually just start by searching some photo of Rio de Janeiro or something, but then I somehow follow a link to "Don Carlito's stream", from there to some (intentionally) blurry picture of a Moscow Subway, then immediately I find myself in the "Scary Huge Cities in the Nighttime pool", and from there the path to some naked old guy Photoshop'ed to look kind'a like a bottle of Heinz Ketchup is very very short. Or is it just me?

But I digress.

It's basically a photo sharing app, but look how galaxies-ahead it is of the (gazillion) others available.

That's because they let you easily add comments, and have your custom picture displayed next to your name when you add a comment, and they let you "tag" images so that it immediately becomes one of a thousand others somehow related (Or not so related, but still). And they let you search pictures in so many ways (though this feature in particular can be improved). They let you group your images in "sets". And then there are "pools" which are like "sets" but more than one person can add images to them. So now they have a really great community going on.

And for me (and you), as an outsider - it's pretty much the best place right now on the web to find a picture of some place I'm interested in. So if you really want to stare at some photo of a paradise-like beach somewhere in Brazil for a couple of hours, you can do just that using Flickr. (Which is exactly what I do when I'm down, and all out of cocaine. And this happens quite often.)

My only criticisms are:

(1) You can only upload 20MB a month for free. A "pro" account with no limit costs 24.95$ a year. (So I opened up an account with Yahoo! Photos, who give unlimited space for free. Screw community, that's real dough I'm talking about.)

But they seem to be doing okay, judging by the amount of "pro" members I see there.

(2) There is no "nice" way to link to some specific image from outside Flickr (like from here). You can dig in the HTML source to find the image url, but that's not what they want you to do. They want you to view the images from Flickr itself, so they can sell ads. But the page that contains each picture is so full of other stuff that I don't enjoy linking to that (even though that's what I'm doing so far). I'd love to have a feature where you can get some permanent link to the image without too much stuff around it.

 

But aside from these two points - it's very well done. Makes you want to grab the camera and go shoot something. With the camera that is.

Want to join me as partner in a cool new startup?
Get in touch: pasha at cohai dot co

Bookmark and Share Wednesday, October 26, 2005 4:00:25 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [15]  

Yo hommies!

Just wanted to let you know: I've signed up for the Amazon Associates Program. That means that if somebody clicks a link on my site that leads to Amazon, and buys the product that was linked to, I get a small commission.

And I'll be spending it all on booze.

End of disclaimer.

Want to join me as partner in a cool new startup?
Get in touch: pasha at cohai dot co

Bookmark and Share Tuesday, October 25, 2005 8:03:28 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [15]  
 Monday, October 24, 2005

start.com is pretty cool. Also, it's a bit similar to one idea I've been thinking about.

(There are one or two similar sites I've seen are also cool, I don't remember the addresses now)

Of course, it's very beautifully executed(as most things Microsoft are).

But currently it's not very usable.

As an RSS reader - it's nice, but there are other online readers that are a little better. (like Google's)

As a  way to view all my important stuff at once, a portal - hmm, it doesn't feel right. I can handle a few extra clicks for the benefit of seeing what I want in a full browser window and not in a small part of it. I may be wrong on this one.

The real benefit will come, IMO, when the portal will begin doing some clever manipulation on the data it displays from various sources (which is what my idea does). Then these sites will become successfull. Maybe.

Currently, start.com is just a great demo of several techniques(which is exactly how they want it right now).

 

Want to join me as partner in a cool new startup?
Get in touch: pasha at cohai dot co

Bookmark and Share Tuesday, October 25, 2005 12:44:28 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [13]  

Online Poker has been a huge hit on the internet for the last couple of years, but I only discovered it a week ago. I tried once before and didn't like it at all (well, probably because I quickly lost all my dough). Turns out I wasn't playing the right game.

The big thing in the world of poker right now (offline and online) is Texas Hold'em Tournaments. That's a game of Texas Hold'em (obviously), in which you pay a certain amount of money to get into a table (usually 6 or 10 players), everyone receives an equal amount of chips, and you play until all players but one lose all their chips. The winner or winners (the people who where the last ones playing on the table) split all the money.

Let me tell you - it's one great game, not at all what I thought.

There's also a "multi table" version, where you have much more players (100 up to 600) that play on many tables and as some get eliminated, players are moved to other tables until the total number of tables decreases and eventually, again, only one player remains in the game. In the multi table tournaments usually the players that placed in the top 5 (up to the top 50, depending on the initial number of players) split all the dough.

I've been a bit hooked for the past week.

Here's why it's so attractive:

(1) The game is very positionally sophisticated - the strength of your current position ("hand") is affected by many factors - your chip count, other player's chip counts, stage of the game, size of current pot, the order in which cards were dealt and bets were made, number of other players currently in the game. And I'm not even mentioning the actual cards you hold (that matters), the cards the other players hold (matters as much) and psychology.

(2) And still it's very simple too. You can teach the rules to a five-year-old. Monkey that is.

(3) It's very exciting. Because you're up against other actual people (not A*-driven aimated shapes, you bloody geeks), you're always pretty close to being eleminated, and every decision you make is very weighty - it's a real adrenaline rush.

 

Sad thing is, I cannot make money playing it. I can just barely even out. And that's probably true for you too, if you care to know.

But it's a lot of fun, so try it.

There are tons of sites that offer the game, most are very similar. Thousands of people play at every given moment. I play at Betfair, which is very good.

Want to join me as partner in a cool new startup?
Get in touch: pasha at cohai dot co

Bookmark and Share Tuesday, October 25, 2005 12:04:58 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [15]