Archive for January, 2011

While in America, do as Americans do

January 28, 2011 Leave a comment

Yes, among the many experiences I had in US, I also had the experience of saying good bye to my client (or vice versa) in a flat 15 minutes 🙂 We desis (unless we’ve been in US for some time) are not used to it with all the 2 months and nowadays the ridiculous 3 months notice periods, but that was it, typical US style.

Categories: General

Thank You, Microsoft.

January 6, 2011 2 comments

Dear MS,

You were THE most important ingredient of my professional life and career since April, 1998. After quitting sales in frustration because of lack of decent paying jobs coming my way (courtesy an MBA from a nondescript college), I started preparing for CDAC on my friends’ computer, which, if I am not wrong, had a pirated Windows 95 on it (as was the norm in India, back then – even now the situation might have changed slightly). Thankfully I cleared the entrance and completed the whirlwind 6 months course, in which, I just got an overview of so many things (RDBMS, VC++, VB, Java, C++ etc.) that I was good at nothing. Not to mention, the whole curriculum was completed on machines with Windows loaded on them. Finally I landed a job (in March 1999) where I was supposed to write code in VB6 (and VS 6). Unsurprisingly, I was CRUDifying (writing UI for entering data, with some logic) some business process and the UI was a desktop application (RICH clients) 😉

For the next 3 – 3 1/2 years, I was doing the same thing (though in the meantime, I got the dream chance of going to The Land of Opportunities, twice on a business visa). But by then Java had arisen and was giving you a run for your money (for programming language use and programmer mindshare) – and I was suffering the same fate at the hands of recruiters – by mid to end of 2002, there were hardly any jobs for VB6 – first because of the Java onslaught and second because you came out with .Net and C#. Not just that, but in the interviews, I, and presumably, most VB6 programmers, were being asked questions about internals of COM and I knew hardly more than IUnknown and IDispatch – not my fault, I was not a VC++ programmer so how am I supposed to know the internals (when VB6 shields me from them)? To add insult to injury, VB6 programmers like me didn’t command any respect from other (high profile – Java, C++) programmers – oh VB, it’s not even an OO language – no inheritance…

Enough was enough for me. In the past, I had tried a lot (in vain) to get into a Java project, but couldn’t. Thankfully I got a chance to get interviewed for a .Net project, and by that time, I had read something about .Net and C# and obviously I didn’t want to do anything with the words V B so I bought a C# book, divorced the company which was forcing me to remain married to V B, studied .Net and C# by myself and landed a job in C# (using VS 2000) – writing, once again, RICH clients 🙂 However, this application was getting stock market data from Reuters servers and we were just displaying it nicely – but it was a refreshing change for me – no RDBMS wow – and then I wrote another small application where the front end was Excel which was fetching data using a C# DLL…cooooolll…

But all this while I worked for software service provider companies, where managers and most colleagues derived some super-strange pleasure (unknown to me) by working overtime, and expecting everyone else to follow the norm. I was getting thoroughly frustrated with software as a career and used to wonder what should I do next and how many companies will I have to change – but then I got an opportunity to work in the offshore unit of a product based company and I happily worked for more than 3 – 3 1/2 years in this company – writing, guess what, RICH clients 🙂 first in VS 2003 and then in VS 2005 (using C#, all the time). I wrote a couple interesting applications – a code generator which used to generate PL/SQL code for SQL Server, Sybase and Oracle (but the client was not ready to use NHibernate ;-)) and compiling a code using C# code and generating an assembly and loading it at runtime…

I was also fortunate to work with a team in Miami who used, Castle IoC for their product, but unfortunately we were the only team in our offshore company using these exotic non-MS frameworks for REAL PROJECTS / PRODUCTS – so we couldn’t even ask for any help from our colleagues – and sadly, the project wound up, and with it, most of my chances to find any more meaningful work in that company.

Time for a change!!! I was again in The Land of Opportunities (by virtue of getting an H1 in the lottery) and was in for many of the shocks which only an H1 can give you 😉 – first I worked on a website (yay…thin client, no RICH clients) using Asp.Net, but I wasn’t allowed to use anything which did not come from you (so no open source frameworks), then I worked at a place where at first they allowed me to use anything I considered useful (so I used NH, and Spring.Net for IoC) but later on when they found it hard to find programmers to replace me (because I had to be with the family) they became of the view that even they should only use stuff made by you…so no open source stuff from that point on…

Then I got a chance to work on the next-gen web services framework from you – WCF (Windows Clumsy-cation Foundation) – in which, it was easy to write a few methods which could be invoked over the web – and everything else was complicated, error prone, configuration hell and hard to test. And writing RESTful services was like trying to hold your left ear with your right hand, from the back of your head (sorry I don’t know a fitting phrase) – it is like taking a lots of pain to find a good name for your child (the web method) only to call it GET later (because HTTP calls it Get) 😉

In the same company, I had the fortune of looking at the code for a heavily visited (in a EU country) e-commerce site where – on a single ASPX page, one can find using statements from configuration, to data and to what-not. I also had the good fortune of seeing an assembly where 90% of the classes had more then 90% of the methods – STATIC… 🙂

My final project on H1 was my best so far (because of many reasons) – a very good PM, a very good techie team lead, very good colleagues whom I worked with personally (not in an onsite-offshore setup) which is crucial – I used messaging for the first time (MassTransit), Resharper for the first time (and without Resharper, VS is only half as good, and you won’t believe it until you use it), Moq for the first time (for Mock testing), but here too, the application was, guess what, a RICH client, written in WPF – I didn’t know WPF when I joined the project and now also I know bare minimum of it (and for a change, for the first time in my life, there was a team of talented UI designers who built the UI for us and we were supposed to just fill in the details – read binding).

Now WPF is really powerful for building great looking UIs but it is so vast and has such a steep learning curve that I used to start yawning 5 mins. after I opened any WPF book to read, and in a true MS fashion, applications written in WPF are hard to test – there is no way to see your changes (to the UI)  without actually running the application.

So after working on so many RICH clients, I am finally bored of all things RICH. I am even bored of all things UI. And also –

1) I learnt NUnit but then you gave us MSUnit?
2) I learnt NHibernate but then you gave us (ObjectSpaces, no sorry) Linq to Sql and now EF?
3) I learnt Castle Monorail (which learnt from RoR) but now you give us Asp.Net MVC or MVC.Net?
4) LINQ is cool but functional languages (like LISP) are ultimate.
5) I hate companies who only use stuff which comes exclusively from you and nothing else.
6) Not to mention, I hated your monopolistic ways – bundling IE free with Windows to destroy Netscape, stopping work on future versions of IE, until Firefox scared the shit out of you, your super agreements with laptop sellers who only sell Windows pre-installed (%$#@)…
7) I don’t want to use any pirated OS, IDE or a database (and why should I pay for lesser quality, when a better quality is available for free).

So you see, I accomplished much and earned satisfactorily, because of you, but I am tired of using second hand stuff, and just like I love some of the open source frameworks, it’s time to show some respect to open source and embrace it fully – so even though I paid Windows tax (when I recently bought a new laptop with Win7 home premium installed on it), I uninstalled it and installed Ubuntu 10.10 with fearful heart (yes, it’s difficult to get rid of the old habits). There are some small issues with Ubuntu but that’s fine. I also have Emacs and Lisp installed on it, and finally I hope to move on to Clojure (and JVM).

So thanks for this long association and good luck to you and me on this new year.

New year, new commitments, new ways….AMEN.

Good luck (take care and be watchful),
Another .Net defector.

Categories: Programming