Eat like a bird and poop like an elephant

Filed under: , , , by:

This blog is not about eating, so for those who have never heard that saying, it comes from Guy Kawasaki’s book “Rules for Revolutionaries”. It basically means that one should consume as much knowledge as a bird eats (which is even 50% of its body weight) and should share (poop) that knowledge with others. This prompted me to start my blog where I could share the things I experience while working with Microsoft technologies (.NET, ASP.NET, C#, VB.NET, Ajax, WCF, WF, WPF, etc.) and Database technologies (Oracle, SQL, DB2) with other people and maybe this way help them better understand those topics. From almost 2 years I have been studying for various Microsoft certifications so I have been doing a lot of labs and exercises and I have been reading many books so this blog will be a place where I can also share the things I have learned and that have my life easier as a .NET developer. Another reason for this blog is the thing that I have noticed, while working with many other software developers and also with software written by other developers, that in order to solve a problem people use techniques they know instead of providing best quality by choosing the most efficient way. Many developers don’t have times to learn new things or they don’t simply want to learn those things, so they end up doing stuff the old way or the only way that they know.
Examples:
I have worked with many ASP.NET applications and I have never seen anybody that would use either asynchronous pages or asynchronous handlers and yet their pages either load images or data from database or do any other consuming operations that could be done in asynchronous fashion.
I remember I worked with Windows Forms application written by other developer that was running about 40 queries to get data from database to populate Word document that would be returned to user as a EOB letter. It took the application about 3 minutes to accomplish that task and there was no asynchronous processing whatsoever. User had to wait 3 minutes to get 1 letter where tens of them had to be generated every day. The whole application was blocked during that process so user couldn’t do anything else in the application. Only if that developer had read or learned about BackroundWorker, MARS (Multiple Active Result Sets), BeginExecuteReader, EndExecuteReader, WaitHandle, ParameterizedThreadStart, etc. this situation would have never taken place and the client wouldn’t have been so ticked off and I wouldn’t have had to redesign the whole engine/module of generating letters.
I have talked and worked with many .NET developers but I have met maybe a couple that buy and read technical books, read .NET blogs regularly, some of them have their own .NET blog, and belong to some user group. Unfortunately, I have met ever fewer developers that were interested in doing certification. Some people say they don’t need certification to their job. True. Having a certificate doesn’t make you a better developer. However, the knowledge that you must obtain and hours of hands-on-labs in order to pass exams guarantee that you are a professional developer and make that you can do your job efficient and be focus on solving problems rather than thinking how to do certain things.
Example:
Please ask any .NET developer what are the different ways to consume a Web service (asmx) from .NET applications and see if any of them mentions that there is wsdl.exe (Web Services Description Language) tool that you run from Visual Studio Command Prompt to generate a proxy class. Most of them will only know “Add Web Reference” or “Add Service Reference”.
For me studying to exams and reading blogs and msdn shows me that there is usually more than 1 way to do the same thing, and sometimes 1 way is more efficient than the other or if 1 way fails, I can always solve the problem. The catch is that you need to know the other ways. Every time I study to new exam I find something new or something exciting. Usually those are totally new things like Entity Framework or something that I have never had a chance to use (Parallel Activity in Windows Workflow Foundation or keyed hash algorithm HMACSHA512) and usually I realize that if I had known those thing earlier, I wouldn’t have used them in order to improve quality, security or performance. That’s why I started this blog so I can share about new exciting things I learn and things I see that most developers struggle with or don’t know (ie. settings in <runtime> or <processmodel> configuration section of web.config or machine.config files).
But what truly prompted me to start this blog and write this entry was the information I found during my daily reading at the following site Developer Thrive, where you can learn what skills developer need to thrive. Hopefully, the following vide will explain better the intention of this blog and the title of this entry. And maybe it will encourage you to start your own blog. Enjoy!


0 comments: