Archive for November, 2008

“Stealth Programmers” - A New Species ?

Yes! ... while you sleep, there are those who lurk in the dark. Stay in the shadows and make you applications you can only imagine at best. This is a new breed of programmers here in Pakistan. Finally the plague has formed it's roots here. Yes people, STEALTH has come into the Programmer here now. Let me explain how I got to realize this.

So here I was wondering why the hell I don't have a portfolio up even after 2 years ? and suddenly it struck me three times, almost like three speedy pats hitting my back simultaneously, the words "and you'll be like a *stealth* programmer for us". Yes, I recall clearly about 3 clients of mine saying this to me. So what is a "stealth programmer" anyways ? Simple observation reveals that people who wear masks of different companies (some big names like Apple Inc.) are constantly looking for resources. Reliable and efficient resources. People who not only work just so that they earn their kitchen money, but also because they are passionate about what they do. These people are hired by these companies with a promise (technically known as NDAs : non-disclosure-agreements) that they must not reveal their identity and they must not do anything with the code outside their boundaries, may them be virtual or physical, and code them their ideas.

All this commotion about design patterns followed by great frameworks to address them, in most cases, were designed and developed by the "stealth" breed. Authors of languages like Python (Guido Van Rossum) and Ruby (Yukihiro Matsimuto) were stealth programmers. Heck, Linus Torvald had a "stealth" status when developing the Linux kernel. It was this species that lay the foundations of the "open source" community.

Friends, the Stealth virus has officially hit Pakistan. Me, my friends, and a number of "senior" people I know are living examples. And this virus continues to claim people here, as the awareness grows. And I don't think that I'm referring to "free lancers" here. It's a big term, a super class that encompasses "stealth" programmers too.

And it's about time that this "stealth" community should be consolidated in one place. Because most of these people are best of the best in their fields and passionate therefore well motivated. Several companies in the U.S. made use of this breed in the 80s including Apple Inc. and these companies really owe their success to these people indeed. Entrepenuers here can take a hint :D

ESlavery, The oDesk Experience

The first time I saw oDesk I was pretty excited. I liked their system pretty much at first glance. I thought, "ah ! now here's something that can serve us better !" ... you put in work hours and you'd get paid for it for sure, no chance of being stiffed. However, surprisingly, my experience was quite different. I wouldn't put the blame on oDesk entirely, but about 90% would be justified. Its Just that their system is not friendly for the more creative. Don't get me wrong here, but let me layout my specific experience briefly in points:

1. I didn't have much difficulty in landing a client

2. I wouldn't be that judgemental about the guy, but he did one thing that I still don't understand why. He tried to tell me that $2000 a month is a good salary in the U.S. of A. Naturally, I wasn't that dumb to take his word for it. Coz, most of us live in the U.S. virtually. But I chose not to challenge his false claim.

3. So he did succeed in bringing down my rate, which frankly I did just for the heck of it to try the system out. And of course, I told him that once "we are good" with each other, it was going to go up to my desired mark. I sort of wanted to prove my worth to him.

4. When I started working is when I noticed that I worked about 9 hours and the system logged about 6 or 7. It was eating 2 hours straight ! - so I investigated.

5. Viola ! ... turns out, the oDesk's system calculates your performance based on your "keystrokes" ! ... HOW SMART IS THAT ?

6. Anyhow, I tried to talk to my client, who by the way claimed to be a programmer himself. The guy said, "if the system says you worked 6 hours, you worked 6 hours". I don't know, why he was trying to be an a`hole but at that point I lost all interest. I mean, I am in this line of work because I love doing it, not entirely because of money. So naturally, I asked him to spare me the pain.

So in essence, oDesk's system of performance recording is good, BUT only for jobs like data entry etc. Would you imagine that this guy had me "write" down my brainstorming sessions !! ??? .... how the F*** can you write and brainstorm at the same time ? - if you can, then you have a gift ... really ... you do ! In entirety the experience was really annoying for me. After that, since I had a bad experience associated with oDesk, I didn't bother to look back. And thank God I didn't have to either.

Here is what I ask: ** How can you indulge in CREATIVE THINKING / PROCESS when you know that this time won't be accounted for ? ** so in these regards, oDesk is pathetic ! Heck, check the comments of this post and you'll know how oDesk is **bad** for many buyers too. And futhermore, you can go knock yourself out with this google search.

I won't get myself in the "oDesk haters" category ... BUT ... I would consider my self in "prefer to boycott oDesk" kind. Because if I ever pick up a client on oDesk, I would seriously either BILL him based on different milestones OR make sure that we both trust each other so that I can put in offline time and he would authorize it and won't stiff me. Still, day by day I hear about new improvements on how to *track* the employee. And these guys are really pushing it so much that it really sounds more like slavery, or "eslavery" to be exact. (well said by "O Rover" there)

Common sense demands you don't get lost in all the **goodies** marketed by such companies. These guys promise definite pay to the employees and the supposed "power" to the very insecure employers out there so that they could check their eSlave from as many angles as possible. In the end this creates an environment of distrust if you plan to work with more creative individuals. Because the more creative ones WILL take their time to THINK before acting and more importantly they need their space!

It would be highly unlikely to get an intuitive, extendable app unless there is sufficient trust between the employee and the employer. On the other hand, if the programmer drops out in the middle of the project, the employer still has to pay him / her WITHOUT having their work done. And based on these facts I can never agree that oDesk has brought any innovation and / or revolutionized the way of working. They are just using your insecurities to the best of their own interests.

To balance the sarcasm above, I can only do but one thing, and that is to advise anyone planning out on doing business on oDesk to beware, don't get traped in their warp zone of false promises, but lay out your concerns on the table with the client and try to educate him / her that you both are better off trusting each other more rather than the system. Because seriously, the system will make both of you feel like smart asses and un-decievable. Not true in the real world.

Thinking Patterns - Perfectionist huh ?

I have been noticing this habit of mine lately. So I'm working on some code, basically a component in CakePHP and I find my self really frustrated. Obviously reason is the way it's coded. I don't know why but unwillingly I am judging the Author. I might cook up another post dedicated to that subject particularly, something like the "state of mind" of the coder. Basically any experienced developer can tell what the Author of any piece of code had in his / her priority list when coding something. Anyhow, I find my self *refactoring* the *bad* code even when I'm specifically asked by the client NOT to do that, as in don't spend the precious hours on refactoring. Just get to what you're supposed to do, complete the task and scram! - Well ... I just couldn't help it and I ain't invoicing my client for it too. So bad code ticks me off, that's for sure.

Darn ! now I'm confused :( ... what to make of this ? ... am I a *perfectionist* ? or just too weak to keep myself from the knocking on forbidden doors ? - blast ! since I hold a good opinion about myself so I'm showing the latter two fingers up ! Hell ! ... come to think of it ... "knocking on forbidden doors" is something I've been doing for quite a while :P and I enjoy it too :P

I also notice one other thing. Most "legacy" type coders tend to keep stuff a bit tightly coupled. Whereas I'm always looking for loose coupling. Don't get me wrong on this, I do make use of tight coupling sometimes but it's governed by special circumstances. The whole idea is to make things re-usable, and my idea of re-usable is not just in one application but all.

Since I am ranting on the subject, so I'd like to voice it out clearly today. Though I am not a regular reader of debuggable but I find my self agreeing to most things with these guys. For instance, looking at an example code, one can really sneak into the thinking patterns of the author. I wish I could lay my finger on it, but I wish I could find some sort of metrics that should at least give me 80 ~ 90% correct results of my hypothesis. So far, I do know this (and I'm sure most seniors would agree in the field) that there are two generic classes of people. One who acutally think in terms of **patterns** and others who display traits of **linear** thinking. Linear thinking is good for an abstract approach to solve problems and it gets most jobs done. But in an efficient way ? ... I would disagree on this. This is because I have witnessed a handful of projects failing due to this. Not to forget that most cases were with developers on CodeIgniter ... but these are not the shortcomings of the framework, but because it's non-mvc-strict policy is abused by most programmers. Infact, I've seen developers running towards CodeIgniter just because it's ok with a hack here and a hack there. Heck! I've seen usage of SQL statements in CakePHP's VIEWS ! ... YES ! ... VIEWS !! ... boy was that a sight ! and dear god I don't want to see that again. I won't name, but it was from the students of a school here in Lahore people are so fond of (kind of a status symbol - arrogant bastards they are indeed). So I see this as a culmination of the typical "just get it done" plus "linear thinking" analogy. I just hope we could escape it's evils.

Alright ... so my question still hangs ... am I a perfectionist ? - Well ... I'd say "yeh sort of" - I mean the obsessive compulsive behavior is there, but not to the extent of his level.