Archives
-
Why do we get paid so much?
I was just thinking today about why software developers are typically paid so much more than other people in similar kind of work. One reason might be because software companies generate more revenue per employee as compared with other industries.
Construction or any other engineering discipline is as complex as software, but software is unique in the sense that building software is the easy part, this is very different from the other engg. disciplines where manufacturing is the hard part. Think of construction, It is such an immensely complex task that if you don't know how it's done you'd wonder how anything even stands up. Can you imagine if we had bugs in skyscrapers? But coming back to the point, it means that constructing a building is like building a piece of software with a quality level so high that maybe only NASA can achieve. Then why don't construction people get outrageously high salaries?
The answer IMHO is standardization, the construction industry is so standardized and they have such well-defined patterns that although to a layman a building construction may look incredibly complex, to the builder it's just like putting Lego blocks together.
So that means if the vision of software factories becomes a reality, it would mean that building software would require an architect who would design the system and then junior guys just use standard off the shelf components to build it. Nirvana. Yeah but not for us,[ :)] once that happens the cost of software goes down and hence so do our pays [:)]
So why is that the software industry has not yet mastered component based development, again IMHO these things take time, again look at construction, human beings have been building ever since they moved out of the caves, serious architecture and building techniques have taken thousands of years to be perfected, how old is our industry? about 50 years, so we have a long way to go before we reach the level of sophistication that the consstructuon industry has. Which means that we are safe atleast in our lifetimes. [:)]
Let's speculate a bit more and try to see into the future, so what will be the software industry of the next generation, my guess is bio-tech. Bio-tech is in it's nascent stages just like software was in the 50's and the 60's, but in the next few decades it's going to make a huge huge impact on our lives. And you can be sure that IIT or MIT elite will be opting for bio-tech rather than computers in about 10-15 years.
-
Cool sites discovered using Spiderous
Spiderous is a site that aggregates popular links from social bookmark managers like del.icio.us , spurl and furlHere are some great links I found todayTabs on your webpage using CSSLike to build your own systems, check out this article on advanced system buildingColor Scheme generatorFree Menu designs using CSSFade anything technique for web pagesThe state of the scripting universeA+ Freeware
-
ADO.Net connection pooling
Connections are precious commodities, and writing code to minimize the stress on the server of having too many connections open concurrently will help with overall database performance. Fortunately, ADO.NET (like its predecessors) tries to help manage those connections with a facility called Connection Pooling. Connection Pooling is the process of managing connections as shared resources that can be doled out from a pool of recently used connections. Connection pooling takes advantage of the fact that many different parts of most applications require connections for a short amount of time as well as the fact that building and tearing down connections is an inherently expensive operation. Connection pooling is a method of reusing connections. The real magic occurs when connections are closed, because the pool hangs on to the connection for some short time (the pooling timeout) before actually closing the connection. If another connection is requested before that short amount of time has elapsed, it hands the open connection to the requestor. This saves the actual work of tearing down the connection and opening a new one. By utilizing connection pooling, you reduce the likelihood of making a round trip to the database only to find out that the database is out of connections. The connection pool reduces the time it takes to determine the out-of-connections state. In fact, with the connection pool, the additional requests can block to wait for a new connection to be available. This allows a machine to throttle its actual usage of the database so as not to swamp a particular database server with requests.
-
Notes from Webchat on serialization in .Net
Serialization in .Net
-
Using spiderous to discover cool sites
Once I started using del.icio.us for managing my bookmarks, I came across this site called spiderous which aggregates popular and new bookmarks from sites like del.icio.us , spurl, furl and a couple of others.
-
Excellent article on how to start a startup
Paul Graham who has written an excellent article on how to start a startup. He is also the author of a great book called Hackers and Painters, a definte read.
http://www.paulgraham.com/start.html
-
Load event gets fired on each call to ShowDialog()
While chasing down one bug in my custom message box at codeproject I came acorss an interesting fact. If you use ShowDialog() to show your form then the Load event gets fired everytime. I've been using Winforms for such a long time and was surprised that I had never really come across this behaviour.
It's not a bug, if you use reflector and take a look at Form.ShowDialog() you will see that the flag which is used to prevent Load event from getting fired more than once is disabled everytime ShowDialog() gets called.
-
How to hire Programmers
There is an interesting article on Artima on how to hire programmers. The forums where the article is being discussed has some cool ideas too.