<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sankofa &#187; Job</title>
	<atom:link href="http://blog.ianuy.com/tag/job/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ianuy.com</link>
	<description>From Script Kiddie to Professional Software Developer</description>
	<lastBuildDate>Fri, 31 Dec 2010 17:42:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>On the High Turnover Rate of Software Developers or How to Retain your Best Software Developers and Programmers</title>
		<link>http://blog.ianuy.com/2010/09/26/on-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers/</link>
		<comments>http://blog.ianuy.com/2010/09/26/on-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers/#comments</comments>
		<pubDate>Sun, 26 Sep 2010 11:10:40 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Programmers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=943</guid>
		<description><![CDATA[
 It is not exactly news that programmers love to quit their job. It is an industry-wide obsession. The annual turnover rate for the High-Tech industry in 2008 is a little bit above 20% (2 out of 10 employees quit every year). A typical programmer on a typical software company stays for about 23 months [...]]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.ianuy.com%2F2010%2F09%2F26%2Fon-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:70px;" allowTransparency="true"></iframe><br />
<a href="http://blog.ianuy.com/wp-content/uploads/2010/09/resign.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="_resign" src="http://blog.ianuy.com/wp-content/uploads/2010/09/resign_thumb.jpg" border="0" alt="_resign" width="278" height="278" /></a> It is not exactly news that programmers love to quit their job. It is an industry-wide obsession. The annual turnover rate for the High-Tech industry in <a title="Turnover data collected by CompData" href="http://compforce.typepad.com/compensation_force/2009/03/2008-turnover-rates-by-industry.html" target="_blank">2008</a> is a little bit above 20% (2 out of 10 employees quit every year). A typical programmer on a typical software company stays for about 23 months on average. For an employer, these figures are scary – especially if you employ skilled workers such as programmers and software developers. High turnover rates of skilled professionals can pose as a risk to the business or organization, due to the human capital (such as skills, training, and knowledge) lost.</p>
<p>Having been a newbie software developer (and I’m still fairly “new”), I did not understood why software developers in our company are quitting. Having been a fresh graduate, I was, then, still amazed by the fact that there are people out there in the real world that will pay me real world money just to write code – a hobby that I will do for free. I was puzzled. We are working in an environment that fosters creativity and innovation, a company that strictly subscribes to the “<a title="Thou shall have two monitors!" href="http://www.codinghorror.com/blog/2006/08/the-programmers-bill-of-rights.html" target="_blank">programmers’ bill of rights</a>”, and a company that scores high in the <a title="Hell yeah, we use souce control. Who doesn't?" href="http://www.joelonsoftware.com/articles/fog0000000043.html" target="_blank">Joel Test</a> (11/12).  Those, plus the fact that we can surf Facebook anytime and drink all the brewed coffee in the pantry, made me believe that this is the best company to work for locally; it made me believe that anyone leaving our company is insane.</p>
<p><a href="http://blog.ianuy.com/wp-content/uploads/2010/09/1783Hackers_and_Painters_Big_Ideas_from_the_Computer_Age.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="_1783-Hackers_and_Painters_Big_Ideas_from_the_Computer_Age" src="http://blog.ianuy.com/wp-content/uploads/2010/09/1783Hackers_and_Painters_Big_Ideas_from_the_Computer_Age_thumb.jpg" border="0" alt="_1783-Hackers_and_Painters_Big_Ideas_from_the_Computer_Age" width="159" height="242" /></a> Just a few months after starting my job (I had my internship there for 6 months), one of the <strong>bestest</strong> programmer I know (he’s actually a “software architect”, but hates being called one), my mentor when I was still an intern, filed his letter of resignation. This guy is one of the most passionate programmer I know. He gets it. <a title="Hackers and Painters" href="http://blog.ianuy.com/2009/09/17/ordinary-programmers-vs-great-hackers/" target="_blank">Paul Graham</a> classifies him as a hacker and he actually worked for Microsoft (in Redmond, not the local whatever-they-are-doing-there branch).</p>
<p>For some, asking people why they quit their job is taboo; I actually enjoy having those type of conversation. Gives me insight. So I asked the fallen hacker, “<strong>Why did you quit?</strong>”. He pointed to the picture of his new born baby (his desktop wallpaper) and said with an enthusiastic smile “<strong>He is my new priority</strong>”. He then explained to me, in a fashion that I would understand, why working overseas means “better opportunity” for his family. Being a bit unconvinced with his explanation, I asked him “<strong>Is that all? Better opportunity</strong>?” and he replied back with a playful smile, “<strong>In my new job, I will be able to code again. I will no longer be a ‘Word Programmer’”</strong>. He has always joked about being a Word Programmer – programming in Microsoft Word using narrative texts (use cases, scenarios, etc) and <a title="Those documents with boxes and lines and tiny little captions" href="http://en.wikipedia.org/wiki/Unified_Modeling_Language" target="_blank">UML diagrams</a>; programming by story telling. He was indeed a hacker.</p>
<p>Having spent a year and a half on this job, I can say that I now have a vague idea on why programmers (or I.T people, in general) quit. Even though I’m only a year-and-half year old in corporate servitude, I had been handled by four managers and had been transferred to four teams and that gave me great insights on the crucial dynamics that affects employee turnovers. In my year-and-half stay, I have seen three managers, a project manager, two architects, four senior developers and a handful of intermediate developers go. Just a few months ago, four of my teammates left. The statistics above is a little off; <strong>it is more than 20%</strong>.</p>
<p><span id="more-943"></span></p>
<h1>So why do programmers quit?</h1>
<p><a href="http://blog.ianuy.com/wp-content/uploads/2010/09/twofactormodel.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="_two-factor-model" src="http://blog.ianuy.com/wp-content/uploads/2010/09/twofactormodel_thumb.png" border="0" alt="_two-factor-model" width="459" height="341" /></a> There are a lot of <a title="Models of Turnover" href="http://en.wikipedia.org/wiki/Turnover_%28employment%29#Models_of_turnover" target="_blank">models</a> that scientifically explains turnover, but most of them does not really cover the programmers psyche because most of them are written three decades ago. These <a title="Two factor theory" href="http://en.wikipedia.org/wiki/Two_factor_theory" target="_blank">models</a> are not exactly wrong; they just don’t capture how programmers think and react.</p>
<p>So let me present to you my model. Let’s call it the Programmer Turnover Model. There are only two controlling variables on this model: <strong>Opportunities</strong> and <strong>Grievances</strong>. When these two factors achieve “equilibrium” (fancy word eh?), the employee will finally pull the trigger and call it quits. Seldom do I see or hear that a programmer quits just by one of these controlling variables; <strong>it is usually a combination of both</strong>. But it is not unheard of that an employee quits just because of opportunities or grievances: If you’re boss is verbally abusing (Grievances) you everyday, that is enough reason to quit.</p>
<h2>Opportunities</h2>
<p><strong><a href="http://blog.ianuy.com/wp-content/uploads/2010/09/grassgreener.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="_grass-greener" src="http://blog.ianuy.com/wp-content/uploads/2010/09/grassgreener_thumb.jpg" border="0" alt="_grass-greener" width="349" height="286" /></a> </strong><strong>Opportunities</strong> are the voice inside us that always yells “The grass is greener on the other side”. It is the greedy side of the human emotion. It is the human emotion that seeks larger paychecks and better benefits.</p>
<p><strong>Programmers have all the incentives in the world to quit</strong>. In fact, if you want to suddenly increase your salary, all you have to do is quit your job and find another one. A 25% increase in salary between job hops is typical. In fact, most local programmers do it. You don’t even need to be highly competent to do this; you just need to impress the interviewers and pass the interview. In an industry that caters to outsourced work (typically boring business systems) and software maintenance jobs, the bar that is being set is not that high (not “Google high”). Fact of the matter is, most grown-ups (including my mom) advice I.T. workers to just “get a few years of experience and switch jobs”.</p>
<p>Local industry culture believes that the sooner you get overseas, the better it is for you. Those programmers that work or have worked overseas are perceived to be “successful”. And what better way to increase your chance working abroad than to beef-up your resume with “experiences”? Not only that you get larger paychecks and better benefits when hopping jobs, you also <strong>get a set of fresh credentials to put into your resume</strong>. When you work for a single company, you’re stuck with their technology. And in an industry where your skills are obsolete within five years (max), being stuck in a technology is a really really bad thing for you.</p>
<p>It seems that the game is rigged for the employers. Employers are nearly powerless in stopping the greedy side of human emotion. Aside for paying large sums of cash to these spoiled programmers, they incur the risk of losing expensive human capital. All hope is not lost, the human emotion provides some form of protection against job hoppers. The loving side of the human emotion.</p>
<p>A few moments ago, I made it sound that it is so easy to job hop. Well, it is for soulless programmers (and about half of programmers are). But programmers are human too and they possess some of that soft, caring, vulnerable human emotion. People just don’t quit their job out of greediness. They are attached to their officemates, they been used to the smell of that particular brand of brewed coffee in the morning, they love how their $5 dollar computer chair squeaks when they lean back while waiting for their programs to compile, they love those once-a-month company parties, they know their way into their programs and they’re quite competent in it, they love to see their crush on the opposite cubicle, they are considered the domain expert inside the department. <strong>Humans resist change because attachments are hard to break.</strong></p>
<p>It is painful to leave a company and that is what stops most people to quit their job even if they know that there are better opportunities out there.</p>
<h2>Grievances</h2>
<p><strong><a href="http://blog.ianuy.com/wp-content/uploads/2010/09/ihatemybossbutton.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="_i-hate-my-boss-button" src="http://blog.ianuy.com/wp-content/uploads/2010/09/ihatemybossbutton_thumb.jpg" border="0" alt="_i-hate-my-boss-button" width="235" height="247" /></a> </strong><strong>Grievances </strong>are the devil’s advocate that whispers “Stop taking this sh*t and quit”. <strong>Opportunities </strong>provide all the incentives in the world to switch jobs and although the touchy human emotion tells us to stay because it is painful to leave, grievances makes it justifiable and easy to quit.</p>
<p>Grievances builds up over time that’s why it’s hard to avoid it. It stacks up high. Each person have a certain threshold on how high they can keep their grievances stack before it falls down and crumble (translation: Each person can only take so much bullshit).</p>
<p>There are many forms of grievances, but all of them contributes to the metaphorical grievances stack:</p>
<ul>
<li>My company is still coding in Cobol when there are better technologies available.</li>
<li>We don’t have source control.</li>
<li>My boss is a back-seat driver. His hobbies are micromanagement and micromanagement.</li>
<li>The elevator takes forever.</li>
<li>The air conditioner is too cold.</li>
<li>The code base is so poorly written that it breaks in 27 different places when you add a single line of code. The previous developer maintaining the code base is a literal arts major.</li>
<li>We are responsible for testing our own code.</li>
<li>My teammates are bozos.</li>
<li>I hate my project. It’s not fun and exciting. It’s grunt work.</li>
<li>I have written just 150 lines of code in the last 2 years.</li>
</ul>
<p>Grievances have many forms but grievances are simply things that gets listed down in the “I do not want” column of your employees checklist.</p>
<p>The good thing about grievances is that managers and employers can manage and control them. Unlike <strong>Opportunities</strong> where employers are powerless, Grievances can be managed and controlled. It’s not easy but it’s doable. And the first thing that needs to happen is <strong>communication</strong>.</p>
<p><strong>If you’re an employer/manager working with programmers, understand that your programmers have all the incentives in the world to leave you for better opportunities. Do not make it easy for them by giving them reasons to quit.</strong></p>
<h1>The Price of Turnover in Software Development</h1>
<p><a href="http://blog.ianuy.com/wp-content/uploads/2010/09/mythicalmanmonth.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="_mythical-man-month" src="http://blog.ianuy.com/wp-content/uploads/2010/09/mythicalmanmonth_thumb.jpg" border="0" alt="_mythical-man-month" width="206" height="293" /></a> In his influential book, “<a title="READ THIS NOW" href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959" target="_blank">The Mythical Man-Month</a>”, Fred Brooks emphasized the importance of <strong>Conceptual Integrity</strong> in software design and architecture:</p>
<blockquote><p>Most European cathedrals show differences in plan or architectural style between parts built in different generations by different builders. The later builders were tempted to &#8220;improve&#8221; upon the designs of the earlier ones, to reflect both changes in fashion and differences in individual taste. So the peaceful Norman transept abuts and contradicts the soaring Gothic nave, and the result proclaims the pridefulness of the builders as much as the glory of God.</p>
<p>Against these, the architectural unity of Reims stands in glorious contrast. The joy that stirs the beholder comes as much from the integrity of the design as from any particular excellences. As the guidebook tells, this integrity was achieved by the self-abnegation of eight generations of builders, each of whom sacrificed some of his ideas so that the whole might be of pure design. The result proclaims not only the glory of God, but also His power to salvage fallen men from their pride.</p>
<p>Even though they have not taken centuries to build, most programming systems reflect conceptual disunity far worse than that of cathedrals. <strong>Usually this arises not from a serial succession of master designers</strong>, <strong>but from the separation of design into many tasks done by many men</strong>.</p>
<p><strong>I will contend that conceptual integrity is the most important consideration in system design</strong>. It is better to have a system omit certain anomalous features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas.</p></blockquote>
<p>The conceptual integrity of software is a measure of how well software conforms to a single, simple set of design principles. When done properly, it provides the most <a href="http://en.wikipedia.org/wiki/Function_%28engineering%29">functionality</a> using the simplest <a href="http://en.wikipedia.org/wiki/Programming_idiom">idioms</a>. It makes software easier to use <strong>by making it simple to create and learn</strong>.</p>
<p>Conceptual integrity is achieved when the software’s design proceeds from a small number of agreeing individuals. For software to maintain conceptual integrity, the design must be controlled by a single, small group.</p>
<p>When turnover is high, the conceptual integrity of your product is being sacrificed. And because conceptual integrity is the most important consideration in system design, having bad conceptual integrity will make your product hard to use. This in turn will affect your sales and eventually your bottom line.</p>
<p>Not only will the loss of conceptual integrity of your product negatively affects your sale, it will also affect the morale of your best programmers. High turnover rates induces the <strong><a title="The codebase stinks" href="http://en.wikipedia.org/wiki/Software_Peter_principle" target="_blank">Software Peter Principle</a></strong>:</p>
<blockquote><p>The <strong>software Peter principle</strong> is used in <a href="http://en.wikipedia.org/wiki/Software_engineering">software engineering</a> to describe a dying project which has little by little become too complex to be understood even by its own developers.</p>
<p>It is well known in the industry as a silent killer of projects, and by the time the <a href="http://en.wikipedia.org/wiki/Symptom">symptoms</a> arise it is often too late to do anything about it. Good managers can avoid this disaster by establishing clear coding practices where unnecessarily complicated code and design is avoided.</p></blockquote>
<p>When your project becomes too complex to be understood by your best programmers, they will be naturally be forced to rewrite it. They will go into their manager’s office and ask for a re-write, the manager’s will then disagree because there are no “business reasons” to do so (and maybe they are right because “<a title="Things you should never do" href="http://www.joelonsoftware.com/articles/fog0000000069.html" target="_blank">rewriting is probably the ‘single worst strategic mistake that any software company can make</a>’”), so you’re best programmers go back to their cubicle grumpy and dives into the unmaintainable piece-of-crap that is your codebase. Soon, they quit (because there are better opportunities and you gave them enough reason to leave you).</p>
<p>The managers then instruct their H.R. people to hire a new software developer to maintain the unmaintainable codebase. But since the programmer is new, and inexperienced,  he makes implementation choices that work but have unintended negative consequences. Further degrading the conceptual integrity of your product; making it increasingly difficult to understand. It’s a death spiral.</p>
<p>If there is one thing that the best programmers hate other than maintaining crappy software, it is working with incompetent programmers. And because you have a crappy codebase and you need software “maintainers” to maintain your codebase, you hire cheap, incompetent programmers and that will send you down further in the death spiral. <a title="What Happened to Yahoo?" href="http://www.paulgraham.com/yahoo.html" target="_blank">Paul Graham</a> puts it nicely in his essay “What Happened to Yahoo!”:</p>
<blockquote><p>Microsoft (back in the day), Google, and Facebook have all been obsessed with hiring the best programmers. Yahoo wasn&#8217;t. They preferred good programmers to bad ones, but they didn&#8217;t have the kind of single-minded, almost obnoxiously elitist focus on hiring the smartest people that the big winners have had.</p>
<p>Why would great programmers want to work for a company that didn&#8217;t have a hacker-centric culture, as long as there were others that did? I can imagine two reasons: if they were paid a huge amount, or if the domain was interesting and none of the companies in it were hacker-centric. Otherwise you can&#8217;t attract good programmers to work in a suit-centric culture. And without good programmers you won&#8217;t get good software, no matter how many people you put on a task, or how many procedures you establish to ensure &#8220;quality.&#8221;</p>
<p><strong>In technology, once you have bad programmers, you&#8217;re doomed.</strong> I can&#8217;t think of an instance where a company has sunk into technical mediocrity and recovered. Good programmers want to work with other good programmers. So once the quality of programmers at your company starts to drop, you enter a death spiral from which there is no recovery.</p></blockquote>
<p>Turnover reduces the conceptual integrity of your product. When there is no conceptual integrity, your product becomes hard to use and hard to maintain for programmers. The programmers maintaining the products hate the code so much that they quit. You hire new inexperienced programmers that further reduces the conceptual integrity of your product. You enter into a death spiral and you can no longer attract the best programmers because your <a title="In computer programming, code smell is any symptom in the source code of a program that possibly indicates a deeper problem." href="http://en.wikipedia.org/wiki/Code_smell" target="_blank">code stinks</a>. You enter another death spiral from which there is no recovery. <strong>That is the price of high turnover in software development: You lose your best talents then you lose your product and eventually your company.</strong></p>
<h1>How <span style="text-decoration: underline;">NOT</span> to Retain your Best Software Developers and Programmers</h1>
<p><a href="http://blog.ianuy.com/wp-content/uploads/2010/09/slavery.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="_slavery" src="http://blog.ianuy.com/wp-content/uploads/2010/09/slavery_thumb.jpg" border="0" alt="_slavery" width="280" height="216" /></a> One of the most popular form of “employee retention” is Training Bonds. Although it is not legally enforceable (or if it is but the company won’t really run after you because it is expensive to sue), most bright programmers will never sign a training bond. For most hackers, a training bond is a sign that a company is being ran by “suits”. <a title="NDAs and Contracts That You Should Never Sign" href="http://www.joelonsoftware.com/articles/fog0000000071.html" target="_blank">Joel Spolsky</a> attributes training bonds to “<strong>blind loyalty</strong>”:</p>
<blockquote><p>I think that companies need to keep their employees loyal by <strong>treating them well</strong>, not by enforcing blind loyalty though a contract. I am not going to make the mistake of signing this clause again. Fortunately, with today&#8217;s shortage of qualified programmers, the balance of power today is sharply in your favor when you start a new job, and I think you have a very high chance of getting a job without signing restrictive employment clauses.</p></blockquote>
<p><a href="http://blog.ianuy.com/wp-content/uploads/2010/09/counteroffer.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="_counteroffer" src="http://blog.ianuy.com/wp-content/uploads/2010/09/counteroffer_thumb.jpg" border="0" alt="_counteroffer" width="235" height="244" /></a> Another popular form of employee retention mechanism is <strong>counter-offer</strong>. Counter-offer is when your current employer gives you an offer (counter-offer) that is larger than the offer you received from the company you intend to jump to. Counter-offer is a big no-no because it sends the following message to your employee:</p>
<blockquote><p>We have not really paid you the amount you deserve. But since we really need you to stay, we are willing to pay you more. We don’t think that you deserve this, but our hands are tied.</p></blockquote>
<p>It is much worse when the news of a counter-offer leaks to your other employees. They will also feel that they are not being paid the amount they deserve, they will feel cheated and eventually quit. More turnovers, yay! <strong>Always remember the bribery never promotes loyalty</strong>.</p>
<p><a href="http://blog.ianuy.com/wp-content/uploads/2010/09/incentive_pay.jpg"><span style="color: #000000;"> </span><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="_incentive_pay" src="http://blog.ianuy.com/wp-content/uploads/2010/09/incentive_pay_thumb.jpg" border="0" alt="_incentive_pay" width="164" height="241" /></a> If you think bribing your programmers when they accomplish something extraordinary will increase their loyalty: <strong>you are wrong</strong>. A lot of <a title="Peopleware: Productive Projects and Teams" href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439" target="_blank">books</a> have been written on the subject of <strong><a title="Incentive Pay Considered Harmful" href="http://www.joelonsoftware.com/articles/fog0000000070.html" target="_blank">incentive pay and why it is considered harmful</a></strong>:</p>
<blockquote><p>… <strong>&#8220;incentives (or bribes) simply can&#8217;t work in the workplace&#8221;</strong>. DeMarco and Lister go further, stating unequivocally that any kind of workplace competition, any scheme of rewards and punishments, and even the old fashion trick of &#8220;catching people doing something right and rewarding them,&#8221; all do more harm than good. Giving somebody <em>positive</em> reinforcement (such as stupid company ceremonies where people get plaques) implies that they only did it for the lucite plaque; it implies that they are not independent enough to work unless they are going to get a cookie; and it&#8217;s insulting and demeaning.</p></blockquote>
<p>I know that the title says “How to Retain your Best Software Developers and Programmers”, but I was only able to give the “How NOT to do it” guide. It took me a year-and-a-half to understand what motivates programmers to quit their job. It may take me another year-and-a-half to understand how to motivate them to <strong>NOT</strong> quit their jobs. You may wait for it, or you can just read <a title="Software Development Bible" href="http://www.joelonsoftware.com/" target="_blank">Spolsky’s blog</a> for a complete guide on how to manage and retain the best programmers that you will ever find.</p>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=On%20the%20High%20Turnover%20Rate%20of%20Software%20Developers%20or%20How%20to%20Retain%20your%20Best%20Software%20Developers%20and%20Programmers&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2010%2F09%2F26%2Fon-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2010%2F09%2F26%2Fon-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers%2F&amp;title=On%20the%20High%20Turnover%20Rate%20of%20Software%20Developers%20or%20How%20to%20Retain%20your%20Best%20Software%20Developers%20and%20Programmers&amp;bodytext=%0D%0A%20It%20is%20not%20exactly%20news%20that%20programmers%20love%20to%20quit%20their%20job.%20It%20is%20an%20industry-wide%20obsession.%20The%20annual%20turnover%20rate%20for%20the%20High-Tech%20industry%20in%202008%20is%20a%20little%20bit%20above%2020%25%20%282%20out%20of%2010%20employees%20quit%20every%20year%29.%20A%20typical%20programmer%20o" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2010%2F09%2F26%2Fon-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers%2F&amp;title=On%20the%20High%20Turnover%20Rate%20of%20Software%20Developers%20or%20How%20to%20Retain%20your%20Best%20Software%20Developers%20and%20Programmers" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2010%2F09%2F26%2Fon-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers%2F&amp;title=On%20the%20High%20Turnover%20Rate%20of%20Software%20Developers%20or%20How%20to%20Retain%20your%20Best%20Software%20Developers%20and%20Programmers&amp;notes=%0D%0A%20It%20is%20not%20exactly%20news%20that%20programmers%20love%20to%20quit%20their%20job.%20It%20is%20an%20industry-wide%20obsession.%20The%20annual%20turnover%20rate%20for%20the%20High-Tech%20industry%20in%202008%20is%20a%20little%20bit%20above%2020%25%20%282%20out%20of%2010%20employees%20quit%20every%20year%29.%20A%20typical%20programmer%20o" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=On%20the%20High%20Turnover%20Rate%20of%20Software%20Developers%20or%20How%20to%20Retain%20your%20Best%20Software%20Developers%20and%20Programmers%20-%20http%3A%2F%2Fblog.ianuy.com%2F2010%2F09%2F26%2Fon-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=On%20the%20High%20Turnover%20Rate%20of%20Software%20Developers%20or%20How%20to%20Retain%20your%20Best%20Software%20Developers%20and%20Programmers&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2010%2F09%2F26%2Fon-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2010%2F09%2F26%2Fon-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers%2F&amp;t=On%20the%20High%20Turnover%20Rate%20of%20Software%20Developers%20or%20How%20to%20Retain%20your%20Best%20Software%20Developers%20and%20Programmers" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2010%2F09%2F26%2Fon-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers%2F&amp;t=On%20the%20High%20Turnover%20Rate%20of%20Software%20Developers%20or%20How%20to%20Retain%20your%20Best%20Software%20Developers%20and%20Programmers" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2010%2F09%2F26%2Fon-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers%2F&amp;title=On%20the%20High%20Turnover%20Rate%20of%20Software%20Developers%20or%20How%20to%20Retain%20your%20Best%20Software%20Developers%20and%20Programmers&amp;annotation=%0D%0A%20It%20is%20not%20exactly%20news%20that%20programmers%20love%20to%20quit%20their%20job.%20It%20is%20an%20industry-wide%20obsession.%20The%20annual%20turnover%20rate%20for%20the%20High-Tech%20industry%20in%202008%20is%20a%20little%20bit%20above%2020%25%20%282%20out%20of%2010%20employees%20quit%20every%20year%29.%20A%20typical%20programmer%20o" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2010%2F09%2F26%2Fon-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers%2F&amp;title=On%20the%20High%20Turnover%20Rate%20of%20Software%20Developers%20or%20How%20to%20Retain%20your%20Best%20Software%20Developers%20and%20Programmers" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2010/09/26/on-the-high-turnover-rate-of-software-developers-or-how-to-retain-your-best-software-developers-and-programmers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>High Salary is Killing the Software Industry</title>
		<link>http://blog.ianuy.com/2009/09/14/high-salary-is-killing-the-software-industry/</link>
		<comments>http://blog.ianuy.com/2009/09/14/high-salary-is-killing-the-software-industry/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 16:20:10 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Passion]]></category>
		<category><![CDATA[Salary]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=503</guid>
		<description><![CDATA[If there is someone that I hate more than Ms. Judy Ann Santos, that someone would have to be a person who has a job that he or she is not passionate about.
I don&#8217;t know if it&#8217;s the Philippine economy or just the Filipino culture that makes it &#8220;okay&#8221; for someone to live a life [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_504" class="wp-caption aligncenter" style="width: 281px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/09/Judy-Ann-Santos-Ploning.jpg"><img class="size-medium wp-image-504" title="Judy-Ann-Santos" src="http://blog.ianuy.com/wp-content/uploads/2009/09/Judy-Ann-Santos-Ploning-271x300.jpg" alt="Judy Ann Santos - Philippine Superstar" width="271" height="300" /></a><p class="wp-caption-text">Judy Ann Santos - Philippine Superstar</p></div>
<p>If there is someone that I hate more than Ms. <a title="http://en.wikipedia.org/wiki/Judy_Ann_Santos" href="http://en.wikipedia.org/wiki/Judy_Ann_Santos" target="_blank">Judy Ann Santos</a>, that someone would have to be a person who has a job that he or she is not passionate about.</p>
<p>I don&#8217;t know if it&#8217;s the Philippine economy or just the Filipino culture that makes it &#8220;okay&#8221; for someone to live a life of suffering; enduring a job he or she hates for exchange of a comfortable life and a prestigious career. I&#8217;ve heard countless stories of teenagers being forced by their parents to take a course like Medicine, Law or Engineering (Courses which will attach fancy-sounding, age-old, titles to their child&#8217;s name) against their child&#8217;s will. I&#8217;ve <em>accidentally </em>watched countless Pinoy movies with the same theme. (Kid wants to major in Fine Arts, MOM aka Mrs. Attorney wants the kid to major in Law and be a lawyer. Sounds familiar?)</p>
<p>Five years ago, Nursing became a popular course for High School graduates to take in college. I know that because that was the year when I graduated from High School. During that time, some of my classmates took Nursing courses not because they want to be nurses but just because being a nurse would almost guarantee a free-work pass to the US and a chance of snatching that American dream. And you know what? I think majority of the newly graduated nurses thinks the same too.</p>
<p><span id="more-503"></span></p>
<div id="attachment_507" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/09/Nurses.jpg"><img class="size-medium wp-image-507" title="Nurses" src="http://blog.ianuy.com/wp-content/uploads/2009/09/Nurses-300x225.jpg" alt="Nursing school in the Philippines" width="300" height="225" /></a><p class="wp-caption-text">Nursing school in the Philippines</p></div>
<p><strong>Is this already a deeply-ingrained practice in our society? Seems so.</strong></p>
<p>In College, I have met a lot of people who did not know the exact reason why they took <strong>Computer Science</strong>. Most of them did not even know what Computer Science is when they took it. Some of them took the course because they heard from their Uncle&#8217;s Friend&#8217;s Cousin&#8217;s who is the Executive Vice President of a multinational company that being a programmer pays well. <strong>True Story</strong>. Some of them took computer science because they thought computer science is EASY and because they thought computer-related jobs are easy to get.</p>
<p>For me, the only reason that you should take a course is because <strong>you absolutely love it.</strong> No other reason should override that. Your course will more-or-less dictate your life long profession. It will define you. You will breathe it, you will think about it, most of your waking hours will be used to deal with it. <strong>IT WILL DEFINE YOU.</strong> Why waste it in something you don&#8217;t really want? That&#8217;s stupid.</p>
<p>This pattern is not limited to Nursing or Computer Science. Look around you&#8230; Technical support staff, Call center agents, etc. I bet you that majority of them are there not because they love their job but because of the money. And you wonder why you are getting crappy customer service when you call your DSL support hotline? The moment they pickup the phone, they are already thinking of the best and fastest way to put it down. The more calls they get, the more money they&#8217;ll receive. This should stop. (One could argue that the system is to be blamed, but who can change the system?)</p>
<p><a href="http://blog.ianuy.com/wp-content/uploads/2009/09/call-center-2-web.jpg"><img class="aligncenter size-medium wp-image-510" title="call-center-2-web" src="http://blog.ianuy.com/wp-content/uploads/2009/09/call-center-2-web-243x300.jpg" alt="call-center-2-web" width="243" height="300" /></a></p>
<p>When I was in college, I really believed that everyone working in the software industry are <strong>passionate, nerdy, geeky programmers</strong>. But reality begs to disagree. I have met my share of software developers who are just here for the money, for the career.</p>
<p>So what is wrong with having a job that you are not passionate about? Well,<strong> I believe that if one is not passionate about his or her job one will always produce average and mediocre result.</strong> The Filipino culture of &#8220;Puwede na yan&#8221; (That&#8217;s good enough) fits the image perfectly. Maybe this is why you can see this pattern everywhere?</p>
<p>If you don&#8217;t really like what you are doing and if you are only after the rewards of finishing the job, you would never go the extra mile to rise above mediocrity. Well, if there is an additional reward for doing so, then you just might. But you would never work unpaid on an overtime just because you want to add that last &#8220;touch&#8221; that will make your result or product a little more perfect, because there is no additional reward for doing so.</p>
<p>I really admire the Japanese work ethics&#8230; they always aim to perfect something. I call that the Samurai Mindset, the art of the samurai. On the other hand, the <strong>unpassionate</strong> Filipino worker would outright claim that &#8220;nothing is perfect&#8221;, &#8220;perfection is impossible&#8221; then give up trying.</p>
<p>During my college days, I&#8217;ve met my fair share of these unpassionate programmers. Some of them are even dean&#8217;s listers and cumlaudes. Its just sad. You can see it on their projects (Computer Systems)&#8230; Since projects only accounts for 15% of the total grade, they would submit these mediocre systems that just meet the requirements. They would argue that its pointless to make your project perfect since its only a portion of the grade. <strong>Never trust the grades</strong>. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>It is a well known fact that the local IT industry gives one of the highest salary and that is making the situation a lot worse. Just like in Nursing, teenagers and their parents are most likely to choose IT courses because of the eventual monetary payoff and that is attracting more potential unpassionate programmers.</p>
<p>And Software companies hiring non-technical graduates for a programming job isn&#8217;t helping either.</p>
<p>Without passionate programmers, the local Software Industry would never be able to produce really innovative products. We will just be stuck as a source for cheap software &#8220;labor&#8221;. Making and remaking the same boring &#8220;business&#8221; systems. Producing average products, for average people.</p>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=High%20Salary%20is%20Killing%20the%20Software%20Industry&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F09%2F14%2Fhigh-salary-is-killing-the-software-industry%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F09%2F14%2Fhigh-salary-is-killing-the-software-industry%2F&amp;title=High%20Salary%20is%20Killing%20the%20Software%20Industry&amp;bodytext=%0A%0D%0AIf%20there%20is%20someone%20that%20I%20hate%20more%20than%20Ms.%20Judy%20Ann%20Santos%2C%20that%20someone%20would%20have%20to%20be%20a%20person%20who%20has%20a%20job%20that%20he%20or%20she%20is%20not%20passionate%20about.%0D%0A%0D%0AI%20don%27t%20know%20if%20it%27s%20the%20Philippine%20economy%20or%20just%20the%20Filipino%20culture%20that%20makes%20it%20%22" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F09%2F14%2Fhigh-salary-is-killing-the-software-industry%2F&amp;title=High%20Salary%20is%20Killing%20the%20Software%20Industry" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F09%2F14%2Fhigh-salary-is-killing-the-software-industry%2F&amp;title=High%20Salary%20is%20Killing%20the%20Software%20Industry&amp;notes=%0A%0D%0AIf%20there%20is%20someone%20that%20I%20hate%20more%20than%20Ms.%20Judy%20Ann%20Santos%2C%20that%20someone%20would%20have%20to%20be%20a%20person%20who%20has%20a%20job%20that%20he%20or%20she%20is%20not%20passionate%20about.%0D%0A%0D%0AI%20don%27t%20know%20if%20it%27s%20the%20Philippine%20economy%20or%20just%20the%20Filipino%20culture%20that%20makes%20it%20%22" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=High%20Salary%20is%20Killing%20the%20Software%20Industry%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F09%2F14%2Fhigh-salary-is-killing-the-software-industry%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=High%20Salary%20is%20Killing%20the%20Software%20Industry&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F09%2F14%2Fhigh-salary-is-killing-the-software-industry%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F09%2F14%2Fhigh-salary-is-killing-the-software-industry%2F&amp;t=High%20Salary%20is%20Killing%20the%20Software%20Industry" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F09%2F14%2Fhigh-salary-is-killing-the-software-industry%2F&amp;t=High%20Salary%20is%20Killing%20the%20Software%20Industry" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F09%2F14%2Fhigh-salary-is-killing-the-software-industry%2F&amp;title=High%20Salary%20is%20Killing%20the%20Software%20Industry&amp;annotation=%0A%0D%0AIf%20there%20is%20someone%20that%20I%20hate%20more%20than%20Ms.%20Judy%20Ann%20Santos%2C%20that%20someone%20would%20have%20to%20be%20a%20person%20who%20has%20a%20job%20that%20he%20or%20she%20is%20not%20passionate%20about.%0D%0A%0D%0AI%20don%27t%20know%20if%20it%27s%20the%20Philippine%20economy%20or%20just%20the%20Filipino%20culture%20that%20makes%20it%20%22" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F09%2F14%2Fhigh-salary-is-killing-the-software-industry%2F&amp;title=High%20Salary%20is%20Killing%20the%20Software%20Industry" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/09/14/high-salary-is-killing-the-software-industry/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Work is now officially &#8220;WORK&#8221;</title>
		<link>http://blog.ianuy.com/2009/06/21/work-is-now-officially-work/</link>
		<comments>http://blog.ianuy.com/2009/06/21/work-is-now-officially-work/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 15:25:18 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Non-Programming]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=403</guid>
		<description><![CDATA[I can still clearly remember the words of our Tech Lead as if it was just said yesterday&#8230;

&#8220;Madali lang to sayo. Parang laro laro lang.&#8221;

He would always give me that answer while putting on a big, warm smile. Every time that I see him coding or preparing a design document, I would always approach him [...]]]></description>
			<content:encoded><![CDATA[<p>I can still clearly remember the words of our Tech Lead as if it was just said yesterday&#8230;</p>
<blockquote>
<h3 style="text-align: center;">&#8220;Madali lang to sayo. Parang laro laro lang.&#8221;</h3>
</blockquote>
<p>He would always give me that answer while putting on a big, warm smile. Every time that I see him coding or preparing a design document, I would always approach him and ask him out of curiosity, &#8220;<em>Ano ginagawa mo Sir? Mahirap ba yan?</em>&#8221; and he would always give me that answer. And I have always wondered what he meant by &#8220;<strong>parang laro laro lang</strong>&#8220;. Sadly, I was never able to ask him about the actual meaning of it (he is now in Singapore) but as an Intern, I assumed that he meant that &#8220;<strong>If you&#8217;re having fun, it&#8217;s easy!</strong>&#8220;.</p>
<div id="attachment_405" class="wp-caption aligncenter" style="width: 262px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/06/demotivated.bmp"><img class="size-full wp-image-405" title="demotivated" src="http://blog.ianuy.com/wp-content/uploads/2009/06/demotivated.bmp" alt="So much for work being &quot;fun&quot;." width="252" height="310" /></a><p class="wp-caption-text">So much for work being fun?</p></div>
<p><span id="more-403"></span></p>
<p>Even from Day 1, I have never looked at my job as *real* work. I have always looked at it as &#8220;laro laro lang&#8221;. That work is something fun. That does not mean that I don&#8217;t take my job seriously. As a matter of fact, I think that I am doing a good job while having tons of fun. Of course, seeing your job as &#8220;laro laro lang&#8221; does have some negative effects. As one of my co-worker has pointed out, I&#8217;m a bit lacking in the &#8220;professionalism&#8221; department. I don&#8217;t exactly know how she arrived to that fact but I am assuming that she doesn&#8217;t like me watching SNSD videos in the office or playing a casual Facebook game once in a while.</p>
<p>So I wondered, what&#8217;s the big fuss about Professionalism and what exactly is professionalism? A close colleague of mine suggested that I should read about professionalism while we are having a discussion about proper work ethics. And so I did. Quoting from <a title="So what is Professionalism?" href="http://en.wikipedia.org/wiki/Professionalism#Definition" target="_blank">Wikipedia</a>, for someone to be considered as a &#8220;professional&#8221;, he/she should have the following:</p>
<blockquote>
<ol>
<li>Academic qualifications &#8211; a doctoral or law degree &#8211; i.e., university college/institute</li>
<li>Expert and specialised knowledge in field which one is practising professionally<sup id="cite_ref-5" class="reference"><a href="http://en.wikipedia.org/wiki/Professionalism#cite_note-5"></a></sup></li>
<li>Excellent manual/practical and literary skills in relation to profession<sup id="cite_ref-6" class="reference"><a href="http://en.wikipedia.org/wiki/Professionalism#cite_note-6"></a></sup></li>
<li>High quality work in (examples): creations, products, services, presentations, consultancy, primary/other research, administrative, marketing or other work endeavours.</li>
<li>A high standard of professional ethics, behaviour and work activities while carrying out one&#8217;s profession (as an employee, self-employed person, career, enterprise, business, company, or partnership/associate/colleague, etc.</li>
<li>Reasonable work moral and motivation. Having interest and desire to do a job well as well as holding positive attitude towards the profession are important elements in attaining a high level of professionalism.<sup id="cite_ref-7" class="reference"><a href="http://en.wikipedia.org/wiki/Professionalism#cite_note-7"></a></sup></li>
</ol>
</blockquote>
<p>1, check. 2, specialized knowledge, check. 3, sure, check. 4, check. 6, motivation! check!. Out of the 6 criteria, I sort-of fail in one so I&#8217;m about 83.33% Professional. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  Kidding aside, despite having someone put me on the &#8220;unprofessional&#8221; basket, I still believe that I am a professional. I still think that I have a  high standard of professional ethics (ask the people that I have work with), and I still think that my behavior, even though you can classify me as a Kid with ADHD, is still within the &#8220;appropriate&#8221; range (I am not a model employee in terms of behavior, though). I admit that some of my work activities are not professional though, like playing a casual Facebook game in the office. BUT I assure you, it hasn&#8217;t negatively affected my output and my job. I would even go out on the limb here and claim that being able to have fun at work resulted in a positive output. (Facebook vs. Productivity articles <a title="Don't Ban Facebook at Work, Researchers Advise" href="http://www.pcworld.com/article/136685/dont_ban_facebook_at_work_researchers_advise.html" target="_blank">here</a> and <a title="'Facebook Breaks' Boost Productivity, Study Says" href="http://www.pcworld.com/businesscenter/article/146814/facebook_breaks_boost_productivity_study_says.html" target="_blank">here</a>)</p>
<div id="attachment_420" class="wp-caption aligncenter" style="width: 385px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/06/professionalism.jpg"><img class="size-full wp-image-420" title="professionalism" src="http://blog.ianuy.com/wp-content/uploads/2009/06/professionalism.jpg" alt="&quot;Nerds are always getting in trouble. They say improper things for the same reason they dress unfashionably and have good ideas. Convention has less hold over them.&quot; - Paul Graham" width="375" height="318" /></a><p class="wp-caption-text">&quot;Nerds are always getting in trouble. They say improper things for the same reason they dress unfashionably and have good ideas. Convention has less hold over them.&quot; - Paul Graham (Hackers and Painters)</p></div>
<p>Last Friday could have been one of the happiest day of my young career (~4 months). I was recognized for my efforts in delivering a product on time that is of high-quality (I&#8217;m paraphrasing here, couldn&#8217;t remember the exact words from the certificate). But sadly, last Friday turned out to be one of the saddest day in my professional life.</p>
<p>During our weekly team meeting (which is held every Friday), our Manager gave a guideline about the team&#8217;s &#8220;Expectations on proper usage of internet resource&#8221;. The guideline basically says:</p>
<ol>
<li>Use the internet resource wisely</li>
<li>Access to Social Networking Sites like Friendster, Facebook and Multiply should not be abused</li>
<li>If you&#8217;re going to use the internet that is non-work related, be discreet.</li>
<li>Absolutely, no GAMES allowed</li>
</ol>
<p>The guys made it clear that this is just a guideline, not a set of rules that we need to follow. They also stressed the fact that access to Social Network Sites are not forbidden but we should exercise our &#8220;best judgment&#8221; when accessing them during office hours. Finally, it was said, in verbatim, that games of any sort are no longer allowed.</p>
<p>In actuality, I am not against this guideline. The exact instance that I took the job, I was asked to sign a 13-page document that basically say &#8220;The internet is just for work&#8221;. I am just frustrated that the guidelines are not clear. Telling me to use my &#8220;best judgment&#8221; is like giving a kid the key to a candy store. My judgment and reasoning is so unconventional that conflict may arise from my actions. Also, judgment is subjective, what&#8217;s okay for me may not be okay for others and what&#8217;s okay for them may not be okay for me and that scares the sh*t out of me.</p>
<p>For some, this guideline is just, well, a guideline. &#8220;This is just a guideline, don&#8217;t take it too seriously&#8221;, a close colleague told me. Well, not for me. This particular guideline is a team &#8220;expectation&#8221;. It is like a promise that we have to each other. That is how I feel about it.</p>
<p>Personally, using my best judgment, I think that I have never abused my usage of the Internet. I may not be discreet on using them because I don&#8217;t understand the value of being discreet. I mean, we are still doing it, but we are doing it &#8220;secretly&#8221;. For me, Its like lying and I don&#8217;t like to lie.</p>
<p>I don&#8217;t understand why casual games in Facebook should be banned. I don&#8217;t understand the difference between a video and a game. If we are talking about bandwidth, the bandwidth consumption of a 5 minute video in Youtube is so much greater than the bandwidth consumed by Barn Buddy, a casual game that I am playing in Facebook.One of my colleague has pointed out that you are not just focused on the game but your cursor is also in it (You can&#8217;t really multi-task!). That&#8217;s a good point though but I&#8217;m not entirely convinced. But for the sake of following the guidelines and as a respect to the people around me, I will indefinitely suspend playing games while in the office (or I will be just &#8220;discreet&#8221; <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  ).</p>
<div id="attachment_431" class="wp-caption aligncenter" style="width: 410px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/06/individuality.jpg"><img class="size-full wp-image-431" title="individuality" src="http://blog.ianuy.com/wp-content/uploads/2009/06/individuality.jpg" alt="Judgment is subjective" width="400" height="335" /></a><p class="wp-caption-text">Judgment is subjective. And that scares the s*it out of me.</p></div>
<p>To check how different the judgment of my colleagues are, I asked them personally about their take on the guideline. And boy I was not that surprised to discover that judgement is really subjective. One of the guys basically told me that &#8220;The 8 hours in the office should just be for pure work&#8221;, while another guy told me that &#8220;It&#8217;s okay to take a break once in a while to relieve stress&#8221;. Another guy told me that &#8220;This is not an issue about productivity but the proper usage of the company resources.&#8221;.</p>
<p>This is what I am really scared about, judgment is <strong>subjective</strong>. You see, if I exercise my &#8220;best judgment&#8221; and still use Facebook, people on the team may think that I am being &#8220;abusive&#8221;, they may think that I am not paying attention to the guidelines, that I am disrespecting the entire team by not doing my part.</p>
<p>To be on the safe side, I just stopped using the Internet for non-work related stuff for the rest of the day. Considering that I only stopped using the Internet for just 4 hours, the psychological effect is so devastating. My motivation was down to ZERO and it felt like that I am just a slave that should do what he is supposed to do. From that point on, I felt that work is no longer fun. Work is now officially work and that made me extremely frustrated and sad.</p>
<p>My biggest fear is that this guideline will make work no longer fun. It will make work feel like *real* work. I can tolerate that kind of environment but I am afraid that this will hinder great work. I have always believed that the source of my skills is my passion. That I am doing a great job because I am enjoying every single moment of it. I am afraid that my output will be negatively affected if I no longer find work enjoyable. To quote <a title="The Unproven Path" href="http://www.inc.com/magazine/20081101/how-hard-could-it-be-the-unproven-path.html" target="_blank">Joel Spolsky</a>:</p>
<blockquote><p>For his part, Jeff says he didn&#8217;t want our new venture to feel &#8220;like work&#8221; &#8212; that if Stack Overflow wasn&#8217;t fun to do, he didn&#8217;t want to be doing it. If I had tried to make him play by my rules, I don&#8217;t think the project would have come together, at least not as well as it has.</p>
<p>The truth is, the three guys who coded Stack Overflow are great programmers. They&#8217;re smart, and they get things done. And in the end, that&#8217;s what really matters.</p></blockquote>
<p>I believe that my team is composed of great software developers. I believe that we are smart and we can get things done. And I also believe that this is what really matter, to get things done.</p>
<p>So by Monday, I will default back to doing what I have always done which is to have fun. I will still try my best to get things done (which I have always done in the past). I will no longer play casual games in the office (to show my respect to the team&#8217;s expecatation) or at least hide somewhere when doing it <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  . I can&#8217;t promise to be discreet but rest assured that my work and my job is still my priority. Finally, I believe in my teammates&#8230; I believe that they would always be there to offer me their best judgment when they find mine unfitting.</p>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=Work%20is%20now%20officially%20%22WORK%22&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F21%2Fwork-is-now-officially-work%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F21%2Fwork-is-now-officially-work%2F&amp;title=Work%20is%20now%20officially%20%22WORK%22&amp;bodytext=I%20can%20still%20clearly%20remember%20the%20words%20of%20our%20Tech%20Lead%20as%20if%20it%20was%20just%20said%20yesterday...%0D%0A%0D%0A%22Madali%20lang%20to%20sayo.%20Parang%20laro%20laro%20lang.%22%0D%0A%0D%0AHe%20would%20always%20give%20me%20that%20answer%20while%20putting%20on%20a%20big%2C%20warm%20smile.%20Every%20time%20that%20I%20see%20him%20coding%20o" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F21%2Fwork-is-now-officially-work%2F&amp;title=Work%20is%20now%20officially%20%22WORK%22" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F21%2Fwork-is-now-officially-work%2F&amp;title=Work%20is%20now%20officially%20%22WORK%22&amp;notes=I%20can%20still%20clearly%20remember%20the%20words%20of%20our%20Tech%20Lead%20as%20if%20it%20was%20just%20said%20yesterday...%0D%0A%0D%0A%22Madali%20lang%20to%20sayo.%20Parang%20laro%20laro%20lang.%22%0D%0A%0D%0AHe%20would%20always%20give%20me%20that%20answer%20while%20putting%20on%20a%20big%2C%20warm%20smile.%20Every%20time%20that%20I%20see%20him%20coding%20o" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=Work%20is%20now%20officially%20%22WORK%22%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F21%2Fwork-is-now-officially-work%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Work%20is%20now%20officially%20%22WORK%22&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F21%2Fwork-is-now-officially-work%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F21%2Fwork-is-now-officially-work%2F&amp;t=Work%20is%20now%20officially%20%22WORK%22" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F21%2Fwork-is-now-officially-work%2F&amp;t=Work%20is%20now%20officially%20%22WORK%22" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F21%2Fwork-is-now-officially-work%2F&amp;title=Work%20is%20now%20officially%20%22WORK%22&amp;annotation=I%20can%20still%20clearly%20remember%20the%20words%20of%20our%20Tech%20Lead%20as%20if%20it%20was%20just%20said%20yesterday...%0D%0A%0D%0A%22Madali%20lang%20to%20sayo.%20Parang%20laro%20laro%20lang.%22%0D%0A%0D%0AHe%20would%20always%20give%20me%20that%20answer%20while%20putting%20on%20a%20big%2C%20warm%20smile.%20Every%20time%20that%20I%20see%20him%20coding%20o" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F06%2F21%2Fwork-is-now-officially-work%2F&amp;title=Work%20is%20now%20officially%20%22WORK%22" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/06/21/work-is-now-officially-work/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ASP.NET 1.X to ASP.NET 2.0 Migration Postback Problem</title>
		<link>http://blog.ianuy.com/2009/05/17/aspnet-1x-to-aspnet-20-migration-postback-problem/</link>
		<comments>http://blog.ianuy.com/2009/05/17/aspnet-1x-to-aspnet-20-migration-postback-problem/#comments</comments>
		<pubDate>Sun, 17 May 2009 15:40:17 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=316</guid>
		<description><![CDATA[If you&#8217;ve read my previous blog post, I talked about some of the problems encountered while migrating some of our web applications from .NET 1.1 to .NET 2.0. Well, those products are now handed off to the Test Department for their routine torture.
Just a couple of days after the hand-off (Hand-off to Test or HOTT), [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_317" class="wp-caption aligncenter" style="width: 237px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/7259_bird_cartoon.gif"><img class="size-medium wp-image-317" title="ASP.NET Migration Problem" src="http://blog.ianuy.com/wp-content/uploads/2009/05/7259_bird_cartoon-227x300.gif" alt="ASP.NET Migration Problem" width="227" height="300" /></a><p class="wp-caption-text">ASP.NET Migration Problem</p></div>
<p>If you&#8217;ve read my <a title="Migration: Why Developers Hate Microsoft or Why Developers Hate Vista or My First Encounter how Microsoft can Break your Software " href="http://blog.ianuy.com/2009/05/10/migration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software/" target="_blank">previous blog post</a>, I talked about some of the problems encountered while migrating some of our web applications from .NET 1.1 to .NET 2.0. Well, those products are now handed off to the Test Department for their routine torture.</p>
<p>Just a couple of days after the hand-off (Hand-off to Test or HOTT), the tester who is testing the product filed two (2) Tracks (Incident/Bug/Problem). Since I am the only developer working on the product, all of the tracks will automatically be assigned to me. The said tracks that were filed have the same &#8220;type&#8221; of problem.</p>
<blockquote><p>When browsing for a file (Backup File / File Upload), the value of the Textbox would change back to its default value when the page re-loads.</p></blockquote>
<p><span id="more-316"></span></p>
<p>The web application that I am supporting was originally written in .NET 1.1 using Visual Studio 2003. To migrate it to .NET 2.0, we converted the solutions to VS2005. Aside from some<a title="Migration: Why Developers Hate Microsoft or Why Developers Hate Vista or My First Encounter how Microsoft can Break your Software " href="http://blog.ianuy.com/2009/05/10/migration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software/" target="_blank"> minor problems like RESX incompatibility and broken Calendar Controls</a>, the Web Application worked &#8212; I thought it did.</p>
<p>We have a <em>Backup Restoration Page<strong> </strong></em>to allow the user to restore the web application in-case of Armageddon-like circumstances. The said page basically contain 3 components:</p>
<ol>
<li>A <strong>Read-Only </strong>Textbox that holds the path of the <strong>Backup File</strong> . This Textbox has a default value of <span style="text-decoration: underline;">C:\Backups\Backup.bak</span></li>
<li>A Browse button that will launch a custom page that will allow the user to browse for the <strong>Backup File</strong>. The value selected there will be posted-back to the <em>Backup Restoration Page.</em></li>
<li>A &#8220;Restore&#8221; button to start the restoration process.</li>
</ol>
<p>When I tried to repro (reproduce) the bug on my Virtual Machine setup, I was able to verify that the path of the Backup File is losing its value on postback. To put it more precisely, the Textbox is not retaining the correct path since it is changing back to its default value on postback.</p>
<p>After hours of debugging, I was no where close in determining the cause of the problem. So I did a quick search on Google and found out that this is a common problem during migration from ASP.NET 1.1 to ASP.NET 2.0.</p>
<p>The problem is that Microsoft changed the behavior of read-only textboxes on ASP.NET 2.0.</p>
<blockquote><p>ASP.NET 2.0 had a design change by which a control if marked with its ReadOnly property as true, would ignore client side changes and would lose the same across postback. So if you tried modifying the text box value or add a value to the text box using Javascript you wouldnt be able to retireve the value in the code behind or simply the value will be lost across postback.</p></blockquote>
<p><span style="color: #000000;"><span id="ctl00_ContentPlaceHolder1_lblDescription">This behaviour is by design in ASP.NET 2.0 and it has been designed with the idea that a ReadOnly TextBox shouldnt be modified in the client side by a malicious code.</span></span></p>
<p><span style="color: #000000;"><br />
Microsoft has a point. What&#8217;s the point of using a Textbox if you&#8217;re going to set it to Read-Only? Why not use a Label instead?</span></p>
<p>Fortunately, we have three simple <strong>workarounds</strong> for this problem.</p>
<ol>
<li>Use a Label instead of a Read-Only Textbox. (Heard of Borders?)</li>
<li>Set the Read-Only property of the Textbox to <em>FALSE </em>(If you don&#8217;t really need the Read-Only Property)</li>
<li>But if you are really insisting of using a Read-Only Textbox, then we need to &#8220;fool&#8221; ASP.NET that the Textbox is not Read-Only even if it is.</li>
</ol>
<p>To &#8220;fool&#8221; ASP.NET, you need to set the Read-Only property of the Textbox to <span style="color: #0000ff;">FALSE</span> during design time (Using the Property Pane) then <strong>set it to Read-Only on Page Load during runtime</strong>. <strong>You CANNOT use Textbox1.ReadOnly = true. </strong>You need to set the read-only attribute using the Attribute.Add() method.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">// This is part of the C# code-behind file.</span>
<span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">void</span> Page_Load<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">object</span> sender, EventArgs e<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     TextBox1.<span style="color: #0000FF;">Attributes</span>.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;readonly&quot;</span>, <span style="color: #666666;">&quot;readonly&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>That will solve your postback problems. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>References:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.readonly.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.readonly.aspx</a></li>
<li><a href="http://www.dotnetspider.com/resources/3120-ASP-NET--TextBox-Ready-Only-losing-client-side-changes-values-across-postback.aspx" target="_blank">http://www.dotnetspider.com/resources/3120-ASP-NET&#8211;TextBox-Ready-Only-losing-client-side-changes-values-across-postback.aspx</a></li>
<li><a href="http://stackoverflow.com/questions/856838/migration-asp-net-1-1-to-asp-net-2-0-broken-postback" target="_blank">http://stackoverflow.com/questions/856838/migration-asp-net-1-1-to-asp-net-2-0-broken-postback</a></li>
</ul>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=ASP.NET%201.X%20to%20ASP.NET%202.0%20Migration%20Postback%20Problem&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F17%2Faspnet-1x-to-aspnet-20-migration-postback-problem%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F17%2Faspnet-1x-to-aspnet-20-migration-postback-problem%2F&amp;title=ASP.NET%201.X%20to%20ASP.NET%202.0%20Migration%20Postback%20Problem&amp;bodytext=%0A%0D%0AIf%20you%27ve%20read%20my%20previous%20blog%20post%2C%20I%20talked%20about%20some%20of%20the%20problems%20encountered%20while%20migrating%20some%20of%20our%20web%20applications%20from%20.NET%201.1%20to%20.NET%202.0.%20Well%2C%20those%20products%20are%20now%20handed%20off%20to%20the%20Test%20Department%20for%20their%20routine%20torture." title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F17%2Faspnet-1x-to-aspnet-20-migration-postback-problem%2F&amp;title=ASP.NET%201.X%20to%20ASP.NET%202.0%20Migration%20Postback%20Problem" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F17%2Faspnet-1x-to-aspnet-20-migration-postback-problem%2F&amp;title=ASP.NET%201.X%20to%20ASP.NET%202.0%20Migration%20Postback%20Problem&amp;notes=%0A%0D%0AIf%20you%27ve%20read%20my%20previous%20blog%20post%2C%20I%20talked%20about%20some%20of%20the%20problems%20encountered%20while%20migrating%20some%20of%20our%20web%20applications%20from%20.NET%201.1%20to%20.NET%202.0.%20Well%2C%20those%20products%20are%20now%20handed%20off%20to%20the%20Test%20Department%20for%20their%20routine%20torture." title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=ASP.NET%201.X%20to%20ASP.NET%202.0%20Migration%20Postback%20Problem%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F17%2Faspnet-1x-to-aspnet-20-migration-postback-problem%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=ASP.NET%201.X%20to%20ASP.NET%202.0%20Migration%20Postback%20Problem&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F17%2Faspnet-1x-to-aspnet-20-migration-postback-problem%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F17%2Faspnet-1x-to-aspnet-20-migration-postback-problem%2F&amp;t=ASP.NET%201.X%20to%20ASP.NET%202.0%20Migration%20Postback%20Problem" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F17%2Faspnet-1x-to-aspnet-20-migration-postback-problem%2F&amp;t=ASP.NET%201.X%20to%20ASP.NET%202.0%20Migration%20Postback%20Problem" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F17%2Faspnet-1x-to-aspnet-20-migration-postback-problem%2F&amp;title=ASP.NET%201.X%20to%20ASP.NET%202.0%20Migration%20Postback%20Problem&amp;annotation=%0A%0D%0AIf%20you%27ve%20read%20my%20previous%20blog%20post%2C%20I%20talked%20about%20some%20of%20the%20problems%20encountered%20while%20migrating%20some%20of%20our%20web%20applications%20from%20.NET%201.1%20to%20.NET%202.0.%20Well%2C%20those%20products%20are%20now%20handed%20off%20to%20the%20Test%20Department%20for%20their%20routine%20torture." title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F17%2Faspnet-1x-to-aspnet-20-migration-postback-problem%2F&amp;title=ASP.NET%201.X%20to%20ASP.NET%202.0%20Migration%20Postback%20Problem" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/05/17/aspnet-1x-to-aspnet-20-migration-postback-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migration: Why Developers Hate Microsoft or Why Developers Hate Vista or My First Encounter how Microsoft can Break your Software</title>
		<link>http://blog.ianuy.com/2009/05/10/migration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software/</link>
		<comments>http://blog.ianuy.com/2009/05/10/migration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software/#comments</comments>
		<pubDate>Sun, 10 May 2009 14:13:29 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=262</guid>
		<description><![CDATA[In my previous blog post, I&#8217;ve mentioned that I&#8217;m working on a project to migrate an entire product line to Vista. What I meant by that is that I am responsible for making sure that our current product will run properly on Windows Vista. To guarantee that it is indeed Running Properly it should behave [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_263" class="wp-caption aligncenter" style="width: 546px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/windowsvistalogo.jpg"><img class="size-full wp-image-263" title="Windows Vista Compatible Logo" src="http://blog.ianuy.com/wp-content/uploads/2009/05/windowsvistalogo.jpg" alt="Do you know how much Programmer's Blood it cost to put this tiny sticker in a Software Box?" width="536" height="262" /></a><p class="wp-caption-text">Do you know how much Programmer&#39;s Blood it cost to put this tiny sticker in a Software Box?</p></div>
<p>In my <a title="Coding Horror 01: Readability vs Efficiency " href="http://blog.ianuy.com/2009/04/26/coding-horror-01-readability-vs-efficiency/" target="_blank">previous blog post</a>, I&#8217;ve mentioned that I&#8217;m working on a project to migrate an entire product line to Vista. What I meant by that is that I am responsible for making sure that our current product will run properly on Windows Vista. To guarantee that it is indeed <em>Running Properly</em> it should behave *exactly* like it behaves in Windows XP.  In simple terms, my entire job security is riding on making our products compatible with Microsoft&#8217;s failed attempt at a MAC-ish Operating System and with Microsoft&#8217;s successful attempt (a first in their history) to make their operating system <strong>NOT</strong> backward compatible with older applications. So much for <a title="Raymond Chen's Blog" href="http://blogs.msdn.com/oldnewthing/" target="_blank">Raymond Chen</a>&#8217;s camp <a title="How Microsoft Lost the API War" href="http://joelonsoftware.com/articles/APIWar.html" target="_blank">undying obsession with backward compatibility</a>.</p>
<p>This products that I&#8217;m talking about are a set of Web Applications written in ASP.NET version 1.1. This web applications are as old as Windows XP. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' />  I checked its File Modification History in our TFS repository and the last time that anyone have touched its code base is in 2005 &#8212; and that&#8217;s just for a minor code modification to fix a bug. I believe this apps were written way way back in 2004 &#8212; when I was in Third Year High School! <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>To make this products compatible with Vista, there are a couple of steps that had to be done. I&#8217;ll enumerate each steps and what it takes to accomplish them.</p>
<p><span id="more-262"></span></p>
<h3>.NET Upgrade (.NET 1.1 to .NET 2.0)</h3>
<p>Windows Vista comes pre-installed with .NET 2.0 (and .NET 3.0). Our products are running on .NET 1.1. One approach that most people will suggest is to just install .NET 1.1 on Windows Vista and everything will be perfect. Right? WRONG. Firstly, .NET 1.1 has already reached its end-of-life. Microsoft pulled support for .NET 1.1 last October 14, 2008. Although it was extended, its a sign that this technology is <em>old enough</em> to be replaced. Secondly, installing .NET 1.1 on a Vista machine is not as <a href="http://geekycoder.wordpress.com/2007/10/08/installing-microsoft-net-11-framework-on-windows-vista-without-tears/" target="_blank">easy</a> <a href="http://www.mydigitallife.info/2007/12/27/install-microsoft-net-framework-11-on-windows-vista-fix-regsvcsexe-fails-error/" target="_blank">as</a> <a href="http://searchwindevelopment.techtarget.com/tip/0,289483,sid8_gci1237467,00.html" target="_blank">you</a> <a href="http://www.sharpdeveloper.net/content/archive/2008/10/07/setup-aspnet-11-on-vista.aspx" target="_blank">think</a>. No, we are not lazy programmers, we just don&#8217;t want to introduce unnecessary complications to the system. We are, by the way, <a title="Coding Horror 01: Readability vs Efficiency " href="http://blog.ianuy.com/2009/04/26/coding-horror-01-readability-vs-efficiency/" target="_blank">Software Developers</a>.</p>
<div id="attachment_270" class="wp-caption aligncenter" style="width: 224px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/lazy-programmers.jpg"><img class="size-medium wp-image-270" title="Lazy Programmers" src="http://blog.ianuy.com/wp-content/uploads/2009/05/lazy-programmers-214x300.jpg" alt="Those Lazy Programmers" width="214" height="300" /></a><p class="wp-caption-text">Those Lazy Programmers</p></div>
<p>So the approach we took is to upgrade our Visual Studio 2003 solutions to Visual Studio 2005 solutions. This, in turn, will &#8220;force&#8221; the web application to use .NET 2.0. You might say, &#8220;How hard could it be? Visual Studio 2005 can convert old solutions automatically using its <em>Upgrade Wizard. </em>All you have to do is click next!, You lazy programmer!&#8221;. That&#8217;s correct. Upgrading the solution is no problem. Converting every file to .NET 2.0 compliant code <em>is</em>.</p>
<p>We encountered two conversion problems. The first one is relatively simple to fix. It&#8217;s a problem where the old .NET 1.1 Resource files (*.resx) were not converted to the .NET 2.0 resource files. The two resource file formats are different (the .NET 2.0 have a *.designer.cs component) and in very rare cases, the .NET 1.1 *resx files won&#8217;t work in .NET 2.0. This problem is very hard to catch since the incompatible *.resx files won&#8217;t throw a compile error. The strings just won&#8217;t be detected. But once found it was relatively easy to fix. After a day of investigation, we found out that the XML format for the resource files changed in .NET 2.0. As a simple hack (fix), we manually changed the &lt;string&gt; parameters of each .NET 1.1 strings to match the .NET 2.0 &lt;string&gt; parameters.</p>
<p>The second problem is harder to find and much much harder to fix. The problem is related to ASP.NET&#8217;s datetime picker control.</p>
<div id="attachment_274" class="wp-caption aligncenter" style="width: 282px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/workingaspnet.jpg"><img class="size-full wp-image-274" title="ASP.NET 1.1 Calendar Control" src="http://blog.ianuy.com/wp-content/uploads/2009/05/workingaspnet.jpg" alt="Our Calendar Control before upgrading to .NET 2.0" width="272" height="214" /></a><p class="wp-caption-text">Our Calendar Control before upgrading to .NET 2.0</p></div>
<p>On our previous version running .NET 1.1, there is no problem with the datetime picker. But when we installed the .NET 2.0 version, the calendar objects are all over the place.</p>
<div id="attachment_275" class="wp-caption aligncenter" style="width: 1034px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/brokencontrol.jpg"><img class="size-large wp-image-275" title="Broken ASP.NET Calendar Control" src="http://blog.ianuy.com/wp-content/uploads/2009/05/brokencontrol-1024x211.jpg" alt="Broken ASP.NET Calendar Control" width="1024" height="211" /></a><p class="wp-caption-text">The Migrated .NET 2.0 Calendar Control</p></div>
<p style="text-align: left;">Two days of investigation later, we found out that the previous developer made this custom Calendar control by inheriting from .NET 1.1&#8217;s System.Web.Controls. During pre-render, he reads the rendered Calendar Control&#8217;s HTML and then does something funny with it. What he wanted to achieve is to replace the &#8220;Month&#8221; from the Calendar header (gray part) with a drop down box that contains a list of the months. So what he did is he &#8220;catch&#8221; the HTML stream from the Calendar Control and perform a String.Replace on it!</p>
<p style="text-align: left;">
<div id="attachment_278" class="wp-caption aligncenter" style="width: 586px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/design.jpg"><img class="size-full wp-image-278" title="Design Goal" src="http://blog.ianuy.com/wp-content/uploads/2009/05/design.jpg" alt="His Design Goal" width="576" height="207" /></a><p class="wp-caption-text">His Design Goal</p></div>
<p style="text-align: left;">The actual String.Replace command is something like this:</p>
<p style="text-align: left;">

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">//szHTML = Get current HTML stream</span>
<span style="color: #008080; font-style: italic;">//szCurrentMonth = Get current month from HTML</span>
szHTML.<span style="color: #0000FF;">Replace</span><span style="color: #000000;">&#40;</span>szCurrentMonth, <span style="color: #666666;">&quot;
&lt;select&gt;&lt;option value=&quot;</span>January<span style="color: #666666;">&quot;&gt;January&lt;/option&gt;
       &lt;option value=&quot;</span>February<span style="color: #666666;">&quot;&gt;February&lt;/option&gt;
       &lt;option value=&quot;</span>March<span style="color: #666666;">&quot;&gt;March&lt;/option&gt;
       &lt;option value=&quot;</span>April<span style="color: #666666;">&quot;&gt;April&lt;/option&gt;
       &lt;option value=&quot;</span>May<span style="color: #666666;">&quot;&gt;May&lt;/option&gt;
       &lt;option value=&quot;</span>June<span style="color: #666666;">&quot;&gt;June&lt;/option&gt;
       &lt;option value=&quot;</span>July<span style="color: #666666;">&quot;&gt;July&lt;/option&gt;
       &lt;option value=&quot;</span>August<span style="color: #666666;">&quot;&gt;August&lt;/option&gt;
       &lt;option value=&quot;</span>September<span style="color: #666666;">&quot;&gt;September&lt;/option&gt;
       &lt;option value=&quot;</span>October<span style="color: #666666;">&quot;&gt;October&lt;/option&gt;
       &lt;option value=&quot;</span>November<span style="color: #666666;">&quot;&gt;November&lt;/option&gt;
       &lt;option value=&quot;</span>December<span style="color: #666666;">&quot;&gt;December&lt;/option&gt;
&lt;/select&gt;
&nbsp;
&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>It worked fine before the migration, but somehow we broke it during migration to .NET 2.0. A further investigation of the &#8220;emitted&#8221; HTML stream from the .NET 2.0 control shows this:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;table style=&quot;border-style: solid; border-width: 1px; border-collapse: collapse;&quot; title=&quot;Calendar&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: Silver;&quot; colspan=&quot;7&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse;&quot; border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15%;&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;Go to the previous month&quot; href=&quot;javascript:__doPostBack('ctl01','V3378')&quot;&gt;&amp;lt;&lt;/a&gt;&lt;/td&gt;
&lt;!-- THIS WILL BE THE PART THAT WILL BE REPLACED BY A DROP DOWN BOX --&gt;
&lt;td style=&quot;width: 70%;&quot; align=&quot;center&quot;&gt;May 2009&lt;/td&gt;
&lt;td style=&quot;width: 15%;&quot; align=&quot;right&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;Go to the next month&quot; href=&quot;javascript:__doPostBack('ctl01','V3439')&quot;&gt;&amp;gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Sun&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Mon&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Tue&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Wed&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Thu&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Fri&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Sat&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: black;&quot; title=&quot;April 26&quot; href=&quot;javascript:__doPostBack('ctl01','3403')&quot;&gt;26&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;April 27&quot; href=&quot;javascript:__doPostBack('ctl01','3404')&quot;&gt;27&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;April 28&quot; href=&quot;javascript:__doPostBack('ctl01','3405')&quot;&gt;28&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;April 29&quot; href=&quot;javascript:__doPostBack('ctl01','3406')&quot;&gt;29&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;April 30&quot; href=&quot;javascript:__doPostBack('ctl01','3407')&quot;&gt;30&lt;/a&gt;&lt;/td&gt;
&lt;!-- THE TITLE ATTRIBUTE WAS ALSO REPLACED ACCIDENTALLY --&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;May 01&quot; href=&quot;javascript:__doPostBack('ctl01','3408')&quot;&gt;1&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;May 02&quot; href=&quot;javascript:__doPostBack('ctl01','3409')&quot;&gt;2&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
.....&lt;/tbody&gt;&lt;/table&gt;</pre></div></div>

<p>A comparison with the &#8220;emitted&#8221; .NET 1.1 control shows this:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;table style=&quot;border-style: solid; border-width: 1px; border-collapse: collapse;&quot; title=&quot;Calendar&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: Silver;&quot; colspan=&quot;7&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse;&quot; border=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15%;&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;Go to the previous month&quot; href=&quot;javascript:__doPostBack('ctl01','V3378')&quot;&gt;&amp;lt;&lt;/a&gt;&lt;/td&gt;
&lt;!-- THIS WILL BE THE PART THAT WILL BE REPLACED BY A DROP DOWN BOX --&gt;
&lt;td style=&quot;width: 70%;&quot; align=&quot;center&quot;&gt;May 2009&lt;/td&gt;
&lt;td style=&quot;width: 15%;&quot; align=&quot;right&quot;&gt;&lt;a style=&quot;color: Black;&quot; title=&quot;Go to the next month&quot; href=&quot;javascript:__doPostBack('ctl01','V3439')&quot;&gt;&amp;gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Sun&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Mon&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Tue&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Wed&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Thu&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Fri&lt;/th&gt;
&lt;th align=&quot;center&quot; scope=&quot;col&quot;&gt;Sat&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: black;&quot; href=&quot;javascript:__doPostBack('ctl01','3403')&quot;&gt;26&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3404')&quot;&gt;27&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3405')&quot;&gt;28&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3406')&quot;&gt;29&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3407')&quot;&gt;30&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3408')&quot;&gt;1&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 14%;&quot; align=&quot;center&quot;&gt;&lt;a style=&quot;color: Black;&quot; href=&quot;javascript:__doPostBack('ctl01','3409')&quot;&gt;2&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
.....&lt;/tbody&gt;&lt;/table&gt;</pre></div></div>

<p>Executing the String.Replace command in the .NET 1.1 code will produce the proper output. However, Microsoft decided to <em>upgrade</em> the Calendar control in .NET 2.0 by adding a <strong>tooltip</strong> for each date!</p>
<div id="attachment_287" class="wp-caption aligncenter" style="width: 282px"><a href="http://blog.ianuy.com/wp-content/uploads/2009/05/tooltip1.jpg"><img class="size-full wp-image-287" title="Tool Tip in .NET 2.0" src="http://blog.ianuy.com/wp-content/uploads/2009/05/tooltip1.jpg" alt="Tool Tip in .NET 2.0" width="272" height="216" /></a><p class="wp-caption-text">Tool Tip in .NET 2.0</p></div>
<p>Since the String.Replace has no <em>checking</em> (this is not REGEX afterall), it also replaced the &#8220;Month&#8221; in the tooltip with the drop down box (&lt;select&gt; command), thus generating the broken control shown above. This is not, in anyway, the fault of the original developer. Can you anticipate what will Microsoft do?</p>
<p><strong>This is my first encounter on how Microsoft can break your products. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /><br />
</strong></p>
<h3>MSDE to Microsoft SQL Server 2005 Express</h3>
<p>Our web applications were written before the release of SQL Server 2005 Express. The only *free* choice back then is Microsoft SQL Server Desktop Engine, a free scaled-down version of Microsoft SQL Server 2000. Since the support for MSDE officially ended last April 8, 2008, we are then forced to upgrade to Microsoft SQL Server 2005 express.</p>
<p>Our previous MSDE setup runs on <strong>default instance</strong>. In migrating to SQL Server 2005, we run the risk of &#8220;conflicting&#8221; with our other products that runs on <strong>default instance</strong> of SQL 2005. So the decision was made to migrate from <strong>default instance </strong>to <strong>named instance</strong>.</p>
<p>Migrating to SQL Server 2005 Express is straightforward at first look. The first and the most obvious thing to do is to modify the installer (InstallShield) so that it will install SQL 2005 instead of MSDE.  To compensate with the instance problem, the second thing to do is to modify each and every <strong>connection string</strong> in the entire app to point to the proper named instance. Making sure that each and every connection string in your entire app has been changed is a monumental task&#8230; especially if different version of connection strings were used. After that, you also need to modify the Service Query String so that it will point to the proper SQL Service ($MSSQLSERVER to $Instance_Name). There are also minor modifications here and there, but its not worth the mention.</p>
<p>After three days of manual modification, we got to the point where we were able to install the product. We tested it and everything seems to work fine. We then got to the part where are going to test for the database backup. Lo and behold, it failed. But no error message was given. We looked for the bug for an entire day but our search proved futile. We called it a day and went home. The next day, my brilliant manager excitedly told us the problem.</p>
<blockquote>
<h3 style="text-align: center;">Microsoft SQL Server 2005 Express does not have SQL Server Agent.</h3>
</blockquote>
<p>Our backup routine uses SQL Server Agent. When a user request for a backup, the SQL Server will &#8220;schedule&#8221; that backup request and the SQL Server Agent will &#8220;execute&#8221; the request when the schedule parameter is met.</p>
<p>Simply put, No SQL Server Agent, No Backup.</p>
<p>We have three solutions to the problem:</p>
<ol>
<li>Ship the product with Microsoft SQL Server 2005 standard or enterprise edition (Instead of the Express edition)</li>
<li>Remove the &#8220;scheduled&#8221; backup. Instead, just provide a &#8220;one shot&#8221; backup</li>
<li>Create our own custom &#8220;Backup Scheduler&#8221; using Windows Task Scheduler</li>
</ol>
<p>We talked to the marketing folks and they eliminated option 1 because, according to them, we can&#8217;t make our customer pay for something that was free before. Option 2 was eliminated due to the simple fact that we can&#8217;t ship an upgraded version of our product with downgraded features (But this was actually done to one of the product that had missed its deadline). So Option 3 was our only choice.</p>
<p>The plan in creating Option 3 is simple. Create a &#8220;scheduled task&#8221; using <strong>schtasks.exe </strong>that will invoke <strong>sqlcmd.exe</strong> that will invoke the <strong>sql command</strong> to invoke the <strong>stored procedure</strong> that was doing the backups. The <strong>schtasks</strong> will then be invoked by the ASP.NET page using Process.Start();. So I created a wrapper class that will simplify this process. The class was created in 2 hours and I had it running and compiled to the ASP.NET page in just 3 hours. <strong>BUT IT DIDN&#8217;T WORK.</strong></p>
<p>Further investigation revealed that IIS 6.0 has a different security model than IIS 5.1 (which XP uses). Spawning a process from within IIS 6.0 will have a credential of NETWORK SERVICE. Yes, we can impersonate since we are using Windows Authentication, but it won&#8217;t work unless we force the user to type-in the credentials again. Which is bad in a usability point of view.</p>
<p>The workaround was to put the scheduler on a Windows Service that will then be run with proper credentials. The problem then was the communication between the ASP.NET page and the Windows Service. How will the Service know when to invoke the backup? Our solution is a little crude but simple. We did it old-skul UNIX style! The ASP.NET page will create a &#8220;marker&#8221; file in a certain, defined location. The Windows Service will then monitor that location&#8230; waiting for the &#8220;marker&#8221; file. If the marker file is found, the service will then invoke the backup procedure. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Fortunately for us, all the data needed for the backup is in the database, so we don&#8217;t need to pass anything between the ASP.NET page and the Service. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  We could have used sockets or mutex, but its overkill for our purpose.</p>
<p><strong>This</strong> are just the major steps that had to be done in order to make our web applications compatible with Windows Vista. There are a couple of minor steps that also needs attention like the IIS 5.1 to IIS 7.0 migration and the new Vista Security Model.</p>
<p>The next time you see the &#8220;Vista Compatible&#8221; sticker on a Software Box, think of the programmers who nearly died in making your software run on a &#8220;cuter&#8221; operating system.</p>
<h2>Windows 7, we are ready! <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_lol.gif' alt=':lol:' class='wp-smiley' /> </h2>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software&amp;bodytext=%0A%0D%0AIn%20my%20previous%20blog%20post%2C%20I%27ve%20mentioned%20that%20I%27m%20working%20on%20a%20project%20to%20migrate%20an%20entire%20product%20line%20to%20Vista.%20What%20I%20meant%20by%20that%20is%20that%20I%20am%20responsible%20for%20making%20sure%20that%20our%20current%20product%20will%20run%20properly%20on%20Windows%20Vista.%20To%20guaran" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software&amp;notes=%0A%0D%0AIn%20my%20previous%20blog%20post%2C%20I%27ve%20mentioned%20that%20I%27m%20working%20on%20a%20project%20to%20migrate%20an%20entire%20product%20line%20to%20Vista.%20What%20I%20meant%20by%20that%20is%20that%20I%20am%20responsible%20for%20making%20sure%20that%20our%20current%20product%20will%20run%20properly%20on%20Windows%20Vista.%20To%20guaran" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;t=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;t=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software&amp;annotation=%0A%0D%0AIn%20my%20previous%20blog%20post%2C%20I%27ve%20mentioned%20that%20I%27m%20working%20on%20a%20project%20to%20migrate%20an%20entire%20product%20line%20to%20Vista.%20What%20I%20meant%20by%20that%20is%20that%20I%20am%20responsible%20for%20making%20sure%20that%20our%20current%20product%20will%20run%20properly%20on%20Windows%20Vista.%20To%20guaran" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F05%2F10%2Fmigration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software%2F&amp;title=Migration%3A%20Why%20Developers%20Hate%20Microsoft%20or%20Why%20Developers%20Hate%20Vista%20or%20My%20First%20Encounter%20how%20Microsoft%20can%20Break%20your%20Software" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/05/10/migration-why-developers-hate-microsoft-or-my-first-encounter-how-microsoft-can-break-your-software/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Localization: A Programmer&#8217;s Dirty Job</title>
		<link>http://blog.ianuy.com/2009/04/12/localization-a-programmers-dirty-job/</link>
		<comments>http://blog.ianuy.com/2009/04/12/localization-a-programmers-dirty-job/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 10:47:32 +0000</pubDate>
		<dc:creator>Ian Uy</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Job]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.ianuy.com/?p=70</guid>
		<description><![CDATA[When I was in College, I was amazed that the suits (&#8221;Business People&#8221;) are so willing to pay me good money just to spew out pieces of code that would eventually end up in a crappy system somewhere. Well, that was the time when I thought that working as programmer is just about programming. Or, [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small;">When I was in College, I was amazed that the suits (&#8221;Business People&#8221;) are so willing to pay me good money just to spew out pieces of code that would eventually end up in a crappy system somewhere. Well, that was the time when I thought that working as programmer is just about programming. Or, that was the time when I believe that majority of a programmer&#8217;s time would be spent writing code&#8230; building stuffs.</span></p>
<p>Nowadays, when people ask me about my typical day at work, I always tell them that I&#8217;m working on a Localization Project. Most often than not, the common reply is &#8220;What&#8217;s that? Does it involve programming?&#8221; Yes, it involves &#8220;programming&#8221;, if you consider replacing a bunch of strings to their localized equivalent as &#8220;programming&#8221;.</p>
<p>As Mike Rowe will put it&#8230;</p>
<div style="text-align: center;"><span style="font-weight: bold;"><span style="font-size: large;">Localization&#8230; It&#8217;s a dirty job!</span></span><span class="insertedphoto"><img class="aligncenter" style="border: 0pt none;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNJYwoKCDIAAFfWh0I1/MikeRowe.jpg?et=yOudM0HO%2CxniW3Wa5aMaOg&amp;nmid=0" border="0" alt="" width="175" height="175" /></span></div>
<p><span style="font-size: small;">Why is it a dirty job, you ask? Consider the <span style="font-weight: bold;">English </span>phrase &#8220;Preview and Spell Check&#8221;. Now let&#8217;s see how it will translate to different languages:</span></p>
<p><span style="font-weight: bold;">French: <span style="text-decoration: underline;">Prévision et contrôle de charme</span></span><br style="font-weight: bold;" /><span style="font-weight: bold;">German: <span style="text-decoration: underline;">Vorbetrachtung und Rechtschreibüberprüfung</span></span><br style="font-weight: bold;" /><span style="font-weight: bold;">Russian: </span><span style="font-size: small;"><span style="font-weight: bold;"><span style="text-decoration: underline;">??????????????? ???????? ? ???????? ????????????</span></span></span></p>
<p><span style="font-size: small;"><span id="more-70"></span><br />
A simple 23 letter English phrase will translate into a very complex 48 letter Russian gibberish. Do you understand now why this is a <span style="font-weight: bold;">dirty job? </span>No? Alright, let me illustrate with a simple dialog box&#8230;</span></p>
<p style="text-align: left;"><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNMngoKCDIAACqFinA1"></a><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNMngoKCDIAACqFinA1"></a><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNNqgoKCDIAAEPkF-M1"><span class="insertedphoto"><img class="aligncenter" style="border: 0pt none;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNMngoKCDIAACqFinA1/Locale-English.JPG?et=c07w0dU1WdDkhAJtNdZVYw&amp;nmid=0" border="0" alt="" width="299" height="138" /></span></a><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNMngoKCDIAACqFinA1"></a><span style="font-size: small;"><br />
Now let&#8217;s try to localize this particular dialog box into Russian&#8230;<a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNMngoKCDIAACqFinA1"></a></span><br />
<a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNNqgoKCDIAAEPkF-M1"><img class="aligncenter" style="border: 0pt none;" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNNqgoKCDIAAEPkF-M1/Locale-Russian.JPG?et=xVPUnGuDNDyVJ48RP68sXQ&amp;nmid=0" border="0" alt="" width="299" height="138" /></a><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNNqgoKCDIAAEPkF-M1"></a><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNNqgoKCDIAAEPkF-M1"></a><br />
<span style="font-size: small;">Because some languages are just so weird, a simple phrase will translate into a <span style="font-weight: bold;">paragraph</span>! And as &#8220;programmers&#8221;, its our job to <span style="font-style: italic;">resize</span> the offending component (See last button on the left) so that the translated phrase will fit. In this particular dialog, to be able to <span style="font-style: italic;">resize</span> the offending button, you need to:</span></p>
<ol>
<li><span style="font-size: small;">Resize the Form</span></li>
<li><span style="font-size: small;">Move the Textbox, the command button (button5) on the right , and the group box (groupbox2) on the right<br />
</span></li>
<li><span style="font-size: small;">Resize the groupbox (groupbox1) on the left</span></li>
<li><span style="font-size: small;">Finally, resize the offending button</span></li>
</ol>
<p style="text-align: left;"><span style="font-size: small;">You might say &#8220;Well, that&#8217;s easy! It won&#8217;t even take me 3 minutes to do that.&#8221;. Hah, I&#8217;m being too easy on you with that example. Consider this dialog then:</span><br />
<a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNQiAoKCDIAABN2DNU1"><img class="aligncenter" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNQiAoKCDIAABN2DNU1/wgetgui-screenshot.png?et=wf6QugEL0EINRXcMrNgVQA&amp;nmid=0" border="0" alt="" /></a><span style="font-size: small;">Haha. Still too easy? How bout this?</span></p>
<p><a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNR5QoKCDIAAEBEN4Y1"><img class="aligncenter" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNR5QoKCDIAAEBEN4Y1/o-filematrix.png?et=AgZTJMjIo6xBCSh%2CmugM4w&amp;nmid=0" border="0" alt="" /></a><br />
<img src="file:///C:/DOCUME%7E1/Ian/LOCALS%7E1/Temp/moz-screenshot-3.jpg" alt="" /><span style="font-size: small;">And it&#8217;s a bitch when the programmer that designed the original GUI does not understand the concept of GOOD UI DESIGN PRACTICES and decided that overlapping 20 groupboxes and toggling the Visible flag during <span style="font-weight: bold;">runtime</span> is a GOOD IDEA. (Yes, I know. I&#8217;ve done this a couple of times in the past and I apologize for having committed this damnable sin!)</span><br />
<a href="http://ianuy.multiply.com/photos/hi-res/upload/SbNUfQoKCDIAAAbpbkk1"><img class="aligncenter" src="http://images.ianuy.multiply.com/image/1/photos/upload/300x300/SbNUfQoKCDIAAAbpbkk1/Overlapping.JPG?et=D8dGHmfvlOhOFOBO79bRyw&amp;nmid=0" border="0" alt="" /></a><span style="font-size: small;">Now, consider the fact that we have a <span style="font-weight: bold;">very very huge system</span> that contains roughly <span style="font-weight: bold;">300+ </span>dialog boxes and the fact that we need to ship the system in <span style="font-weight: bold;">5 </span>different languages. Don&#8217;t get me wrong, we are using a localization tool to accomplish the task but somethings just have to done MANUALLY. It&#8217;s indeed a dirty job!</span></p>
<p>This hell right here is just <span style="font-weight: bold;">ONE</span> part of the Localization Job and it&#8217;s the <span style="font-weight: bold;">EASIEST PART!</span> Since some part of our codebase is so freakin old, when you change a small part of the code, all hell breaks loose. The system will break in 15 different places at the same time! And you know what&#8217;s great? The system is already localized that you won&#8217;t understand what the error message is saying! And with a codebase consisting of <span style="font-weight: bold;">MILLION LINES </span>of code (some from the 80&#8217;s), you&#8217;ll understand why localization is a dirty job.</p>
<p>Here&#8217;s the upside (YES! There is an upside), Localizing a piece of software into different languages automatically converts to sales. Its good money. And at times like this, contributing to the company&#8217;s bottom line is what separates you from being laid-off to keeping your job, even though its a dirty one. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p>In the future, I have 2 projects lined up that involves *real* coding. But for now, I&#8217;ll have to make do.</p>
<p><span style="font-size: large;"><span style="font-style: italic;">&#8220;It&#8217;s a dirty job but someone&#8217;s gotta do it!&#8221;</span></span></p>
<p><span style="font-size: x-small;">*</span><span style="font-size: x-small;">PS: I used the term &#8220;Dialog Boxes&#8221; for the non-technical readers to understand. For the geeky guys, just translate. <img src='http://blog.ianuy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span><span style="font-style: italic;"><br />
</span></p>
<p><!-- Site Meter --><!-- Copyright (c)2006 Site Meter --></p>



Share and Enjoy:


	<a rel="nofollow" href="mailto:?subject=Localization%3A%20A%20Programmer%27s%20Dirty%20Job&amp;body=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F" title="E-mail this story to a friend!"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/email_link.png" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job&amp;bodytext=When%20I%20was%20in%20College%2C%20I%20was%20amazed%20that%20the%20suits%20%28%22Business%20People%22%29%20are%20so%20willing%20to%20pay%20me%20good%20money%20just%20to%20spew%20out%20pieces%20of%20code%20that%20would%20eventually%20end%20up%20in%20a%20crappy%20system%20somewhere.%20Well%2C%20that%20was%20the%20time%20when%20I%20thought%20that%20working%20" title="Digg"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job" title="Reddit"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job&amp;notes=When%20I%20was%20in%20College%2C%20I%20was%20amazed%20that%20the%20suits%20%28%22Business%20People%22%29%20are%20so%20willing%20to%20pay%20me%20good%20money%20just%20to%20spew%20out%20pieces%20of%20code%20that%20would%20eventually%20end%20up%20in%20a%20crappy%20system%20somewhere.%20Well%2C%20that%20was%20the%20time%20when%20I%20thought%20that%20working%20" title="del.icio.us"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://twitter.com/home?status=Localization%3A%20A%20Programmer%27s%20Dirty%20Job%20-%20http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F" title="Twitter"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job&amp;url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F" title="Slashdot"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;t=Localization%3A%20A%20Programmer%27s%20Dirty%20Job" title="Facebook"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;t=Localization%3A%20A%20Programmer%27s%20Dirty%20Job" title="MySpace"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job&amp;annotation=When%20I%20was%20in%20College%2C%20I%20was%20amazed%20that%20the%20suits%20%28%22Business%20People%22%29%20are%20so%20willing%20to%20pay%20me%20good%20money%20just%20to%20spew%20out%20pieces%20of%20code%20that%20would%20eventually%20end%20up%20in%20a%20crappy%20system%20somewhere.%20Well%2C%20that%20was%20the%20time%20when%20I%20thought%20that%20working%20" title="Google Bookmarks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Fblog.ianuy.com%2F2009%2F04%2F12%2Flocalization-a-programmers-dirty-job%2F&amp;title=Localization%3A%20A%20Programmer%27s%20Dirty%20Job" title="DotNetKicks"><img src="http://blog.ianuy.com/wp-content/plugins/sociable/images/dotnetkicks.png" title="DotNetKicks" alt="DotNetKicks" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://blog.ianuy.com/2009/04/12/localization-a-programmers-dirty-job/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

