Showing posts with label software engineer. Show all posts
Showing posts with label software engineer. Show all posts

Monday, October 8, 2007

Lesson 28: And Dijkstra says...

"The average customer of the computing industry has been served so poorly that he expects his system to crash all the time, and we witness a massive worldwide distribution of bug-ridden software for which we should be deeply ashamed." -- Prof. E.W. Dijkstra, from The End of Computing Science

Hello Readers,
Again, profusely apologise for irregular (read non-daily) updates, as stuff at work demands more attention and of course, laptops being laptops, mine has decided to behave more like a temperamental boyfriend (who needs to be dumped). And yes, talking laptops… this post is contributed by our new contributor Useless Banter. She, in her own words, is a computer scientist and NOT a software engineer. (Smiles)
So here we go, something different, something technical and something that she reworked twice. The mention of algorithms gives me heebeegeebees. Also, thanks to Useless Banter for shifting the links-to-follow at the end of the article instead of punctuating the text with links. Do read those, quite interesting… even to someone who has been way scared of vectors and algorithms since class 11! Happy reading. Also, for those contributing articles, please remember: Short sentences make for far better and easier reading than rambling sentences that run into four lines. Also, Useless Banter’s copy was the most spelling-error free. Do run a spell-check on your files before sending me; I will still check for spelling errors, but a little help from you greatly reduces boring editing. I do it for a living, you know, so would LOVE to not do it here.
_____________________________________________________________
Here is what Useless Banter has to say:

A recent article on The Indian Shitizen about the Great Indian Software Engineer who is really the "Bechara Software Engineer" got me into some serious soul searching. That, combined with influences of some of the recent lectures of the professor teaching my Advanced Distributed Computing class, made me think: Why not put my "higher" MS degree-education to some use, and look at this problem – like a good scientist would – from a research perspective.

So although I agree to most of the things said about the people encompassed under the umbrella of "software engineers" in the article, myself included, I would like to conduct myself in the spirit of a true Computer Scientist. Basically, it means I would like to tie this discussion to a more interesting and perhaps more productive analysis by turning attention to the question of: "What real value can software engineers bring towards ensuring mature thought processes in problem solving?" (Think "algorithms"!!!....)

Basically, what role can Software Engineers (ugh!! I hate that term, so shall stick to the personally-preferred ‘Computer Scientist’) play, in inventing novel approaches that can solve fundamental problems in any scenario? Say, even one such as making an underdeveloped nation wrought with problems, become an efficient developed nation?

As its most preliminary steps this process actually involves a lot of reading between the lines, quality research and a special genre of laziness. Yes, a laziness that can effectively cause sharp research minds to come up with elegant solutions and novel ideas such as the shortest path algorithm [2][3]. For this, even if we have to change our education system, which is currently engaged in the task of producing ‘clones’, then so be it. We shall have to be lazy enough to reject the ‘standard’ paradigms given to us, and create an education system that teaches people to be truly lazy, i.e. by "inventing".

Will sign off with this quote, as food for thought, from a paper by Dijkstra [4] (in which he presents his views on the flaws in Computer Science education. Nevertheless, it has a lesson about education in general, so it is a must-read):

"The usual way in which we plan today, for tomorrow, is in yesterday's vocabulary". -- Prof. E.W. Dijkstra

We need just a few hundred people in the nation from our vast pool of software engineers that think like Dijkstra[1]. Are the computer scientists listening?
Best,
Useless Banter

PS1: My contribution as a bechara software engineer towards this end: Pledging that I will not be bechara any more. I will (at least try to) get a PhD degree that advances a computing concept, and start a personal venture that provides a tangible solution while providing employment to others, or even a revolution if you will, and not just be happy to take up an offshoring job with a multinational. What's yours?
PS2: Next lesson - Distributed Computing (read "Effective Management of Distributed Resources")

References:
1. Edsger W. Dijkstra
2. Shortest path problem
3. Dijkstra's algorithm
4. Dijkstra's views on Computer Science education and his rant on the irony presented by "radical novelty" (hand-written) / (transcribed)
Appendix 1 - What computing science is about
Appendix 2 - Dijkstra's "EWD" series

Tuesday, October 2, 2007

Lesson 25: Bechara Software Engineer?

Contributed by Citizen Mohit (do read his blog for the complete, unedited text)

There is a very old joke about Bangalore that a friend of mine told me the day I reached Bangalore for the first time after its new found status of India’s IT Capital. It goes like this (told in Hindi first for maximum impact):

Bangalore mein kuchh Chaalees Hazaar (40,000) kutte hain; Itne hi kareeb software engineer hain. Sadak par ek patthar utha kar maarogey to ya to kutte ko lagega ya software engineer ko. Aur Kutte ke galey mein patta ho ya nahin, software engineer ke galey mein jaroor hoga!

(Bangalore has about 40,000 dogs; about the same number of software engineers. If you throw a stone randomly, chances are, it will hit the dog or the software engineer. While the dog may or may not have a strap (a.k.a. leash) around his neck, the software engineer will definitely have one.)

Alright, the half of you can stop laughing now. The other half are of course, the software engineers.

While there are no official figures to support this (meaning I have not researched), I can safely say that more than half of the current youth does something that can be slotted under the title of ‘software engineer’. If you are not a software engineer, there are all chances that either your brother or sister, or your spouse or your best friend or your neighbor or someone else you know closely is on.

It’s funny. What started out as a profession that needed a whole lot of technical expertise, was supposedly ‘niche’ and somewhat glorified, has now become as mundane as any other profession, or most other once-upon-a-time-talked about professions. And not just mundane, it’s become one of the most accursed jobs to have as well. In a way, the software engineer of today is what the babu of the English government was, back in the pre-independence era.

For one, most of a software engineer’s hard work, his day’s energy and all his knowledge goes into productive work (mostly) for the United States (or some other country). His only contribution to the country is the tax that he pays (which is a significant amount) but no one cares for something that you do once a year and that too just a day before the extended deadline. But there is no satisfaction value to his hard work; he is not like his Airtel or Reliance engineer friend who can boast of working to increase the country’s communication bandwidth.

Not like his stock broker friend who invests in the local stock markets (even though he might be working for a Franklin Templeton); doctors, of course, have that halo value; journalists can boast of reporting corruption; even a management professional working for the countless multinationals that have made their way into the country learns stuff about the local market because local is how he deals. But the software engineer learns everything about the US industry but ZILCH about the corresponding Indian industry. He may know loads about the US insurance industry but how things work in the Indian market are quite different.

It started as an esteemed profession (it still is, but a tad too common). Everybody and their bagal waali aunty ka ladka (neighbor’s kid) worth their “Hello World” program wanted to be a software engineer. The charm of sitting on a cushioned chair, complete with the ergonomic works, in an air-conditioned office, the potential of getting the Gurgaon flat (or the Bangalore, Hyderabad or Chennai flat, consistent with your geography) along with the Tata Safari as ransom, oops, dowry, an overall enhancement in the family status, the not-so-proverbial but very filmy samaaj mein gardan oonchi (high status in society) and the ultimate dream of flying “abraawd” (which, for a desi, means any country apart from Nepal, Pakistan, Bangladesh, Bhutan, Burma and Sri Lanka) was just too much of an opportunity to overlook.

And thus started the revolution that would take India from the spiritual tourism pages of the Time magazines to the business section and even the cover story. Young college pass outs left their hometowns for their dream jobs in often far away cities. But is it a Dream Job?

In these far off big cities, the software engineer is no longer looked at as the nice kid who made it from a humble background; he becomes just another bachelor who only rents apartments to cast an evil eye on the landlord’s daughter, or the neighbor’s young wife or to cook non-vegetarian food in the vegetarian landlord’s “pure” house. He also has a tough time with auto drivers; now auto drivers can anyway be a pain; but when they see these 20-somethings with loads of cash, they often hear stuff like “you have taken away our jobs coming from other states”.

Sky-high rents are another reality that becomes a reality only when he gets married.

And if you want to see the software engineer, where do you go? His office is a good answer but you won’t be allowed to enter his actual office area these days with the security arrangements such that I cannot go to my friend’s seat who works for a different client because my tuin-tuin card does not have the access for that bay. Well, so you go to the malls. Those people that you see all over the mall; some sipping their CafĂ© Coffee Day some-difficult-to-pronounce-ccino; others waiting in the multiplex line ready to dish out close to a grand for a movie for two (with popcorn and Pepsi, large please).

And is that enviable chance at a life abrawd really that enviable? The Software Engineer neat stuff all around him but does not buy it because he is there only for a year or two; to save for a lavish lifestyle that everyone expects him to have back home. So, he settles for a lifestyle quite opposite to what he had back home. While he shops only branded stuff from the best shops in India, he is always on the lookout for ‘deals’ and sales announcements and buys the cheapest stuff without caring for a brand name in the US! Not to mention the weird looks he gets from all the natives for taking their jobs away. A few “lucky” ones have seen protesters at bus stops with signs saying “I was Bangalored” and “Say No to Offshoring”.

In a way, it seems that the software engineer of today is what the babu of the English government was back in the pre-independence era. The babus joined the British government in a hope for a good job and a prosperous life for their family. They did their work and even though a large section of the population would have lived off servicing that class, they were often considered as people who just wanted to make money by turning towards the tide. A large section of the youth turns towards software jobs today because that is the area where the largest number of jobs is.

Does that make The Software Engineer a selfish lot? The kind that works for itself and does nothing? (And which is the Other kind of people anyway?) So the abroad-going-software-engineer population is rising (and perhaps not with much returns for India) and so are the numbers who don’t get a basic meal a day. Both are realities of today’s India. I know that the software engineers definitely want to see their country progress. There are small ways in which the software engineers can help the country – even while you spend most evening tracking your Twitter account.

Like making government offices and services tech savvy. Or even teaching your mom the basics of the internet to make banking easier.