Saturday, April 10, 2010

What I am studying these days

So this one's about some key stuff that I am studying these days. I think I will maybe try to write some short posts summarizing some very specific stuff. I plan to write very brief summary of topics in these things (statistics, machine learning, multi-threaded programming, algorithms), as you have better sources than me to learn them. More importantly, I would like to write my experiences and things that occurred to me during my study.

I have been studying the following stuff lately :

  • Statistics : My aim is to gain a good solid understanding of machine learning (aka statistical inference). I am educating myself these days in the basics of statistics (and probability, I plan to write something soon in next posts on this). More importantly, I am trying to practice the problems and get a good intuitive feeling. I guess its pointless to go for advanced statistical methods and models, unless you have a good grounding in the basics. I am reading from the awesome book named Statistics, by Freedman, Pisani and Purves. This book doesn't have a lot of equations and that kind of stuff but its an awesome book in that it teaches you to think like a good statistician. Lots of case studies, interesting problems and nice cartoons :)

  • Concurrent Programming : using Java, that is. Now, I have read a lot of stuff how Java is not so good for it, but I still think that Java has one of the best support for concurrent programming. I am studying from two books : Java Concurrency in Practice (Doug Lea, Josh Bloch et al) and The Art of Multiprocessor Programming (Herlihy, Shavit). JCIP is a book that builds upon the framework supplied by Java while TAOMP also goes into the very core of how this framework is built (how these building blocks and synchronization primitives are built themselves, the algorithms and data structures). I try to code both examples showing the correct way and those showing flawed methods, and see the truth for myself. It really helps to clear things up, and build a good understanding. I am trying to get as good as I can as the future is going to be based on multi-core and not many programmers understand it enough to develop good multi-threaded software.

  • Algorithms : Well, this one's the usual thing but you need to keep revising, practicing and learning new ones. It always helps to be good at algorithms. Sometimes, you can suddenly recognize a situation that is perfectly fine to apply certain algorithm, if you keep in touch with algorithms. It feels really satisfying when you can solve something like that, and also inspires your co-workers to do some of their own study. Spread the word !


That's it for now. I hope to come back soon and write about some interesting cool stuff.

We need better managers in Indian software industry

I decided to keep writing on my blog and write frequently. However, its been really difficult to stick to that decision because of the constant and huge amount of work that keeps coming up and is definitely on a higher priority. I will keep trying though :)

One of the things that I have been fed up with in the past few months is how it seems like this "disease" is spread almost in the whole of Indian software industry. The disease is : bad managers.

Some of the traits I can gather about these managers are :

  • they have lost touch with programming and hence lost respect among developers. In more worse situations, they are complete 'fuck-ups' with really poor programming skills. And still they choose to show off their "knowledge" at times ! seriously, you bastard !

  • they keep using these buzzwords, business jargon too much. I am fine with the fact that you choose good words to express yourself, but if you overdo it you sound like an idiot, show-offish guy. And the developers get pissed off and the natural reaction is "Fuck off you idiot! you are screwing my precious time".

  • they don't understand that they need to trust good developers and encourage them, and moreover prevent less skilled ones coming into the team.

  • they are too servile to foreign colleagues. This is so disgusting ! I mean c'mon you assholes, we are a free nation now, we work for them, we aren't their slaves !



I feel a lot of this is because of the way Indian software has been evolving since its inception. We started out as a cheap outsourcing destination, then services industry and now there are some people bringing in the product development aspect. As we have more and more product development and skilled programmers rise up the chain, we can expect things to change. I am not very sure about this but I hope it happens :)