Search This Blog

Saturday, January 10, 2009

Professional Coding vs Academic Coding

As usual I will start this post with a caution…

Caution: In this post, all the comments are being made by me(still in college!), an intern at Microsoft who has not written a single line of shipping code till now. All these comments are based on my very very limited experiences. So, don’t take my word for anything. Also, note that I will not be talking about any of the internals and there will be very little or no inside information to be taken from this post. So, now the long rider is over, I can start with the post.

STUDENT MICROSOFT
Hey, wouldn’t it be cool to have this X functionality in the code. Hey, wouldn’t it be cool to have this X functionality in the code.
Will I be able to code this… Let us made a PoC(Proof of Concept) for it.
Start churning code… PoC shows its possible. After Devs, PMs and Tests agreement, it is decided to keep the X Functionality in the code.
Still Churning code… PMs sit down to prepare a spec for it detailing the UI, various scenarios and how the software should respond in various conditions.
Frustrated and impatient quits developing the feature X. One brave dev makes the design for the X Feature in which he tries to make sure that the feature is extensible, testable, modular and all those heavy terms of software Development.
On Google Search finds one cool project on SourceForge which does the same. There is a design meeting in which all the other devs make big holes in the design doc of the developer citing all those heavy terms of software Development.
Very Happy with his find, student goes out to have fun with his friends. Dev Makes some changes and after some iterations the design is finally approved.
Comes back, tries to compile the code and fails. Posts for solutions to this on a hundred forums… (sometimes with a female account) Gets down to coding.
Somehow, gets an answer at one forum and is finally able to compile the code. Coding Complete. Goes out to a senior dev for code reviews.
Finds out that the code is written in some obscure language(read PERL) and has no idea how to call it from his own C/C++ code. After doing some changes finally submits it to the repository. (Note that this happens only after some iterations of changes and mails being exchanged to and fro)
Again does googling and posting on other 100 forums and then goes out with friends. Code submitted to the repository but there is a build break.
Finally gets an answer and is very happy and goes out to enjoy. Comes back and tries to do the exact steps as entailed in the answer and whoa! the code is integrated. Build Break resolved, the X functionality is incorporated in the product.
Now is the time to enjoy… Testers prepare tests scenario which are then approved by the managers.
Shows it to a friend who manages to crash the app in one second. Testers write automated test cases for the X functionality (This test code is actually longer than the code written for X functionality)
Gets down to fixing it. Bugs found and assigned to some unfortunate dev who gets down to fixing it. Actually an assigned bug is shown with a gift icon in the top right corner of the desktop!!!
Fixed and shown to professors who work with it for 5 minutes and approves it. Bugs fixed and this cycle goes on for a lot and lot and lot of time(Read M1, M2, M3, M4 …. Alpha, Beta, Gamma, ZBB etc  etc etc etc )
Enjoy!!! Enjoy!!!

You decide which is better….

3 comments:

  1. The post is nice overview of your experience as an intern at Microsoft.I especially liked the part where you mentioned ask queries on the forums by making female account..If you remember we had this interesting talk back in 4 sem like how people post on forums using female accounts to make sure their queries are replied and that too quickly..And as for to decide which is better i believe both of have their own level i mean when you are in college and you have to submit a project most students tend to use jugaad to make it work as they have a deadline to meet plus you have to manage your academics and lab files but when you are at professional level you cant do that as a lot of things are at stake..

    ReplyDelete
  2. Very "Awsomously" written. And really its very funny sometimes to be involved in both a BTP (Academic style) and Intern (Microsoft style) simultaneously :)

    ReplyDelete
  3. Everything written in the post is 100% true. In college, we start developing something and whatever comes out as our end result, we take it as our target :). Here, targets need to be defined in the beginning and u are committed to fulfil all the requirements discussed no matter what.

    ReplyDelete