<?xml version="1.0" encoding="utf-8"?> 
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/"
     version="2.0">

    <channel>

        <title>UNDP-APDIP International Open Source Network - Ken's Blog</title>
        <link>http://www.iosn.net/Members/ken/blog</link>
        <description>Ken's Blog</description>
        <language>en-us</language>
        <generator>Plone 2.0</generator>

        
            
                  <item>
                      <title>Year End Thoughts ...</title>
                      <link>http://www.iosn.net/Members/ken/blog/20071231</link>
                      <description>&lt;p&gt;The year draws to a close and it is time for the yearly retrospective again. Time really does pass quickly:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;2007 Resolutions&lt;/li&gt;
  &lt;li&gt;2007 Lessons&lt;/li&gt;
  &lt;li&gt;2008 Resolutions&lt;/li&gt;
&lt;/ul&gt;

</description>
                      <author>ken</author>
                      <pubDate>Mon, 31 Dec 2007 13:04:51 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[<h2>2007 RESOLUTIONS</h2>

<p>So how did I do? From the <a href="http://www.iosn.net/Members/ken/blog/20061231">2006 year end retrospective</a>, I had the following two goals:</p>

<ul>
  <li>Make myself (almost) redundant</li>
  <li>Teach, not do</li>
</ul>

<p>The first part is pretty much complete and in some ways through no real effort on my part. What happened in 2007 was that I stood aside and let my team leaders take on more and more responsibility. They all rose to the challenge and the team functions pretty well without me. These days, my role is mostly HR management with a small bit of project management on the side. The PM work isn't even because it is really necessary, but more because it is much faster for me to do it due to language and experience issues. My team leaders are a bit overworked at times so I jump in here and there to balance the load.</p>

<p>The second part turned out to be quite a bit different from what I expected. Rather than having long lectures and training sessions on how to do the work, it turned out to be a lot more effective to just let people do the work and give feedback where necessary. My team members are good enough that, for the most part, you can just throw them in and yell, "have fun swimming!" Now and then, feedback from gathered from peers or my personal experiences helped several people to improve what they were doing even better. However, it would be quite laughable to claim that I really taught them anything. For the most part, they figured out how to do things themselves and often came up with new ways that were far superior.</p>

<p>So in conclusion, both goals were achieved but in ways quite different from what I envisioned. I suppose this is one of the benefits of working with really good people :)</p>

<h2>2007 LESSONS</h2>

<p>The following are some of my major lessons for 2007. All these topics will probably be covered in more detail in later blogs:</p>

<ul>
  <li>Timely feedback</li>
  <li>Groups also grow and mature</li>
  <li>Really learning from your team mates</li>
</ul>

<p>If 2007 is anything to go by, the greatest value a manager in <a href="http://www.exoweb.net">Exoweb</a> provides is in giving timely feedback - both positive and negative. As mentioned earlier, I found that I did not really have to teach much. However, I did have to tell people how far along they were towards achieving the goals set for them. Without clear feedback, people are either demoralized by the uncertainty of their performance or wrongly assume they are doing well/badly. In retrospect, some of the people that did not work out in 2004-2006 may well have done a lot better given the correct feedback and corrective actions early. Things have gone a lot smoother in 2007 as the management team as a whole has gotten better at this.</p>

<p>Another realization was that it is not just people that grow and mature. Groups somehow do too. They take a life and culture of their own, often picking up best practices that make the group far superior than merely adding the individual members together. One clear example was when we threw a group of new people into a project. Although everyone individually was quite competent, they were all new and unfamiliar with best practices the rest of Exoweb has gained through bitter experience. As a result, the team repeated all the same mistakes and was on the verge of turning dysfunctional. Ultimately we disbanded the project and team, merged everyone into mature teams and things work out much better after that.</p>

<p>2007 was also the year I learned the most from my teammates. Partly because they were getting comfortable and confident in their teams/roles, partly because there was much more communication this year. The many subtleties of working with people, what works, what doesn't - all these I have learned from talking to my colleagues. Some give me feedback on what they have seen me do, giving me a chance to tweak methods better. Others try new things that have obviously good results. These I adapt into my own daily routine. Overall, 2007 was the year I learned the most about managing and working with people - even more than my days in evil MBA school.</p>

<p>There of course is a lot more I have learned over the course of the year. In many ways, working in Exoweb is like being in school - you are always learning new things every day. May this always continue.</p>

<h2>2008 RESOLUTIONS</h2>

<p>Strangely enough, I cannot think of anything that I would make as a new year's resolution. Sure, I can see many areas that need improvement/fixing, but these are things that will naturally fix themselves over the course of time. Maybe I'm getting complacent, but I honestly think that Exoweb has built itself a self-sustaining culture that will continuously improve itself as time goes on. </p>

<p>If anything, my resolution for 2008 is to ensure that 2008 is even better than 2007. 2007 was a really good year, but one should always try to strive for more. I would like to make things even better next year, from all aspects. What specifically, we'll figure it out as we go. However, Exoweb in 2008 should be an even greater place to work in than the years before ...</p>

]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Getting promoted to the level you are performing at ...</title>
                      <link>http://www.iosn.net/Members/ken/blog/20071218</link>
                      <description>&lt;p&gt;Some of the stuff I write about aren't my own thoughts but thoughts from fellow front-line managers. In particular, today's thought comes from &lt;a href="http://blog.sina.com.cn/u/1045708417"&gt;Cindy&lt;/a&gt;: &lt;/p&gt;

&lt;blockquote&gt;
You do not get promoted because you are doing your job well. You get promoted because you have been performing at the next level long enough for people to notice and reward you.
&lt;/blockquote&gt;

&lt;p&gt;This came out of a discussion about how some people (fortunately not from &lt;a href="http://www.exoweb.net"&gt;Exoweb&lt;/a&gt;) were thinking that just because they had just started doing well at their jobs, they were due a promotion/raise. Coming from the other side of the trenches, this doesn't seem really realistic to me.&lt;/p&gt;

&lt;p&gt;First - you never promote lightly. For the most part, you cannot demote someone. You end up having to terminate that person if you make a mistake. So until you are absolutely sure this person can perform at the higher level, you take your time with the promotion.&lt;/p&gt;

&lt;p&gt;Second - humans have highly variable performance. Someone who is highly motivated today may be very demotivated tomorrow for no apparent reason. If what you are seeing is one of those peaks, promoting the person would be a mistake. One week later, the person could very be performing at a much lower level again. You need proven, sustained performance above the minimum level for the position to be promoted to.&lt;/p&gt;

&lt;p&gt;Finally, a person doing well for the current position does not merit a promotion. Not unless you want the &lt;a href="http://en.wikipedia.org/wiki/Peter_Principle"&gt;Peter Principle&lt;/a&gt; throughout the organization (people getting promoted to their level of incompetence.) A person doing well in their current position may get raises and bonuses, but never a promotion. Proof that one does well at the current position is rarely proof that the person would do better at a higher level. The skills are often different. The skills required for a software developer are different from that of an architect, project manager, etc.&lt;/p&gt;</description>
                      <author>ken</author>
                      <pubDate>Tue, 18 Dec 2007 19:35:13 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Language learning on FOSS vs OSX</title>
                      <link>http://www.iosn.net/Members/ken/blog/20070929</link>
                      <description>&lt;p&gt;My primary desktop is &lt;a href="http://www.apple.com/macosx/"&gt;OSX&lt;/a&gt; and for the most part, it suits my purpose well. 99% of the time, everything just works, there are few hassles and things behave the way you expect them to. The &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; releases are close but not quite there yet for me.&lt;/p&gt;

&lt;p&gt;As great a desktop as OSX is though, it only shines in the most commonly used functions. In many niche areas, FOSS can provide superior solutions by virtue of the huge variety of applications, developers and freedom to develop on it. One such area that comes to mind these days is language learning.&lt;/p&gt;

&lt;p&gt;I'm barely able to read in Chinese and trying to work my way through a website or document is pretty much impossible without a dictionary. I particularly need a dictionary that can immediately translate words I highlight on screen. On OSX, the options are pretty limited. Most solutions are shareware or paid software. Right now I'm using &lt;a href="http://gettranslateit.com/mac/index.shtml"&gt;TranslateIt!&lt;/a&gt; which works fairly well. I highlight the word(s) I want translated, hit a keyboard combination and TranslateIt! pops up, hopefully with the translations. It is one extra step though. The paid version for TranslateIt! includes the functionality to get immediate translation after I highlight it. &lt;/p&gt;

&lt;p&gt;My colleagues on FOSS desktops don't need to pay for this. &lt;a href="http://stardict.sourceforge.net/"&gt;StarDict&lt;/a&gt; comes with most distributions and does the highlight/translate thing right out of the box. It's invaluable in a mixed Chinese/English environment like &lt;a href="http://www.exoweb.net/"&gt;Exoweb&lt;/a&gt;. Besides the software, the power of FOSS shows up in StarDict's dictionaries, which are varied and extremely useful. So much so that TranslateIt! actually uses StarDict dictionaries and all the translations I am using are StarDict's. Without StarDict, TranslateIt! would actually be useless to me. &lt;/p&gt;

&lt;p&gt;My favorite &lt;a href="http://stardict.sourceforge.net/Dictionaries_zh_CN.php"&gt;StarDict dictionaries&lt;/a&gt; include (all zh_CN -&gt; en):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cedict-gb dictionary (has pinyin and tone marks. Must have)&lt;/li&gt;
&lt;li&gt;langdao-ce-gb (a much larger vocabulary but translations sometimes not precise. No pinyin)&lt;/li&gt;
&lt;li&gt;Chinese idiom dictionary (a dictionary translating chinese idioms. Unfortunately the translations are chinese-&gt;chinese and some colleagues have said its translations are suspect)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two are under the GPL while the cedict library is under its own &lt;a href="http://www.cs.cmu.edu/~eepeter/cedict_readme.txt"&gt;license&lt;/a&gt; similar to cc-by-nc.&lt;/p&gt;

&lt;p&gt;While I'm sticking to TranslateIt! until such time StarDict works natively under OSX, I would simply be unable to read anything at all in Chinese without StarDict's dictionaries.&lt;/p&gt;</description>
                      <author>ken</author>
                      <pubDate>Sat, 29 Sep 2007 17:16:17 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>We Make It Up As We Go</title>
                      <link>http://www.iosn.net/Members/ken/blog/20070928</link>
                      <description>&lt;p&gt;Every now and then I find myself repeating the same thing in weekly chats, so I try to note them down in a blog post so the &lt;a href="http://www.exoweb.net"&gt;Exowebers&lt;/a&gt; that actually read the &lt;a href="http://planet.exoweb.net/planet/"&gt;Exoweb Planet&lt;/a&gt; have a chance to see it. This particular one has to do with how we developed our work processes and best practices. There is no mystical method, no profound MBA insights or deep pondering. Quite simply, we make it up as we go.&lt;/p&gt;

&lt;p&gt;That's not to say all our current processes are arbitrary. Every process or practice we have, we evolved to overcome a perceived problem. We experiment with different processes and those that work, we kept. Those that failed we learned from and moved on. The entire organization is a work in process, continuously trying to improve itself.&lt;/p&gt;

&lt;p&gt;There are a few core values we do have, which very much reflect those of &lt;a href="http://agilemanifesto.org/"&gt;agile methodology&lt;/a&gt;: People over process, working code over documentation, etc. We also believe very much in making this a great place to work. Since you spend a huge portion of your waking hours at work, why wouldn't you want to make it as pleasant, as fun, as challenging a place as possible? &lt;/p&gt;

&lt;p&gt;From these core values we simply figure things out as we go. For example, our current process of code reviews was triggered by the realization that our code quality wasn't good enough, that too much bad code and bugs were leaking into production systems. We tried the NASA style group code reviews but found that much too heavy. We then tried having a couple of core code reviewers doing all the work, but found that it did not scale and that the benefits of code review actually were disproportionately accumulating with the core reviewers. Our current method is a lightweight team review process that seems to combine the benefits of code review while reducing the cost. We are likely to make more tweaks and changes in the future, depending on future needs and ideas.&lt;/p&gt;

&lt;p&gt;What does this mean for Exowebers? Most important of all, it means that it is the past ideas of all of us that have created the great environment we have. It means it is your future ideas that will make us an even better place to work. You need to pay attention to your environment, be willing to question our processes and methodologies, and contribute new ideas when they come to mind. No process is sacred. Given good enough reason, visible enough benefits, anything can be changed.&lt;/p&gt;

&lt;p&gt;You can contribute ideas openly, by floating RFCs by email, or you can quietly suggest them to your team leaders in weekly chats. Whatever method you choose, it is important that the ideas are communicated and considered. Only then can we as a company improve. Only then can we make this place an even better place to work.&lt;/p&gt;

&lt;p&gt;Yes, this includes higher salaries too. If you have ideas on how to make us more profitable, we can all share in the profits in the form of higher salaries :)&lt;/p&gt;
</description>
                      <author>ken</author>
                      <pubDate>Fri, 28 Sep 2007 18:09:32 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>What Happens When You Turn Fsync Off On Postgres</title>
                      <link>http://www.iosn.net/Members/ken/blog/20070923</link>
                      <description>&lt;p&gt;We use the &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; database extensively to handle a fairly large amount of data. Our largest single database is over 25G in size, with a fair amount of transactions going through it daily. As such, we've had to do a lot of optimization over time. One of our experiments was turning &lt;a href="http://www.postgresql.org/docs/8.1/interactive/runtime-config-wal.html"&gt;fsync&lt;/a&gt; off on one of our non-critical databases. In retrospect, this probably was not that great an idea ...&lt;/p&gt;

&lt;p&gt;This database was a non-critical but fairly write intensive database. It logged a lot of information, largely in the form of inserts. Inserts in postgres can be a bit slow sometimes since a  insertions tends to lock the same section of the index until the insert is complete, forcing all inserts to go in sequence. Updates are usually a lot faster if you're updating different rows since they don't all rely on the same section of the index and can often be done simultaneously.&lt;/p&gt;

&lt;p&gt;The fsync option slows this down even further, since postgres then waits for the data to be flushed to disk successfully before continuing on with the next operation. Not a problem for low traffic databases but if you attempt to insert hundreds of transactions a second, the milliseconds spent waiting for the disk to write the data completely really hurts. fsync ensures data integrity but at the price of speed, especially in the case of unexpected power failure.&lt;/p&gt;

&lt;p&gt;Since this was a non-critical database and losing data wasn't really a problem (we could either recreate it or live without it), we turned fsync off on this database. All went well for months, until we actually did suffer a power failure. During the busiest period possible. Good old Murphy.&lt;/p&gt;

&lt;p&gt;At any rate, once we brought everything back up, things seemed to work as usual ... for about 30 minutes. Then we realized our servers were frequently losing connection to this particular database. Investigations revealed that the postgres processes were terminating themselves with messages like "Error: out of memory" or complaints about data inconsistency. Yep, we got our first corrupted Postgres database. The first one I've encountered in over 7 years of using this database.&lt;/p&gt;

&lt;p&gt;I have to admit, I had very little clue on how to recover a corrupted database and each database was corrupted slightly differently. Initially it appeared only the indexes were damaged and a reindex removed most of the problems. Later we found that there was some damage to the tables themselves (took a long time to find that) and we attempted to restore through a backup. The Write Ahead Log (WAL) backup proved to be useless. Those were corrupted or inconsistent. Strangely enough, the database could still do a pg_dump, so we just dumped out all the data and reloaded it back in the database. This ultimately fixed everything.&lt;/p&gt;

&lt;p&gt;Morale of story - don't turn fsync off unless you really know what you're doing, including how to detect database corruption and fix it. Our biggest problem was that postgres, unlike MySQL, does not scream "Table/database corruption!" immediately. It took us a while to determine what the problem was. Then again, unless you turn off fsync, it is probably something that almost never happens on postgres. I've had tons of corrupted &lt;a href="http://www.mysql.com"&gt;MySQL&lt;/a&gt; databases. This is my first corrupted postgres database.&lt;/p&gt;
</description>
                      <author>ken</author>
                      <pubDate>Thu, 27 Sep 2007 15:45:33 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Things I Would Like to See More In My Teams</title>
                      <link>http://www.iosn.net/Members/ken/blog/20070628</link>
                      <description>&lt;p&gt;Overall, I'm working with a great bunch of people, so don't let the topic mislead you - I'm really happy with the people I work with. However, nothing's ever perfect and there's always room for improvement. The following are things that have recently made me stop and think, "I wish I saw more of that ..."&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Curiosity&lt;/li&gt;
  &lt;li&gt;Sharing of information&lt;/li&gt;
  &lt;li&gt;Dissatisfaction&lt;/li&gt;
&lt;/ul&gt;

&lt;a href="http://www.iosn.net/Members/ken/blog/20070628"&gt;Read more ...&lt;/a&gt;</description>
                      <author>ken</author>
                      <pubDate>Thu, 27 Sep 2007 15:07:37 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[<h2>Curiosity</h2>

<p>There is an immense amount of information that we don't know. In the IT industry particularly, it is critically important to keep learning and improving ourselves. A little curiosity goes a long way on making this happen.</p>

<p>We all know that the technologies we learn today are often out of date within five years. Even within the same language, the change can be enormous over time. Java users five years ago would not recognize or be able to read some of the code being produced today. Constant learning is critical to a long term career in IT. For that matter, it's possible that the famous Chinese stereotype that people over 30 cannot code may just be because too many fail to learn and by age thirty, their skills are almost useless.</p>

<p>Keeping up with the information flood out there is of course a skill. There is no way to learn it all and a challenge to find those really worth our time. However, a little effort such as by keeping up with a few good magazines and blogs goes a long way. </p>

<h2>Sharing of Information</h2>

<p>Everyone has different strengths and experiences. We all have learned different things and it is much easier to learn from someone who has already learned something than to figure out things from scratch. Because of this, learning from each other is a quicker path to improving ourselves than struggling on our own. </p>

<p>Yet too few try to learn from each other. This comes in two different forms - some don't like to share. They do not talk about what they have learned, do not mention it to others, etc. They do not blog, nor do they present in ExoForums (Exoweb's weekly information sharing session) nor do they even mention it in conversation. Anything they learn stays with them. </p>

<p>The other problem is actually receiving this information. This is related to the curiosity issue mentioned earlier. Exoweb has a planet listing all the blogs of colleagues, yet there are a fair number of Exowebers who do not even bother to read this. If one will not learn from their colleagues, who's knowledge and experience is most directly related to their work, what chance is there that this person will learn from anywhere else?</p>

<h2>Dissatisfaction</h2>

<p>Believe it or not, being dissatisfied can be a good thing if channeled properly. Dissatisfaction indicates that there is something that can be improved. By seizing upon this dissatisfaction and making the effort to ensure that improvement happens, one makes one's environment and self better. </p>

<p>It is too easy to notice a problem and shrug it off, accepting that it is a problem that one has to live with. Quite often this is not the case. If we invest a little of our time each day in removing the most irritating, most unpleasant annoyances in our lives, we find that bit by bit, our lives get better and better. Time and resources are limited so we can never fix everything that bothers us. However, as long as we take the time and effort to fix things, each day gets more and more enjoyable. Ultimately life is short. Why make it miserable too?</p>

<p>Most cultures with a strong work ethic believe in enduring hard, boring work to succeed. However, there's nothing in that ethic that says we can't find ways of doing things better. Just because it is hard or boring doesn't mean it always has to be that way. Sometimes it is far too costly to change. Sometimes it is not. Until we have aggressively investigated the problem, we will never know for sure.</p>
]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>3 Questions ...</title>
                      <link>http://www.iosn.net/Members/ken/blog/20070721</link>
                      <description>&lt;p&gt;This is the English version of &lt;a href="http://blog.sina.com.cn/cindy4u"&gt;Cindy's&lt;/a&gt; &lt;a href="http://blog.sina.com.cn/u/3e543e8101000cco"&gt;"3 Questions" blog post&lt;/a&gt;, written from a different viewpoint. As a bit of background, Cindy and I are both managers in &lt;a href="http://www.exoweb.net"&gt;Exoweb&lt;/a&gt; and one of our responsibilities is to carry out weekly chats with the people in our teams. Both of us have been asked these questions before and we figured it would be of interest to Exoweb people in general. I'm writing this without having actually read her post, so it should be interesting to see how our viewpoints differ.&lt;/p&gt;

&lt;p&gt;The questions are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Does Exoweb give team members a chance to switch career paths?&lt;/li&gt;
  &lt;li&gt;Are personnel evaluations transparent?&lt;/li&gt;
  &lt;li&gt;If an employee makes a mistake, how will the company handle things?&lt;/li&gt;
&lt;/ul&gt;

&lt;a href="http://www.iosn.net/Members/ken/blog/20070721"&gt;Read more ... &lt;/a&gt;
</description>
                      <author>ken</author>
                      <pubDate>Sat, 21 Jul 2007 21:13:19 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[<h2>Does Exoweb Give Team Members a Chance to Switch Career Paths?</h2>

<p>Yes. We definitely prefer to use existing, proven and trusted team members to fill open positions, rather than taking a risk with hiring an unknown person from the outside. As long as the person appears to be competent and capable of taking the task, we are quite willing to take a chance. </p>

<p>We have had a few examples of these career changes so far, mostly people switching to project management positions. Two of our admin staff have switched over to project management roles in our software development teams. The admin team handles everything in Exoweb but actual software development, so is a lot more challenging than the name suggests. After battling with unreliable suppliers, organizing events for 40-50+ people and solving the problems that crop up in daily office life, they have proven that they are more than capable of getting the job done. That actually makes them very good project managers as they have the "get things done" attitude.</p>

<p>We had a software developer also try his hand at this a while back. He did a pretty good job at it, but after 6 months, found that it was really not something that he wanted to do and switched back to pure technology. This is also a learning experience that we are quite happy to allow our people to have within Exoweb - the chance to try new things out and discover if a certain path is for them. If it doesn't work out, such is life. You never know until you try and the experience typically makes you appreciate your chosen role more. </p>

<h2>Are Personnel Evaluations Transparent?</h2>

<p>Depends. We do our best to make obvious to the team member how they are perceived, both by team leaders and fellow team members. Depending on the team lead's management style and workload, we try to schedule chats between once a week to once every couple of months. During these chats, past accomplishments, challenges and issues are discussed, along with feedback on how the team member is doing. These chats are mostly informational and problem solving - for both sides to quickly identify and resolve issues that crop up. They also usually give team members a fairly clear idea of how they are doing. </p>

<p>Of course, not every team lead does things in the same way and there are large variances between each team. As a general rule we try to provide feedback, both positive and negative, as soon as possible and resolve problems before the grow too big.</p>

<p>However, we try to keep these evaluations as private discussions between team member and team lead. In this sense, personnel evaluations are very opaque. We usually do not make it obvious to others when someone is underperforming, even if the under performer knows very clearly that he/she is in trouble. Making this kind of information public while trying to resolve the problem is rarely helpful. We do share evaluations between team leads though, both for redundancy (in case one team lead has to take over for another) and also as knowledge sharing (e.g. how to handle situation x).</p>

<h2>If An Employee Makes a Mistake, How Will the Company Handle Things?</h2>

<p>In one of the management books I read many years ago, I came across a great story about making mistakes. Unfortunately, I no longer recall where it comes from (if anyone recognizes, please let me know!), but it goes something like this (heavily paraphrased):</p>

<blockquote>
<p>There was a young man who had just joined Mega Corp, a huge organization with many capable and talented people. Being very eager to prove himself, the young man throws himself into his tasks and pushes himself to the limits of his abilities. Unfortunately, his eagerness results in him making a huge mistake, one that ultimately ends up costing the company USD10 million dollars.</p>

<p>This young man then walks into his manager's office, confesses to his mistake and finally ends with, "I guess you want my resignation now?"</p>

<p>His manager looks at the young man with a incredulous expression and replies, "are you crazy? We just spent 10 million dollars training you! How can you leave now? Now get back out there and apply your newly gained knowledge to earn us our 10 million dollars back!"</p>
</blockquote>

<p>Everyone makes mistakes. As long as one honestly did their best and learns from it, we recognize that this is only natural and move on. We work together with each other to try to minimize mistakes and compensate for each other. We spend less time figuring out who is to blame and more on how to ensure it will never happen again.</p>

<p>For the most part, almost all first-time mistakes are forgiven. The rare exceptions we've encountered are when someone makes a mistake so bad that trust is irrevocably broken. As a highly trust based organization, once someone proves themselves untrustworthy, it is simply not possible to continue working in Exoweb, no matter how much we like the person. Fortunately, it is very hard to make this kind of mistake. It has only happened once in my memory.</a>]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Spammers And Gated Communities On The Web</title>
                      <link>http://www.iosn.net/Members/ken/blog/20070527-2</link>
                      <description>&lt;p&gt;YAR - Yet Another Rant ...&lt;/p&gt;

&lt;p&gt;From my experiences living in various locations around the world, I have always loved the locations where there are very few gated communities. You can enter the different areas very freely - there are few security checkpoints, very few guards and movement is very unrestricted. These are usually the very safe areas and there's a lot of interaction between people in the different areas. These are usually friendlier, livelier and richer communities, especially with inter-community mingling.&lt;/p&gt;

&lt;p&gt;On the other hand, the areas with lots of tightly gated communities bother me. This usually implies that the area is not very safe and you need a variety of fences and security personnel to keep out undesirable and potentially dangerous elements. These communities live in fear and are very closed. While it is peaceful inside these communities, it is still a prison of sorts. &lt;/p&gt;

&lt;p&gt;Lately, I have begun feeling that the web is turning more and more into a group of gated communities. Mind you, it's not just linked-chain fences and rent-a-cops. It feels like many areas are starting to turn into fortresses - high walls, constant patrolling of the boundaries by guards with very deadly weapons and constant challenges while you wander through. The problem - spammers.&lt;/p&gt;

&lt;a href="http://www.iosn.net/Members/ken/blog/20070527-2/"&gt;More ...&lt;/a&gt;</description>
                      <author>ken</author>
                      <pubDate>Sun, 27 May 2007 16:20:07 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[<p>It used to be that spammers only sent email to your mailbox. Today, they find anything and everything they can get to make you click on their links. Within days of <a href="http://www.iosn.net">IOSN</a> turning on trackbacks, many of the blog posts were filled with spam trackbacks that were just trying to sell their latest crap. Comment spam became common a couple of years ago, which is why most sites don't allow anonymous comments.</p>

<p>A few months ago, <a href="http://www.exoweb.net">Exoweb</a> set up a test server for the <a href="http://www.beijinglug.org">Beijing Linux User's Group</a>. This was a default content management software setup (I believe it was plone) so anyone could register anonymously. It was not publicized and only a small handful of people should have known about it. Next thing we knew, some virus-writer had (obviously automatically) created a ton of accounts and hosted a huge number of trojan binaries or spam pages on the site and spammed people to click onto it. We weren't the only ones hit, but it was quite frustrating when we found out and had to shut down all logins. Till today, you can probably find some remnants of it if you google for Exoweb. I don't even want to get started on how frequently our client sites are probed by bots daily.</p>

<p>These low-lives who send their bots out looking for unsecured sites are the equivalent of thugs roaming your streets, trying every single door they come across. How safe would you feel if you saw criminals brazenly looking for unlocked doors in broad daylight in your neighbourhood? Because of this, people are trying to reduce access to their communities/sites, making sure only verified people are allowed to participate.</p>

<p>One side effect of this is that it gets more and more inconvenient to join communities or participate. Most sites will not allow participation without registration. Registration involves more hoops to jump through (captchas, email confirmations, etc). Gone are the days when you could just swing by a friend's blog and just drop a comment anonymously. Participation is now deliberate - you must really want to say something and have the patience to jump through hoops to make it. Gone are the days when you could just fire off an off-the-cuff post or comment. </p>

<p>This keeps people in small little gated communities. Once they have created accounts in a particular site, they are less likely to bother to register in other sites. Communities get more insular with less intermingling. Diversity, cross-pollination and knowledge is reduced ...</p>

<p>All this, because some people have found it perfectly acceptable to violate all netiquette for personal gain and everyone else lacks the will to do something about it. Is is sad. How quickly the promise of the internet - incredibly convenient and cheap communication and access to information - is sullied and tainted by greedy human nature.</p>


]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>The Three Aspects of Management</title>
                      <link>http://www.iosn.net/Members/ken/blog/20070527</link>
                      <description>&lt;p&gt;Found myself explaining for the third time in a day yesterday about the three different aspects of management that I deal with in my work in Exoweb. Thought it best to blog about them, to put down in writing what I have had to repeat multiple times last week.&lt;/p&gt;

&lt;p&gt;These are my personal opinions/divisions of course and have no grounding in scientific research. They are merely based on personal experience. However, all managers in Exoweb perform at least one aspect and some can do all three.&lt;/p&gt;

&lt;p&gt;In my daily work, the three aspects I end up spending my management time on are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tech Management&lt;/li&gt;
&lt;li&gt;Project Management&lt;/li&gt;
&lt;li&gt;Human Resource Management&lt;/li&gt;
&lt;/ol&gt;

&lt;a href="http://www.iosn.net/Members/ken/blog/20070527/"&gt;More ...&lt;/a&gt;
</description>
                      <author>ken</author>
                      <pubDate>Sun, 27 May 2007 14:55:51 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[<h2>Technical Management</h2>

<p>This deals with the actual work that needs doing and varies by department. It is difficult, if not impossible, to do this type of management without solid knowledge and experience in doing this task yourself. e.g. An Accounting manager must understand and be able to balance his own books before attempting to supervise a team. Likewise a senior software designer/architect needs to solidly understand software (object oriented or otherwise) design patterns and the abilities/limitations of the technologies used to be effective. </p>

<p>This aspect of management typically involves setting and maintaining general technical quality in a team. Properly done, this also involves mentoring and training to ensure that team members are constantly improving and requiring less and less management. This is not that frequently done in practice though.</p>

<p>This aspect appears to require the least social skills of the three. </p>

<h2>Project Management</h2>

<p>To me this has two separate components - client management and juggling tasks and resources to complete the project in time. In theory, they could be handled by different people but in practice this is so inefficient that it is not practical. </p>

<p>Client management requires the most communication skills of the two as it involves managing client expectations, negotiating resources and dealing with the inevitable problems that arise. Strong social skills are especially useful with the class of clients that requires you to wine and dine them. </p>

<p>The second component requires mostly a logical mind to figure out how to achieve the maximum value for the client given available resources. This requires not just understanding client priorities but also the best way to utilize the team to achieve these priorities. e.g. Can the manager arrange the tasks so that dependencies between them are minimized and the team functions like a well oiled machine? Or will tasks clash, resulting in periods of inactivity followed by frantic crunch periods? What are the deadlines coming up and can the team make them?</p>

<p>Some understanding of how the work is done is useful but not to the depth of the tech manager. We have a few project managers that lack a technical background but are still quite capable of carrying out this component of management. Strangely enough, gamers who enjoy strategy or RPG games often do well at this. Ultimately, they involve the same skills - maximizing results by carefully allocating scarce resources.</p>

<h2>Human Resource Management</h2>

<p>This is often the most neglected aspect of management - the understanding, combination, development and motivation of team members. It also cannot be delegated to the HR department. Both <a href="http://www.amazon.com/First-Break-All-Rules-Differently/dp/0684852861">First Break All The Rules</a> and <a href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-2nd/dp/0932633439">Peopleware</a> are full of studies that show it is the first line manager that has the largest impact on employee morale, productivity and development. All the HR processes and motivational posters in the world will achieve nothing if the immediate manager of a team member sucks at this.</p>

<p>It is easy to neglect this because it this type of management is a long term investment and the symptoms of neglect take so long to show up. Morale is rarely measured and there are many possible reasons for why productivity is suffering. It is easy to blame/focus on something else, especially when there are so many other tasks that obviously need doing. When clients are screaming about late projects, it is very hard to invest in long-term training, even when it is clear that the lack of certain skills among team members is the reason why projects are late.</p>

<p>In my career, the best managers I remember - the ones I was happiest and most productive working for - were the ones that knew exactly how to motivate the team. They may have been merely competent at the other aspects (in some cases minimally competent) but they were far superior to their peers in understanding what made their people tick. They knew how to combine people together so their strengths built on each other and their shortcomings were compensated for by other team members or processes. Working for them was a joy and it was amazing what a gelled team could achieve. It could easily multiply the productivity of a team.</p>

<p>Doing this is hard, especially for the stereotypically anti-social techie. It requires more than just social skills. The manager also needs to really understand the unique strengths and characteristics of each team member. Many company processes/managers treat team members as interchangeable machines that perform the same as each other, rather than the unique individuals they are, with individual needs. They are forced to do this either because they cannot recognize the individuality of their people or are unable to find managers who can manage in this way. This results in work processes and practices designed for the lowest common denominator - meant to protect us from our weaknesses. How much more enriching would it be to work in a place that recognized and allowed us to utilize our strengths and achieve our fullest potential?</p>

<h2>Final Thoughts</h2>

<p>There are extremely few people who can do all three roles well. Even finding people who can do two (e.g. Tech and Project Management) roles very well is very hard. We are experimenting within Exoweb with having specialists in each of the three roles. Although not nearly as efficient as having all the roles combined in one person (communication overhead is much higher) it has been proven to work with the first two roles. The jury is still out on the third role - we don't know for sure if it can be done by someone who isn't already doing at least one of the other roles. It is also such a sensitive function that we are reluctant to experiment too much with it.</p>

<p>There are so many different ways to manage and we're only beginning to figure out what works for Exoweb's culture and people. Ultimately though, I would stick to the philosophy best summarized in this quote: "that's what management is - it's not about how much you can do yourself. It's about how much you can help others do"</p>

]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>VMWare vs Parallels: Marketing Spam comparison</title>
                      <link>http://www.iosn.net/Members/ken/blog/20070511</link>
                      <description>&lt;p&gt;Just an annoyed rant - &lt;a href="http://www.vmware.com/"&gt;VMWare&lt;/a&gt; has really managed to annoy me lately. A long time ago, I downloaded one of their server versions for evaluation purposes. Since then, I have been receiving marketing emails from them, despite marking "no marketing emails" when I registered with them (I always do this on all sites). Lately, because my registered address is in China, they've started using a third party marketing company to send me chinese marketing emails. Thanks. They go straight to the dustbin unread, since I read chinese about 5-10x slower than English.&lt;/p&gt;

&lt;p&gt;I finally got annoyed enough to go through the trouble of unsubscribing from their marketing list. This shouldn't have been necessary in the first place - I never agreed to let them send me these emails. Unsubscribing turned out to be multiple steps - you actually have to confirm that you want to opt out. After clicking on the unsubscribe url, they send me an email to confirm that I'm the guy who really wants to unsubscribe, then I have to click on that url again. I've done that, about 5 minutes of my life wasted (slow network speeds here). Bah. Let's see if I continue to receive spam from them.&lt;/p&gt;

&lt;p&gt;On the other hand, another nice virtualization provider, &lt;a href="http://www.parallels.com/"&gt;Parallels&lt;/a&gt; has never spammed me, even though I've actually bought products from them. The only emails I've ever received from them were the purchase confirmation emails and directions on where to download their products. &lt;/p&gt;

&lt;p&gt;Email marketing is cheap and sometimes powerful, but you really have to be careful to avoid annoying your potential customers. I wish people would pay more attention to this. &lt;/p&gt;</description>
                      <author>ken</author>
                      <pubDate>Fri, 11 May 2007 07:33:50 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Tallinn Thoughts</title>
                      <link>http://www.iosn.net/Members/ken/blog/20070309</link>
                      <description>&lt;p&gt;Yet another quickie post with some random thoughts about &lt;a href="http://www.tourism.tallinn.ee/"&gt;Tallinn, Estonia&lt;/a&gt;. Hopefully useful for my colleagues coming over shortly and anyone else who might be visiting soon. I won't touch anything that should be easily accessible from a tourism website.&lt;/p&gt;

&lt;p&gt;First, a couple of thoughts about traveling here - the no-liquids rule and small planes on the final hop here really make it much easier to check in luggage rather than relying on carry-on. Now that flying in EU has the same restrictions on carrying liquids as flying in the US, you pretty much cannot carry any creams, gels or even toothpaste. If you try to stick to carry-on luggage to avoid baggage claim the way I do, you will have to buy everything again when you hit Tallinn. Also, every time I have flown to Tallinn (three times on two different airlines) the final hop uses a very small turbo-propeller driven plane of Russian construction. The problem with these planes is that the overhead compartment is tiny and cannot hold much more than a backpack or a standard briefcase. None of those large carry-ons.&lt;/p&gt;

&lt;p&gt;Flying FinAir from China stops in Helsinki but you can stay in the international section of the airport. No EU (Schengen) visa required. Flying Air China requires changing planes/airlines so you will need an EU visa. Much more convenient to fly FinAir even if the EU visa isn't a hassle.&lt;/p&gt;

&lt;p&gt;Tallinn appears to be pretty safe. There are people walking alone late at night, so violent crime doesn't appear to be a problem for most folk. The city is small enough that you can walk to most places. Bring a comfortable pair of shoes. It also has a lot of beautiful old europe architecture so bring a camera if you are into snapping pictures.&lt;/p&gt;

&lt;p&gt;Lots of decent western food places here, but other than Indian and Japanese, not a lot of Asian food. Prices are about double the price for western food in both Malaysia or Beijing and many times the price of a standard meal in either country. Still quite cheap for an european country though. &lt;/p&gt;

&lt;p&gt;A very nice place overall. I could be convinced to come here a lot more often ...&lt;/p&gt;
</description>
                      <author>ken</author>
                      <pubDate>Fri, 09 Mar 2007 14:41:29 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>The Writing On The Wall ...</title>
                      <link>http://www.iosn.net/Members/ken/blog/20070224</link>
                      <description>&lt;p&gt;Just a quickie on a thought that struck me while responding to a friend's email - too many students are not aware of the quiet FOSS wave that is happening under the surface, particularly here in China. They are still focusing their learning efforts on Java, C# and Windows without a thought to picking up basic FOSS skills.&lt;/p&gt;

&lt;p&gt;Yet if you pay attention, you can see the trend. From today's news, &lt;a href="http://www.internetnews.com/dev-news/article.php/3661481"&gt;HP made $25 million in sales directly related to Debian GNU/Linux&lt;/a&gt;. This is just one Linux distribution mind you, and one with no commercial company or advertising budget behind it. &lt;a href="http://www.exoweb.net"&gt;Exoweb&lt;/a&gt; is slightly responsible for that as we (and our clients) bought more than $15k of servers from them last year. :)&lt;/p&gt;

&lt;p&gt;In our daily work integrating with third party providers, we are seeing more and more FOSS based products. Not all are fully FOSS based - many are WIMP (Windows, IIS, MySQL and PHP). This FOSS trend is especially noticeable from startup companies or companies with limited legacy infrastructure. We love this of course, since they are typically easier for us to integrate, host and maintain. Yes, we (or our clients) do pay a fair amount for these products so they are making a lot of money while being FOSS based.&lt;/p&gt;

&lt;p&gt;My point? For anyone who really wants to be in the tech industry, FOSS skills, no matter how basic, will give you a valuable advantage. Otherwise you will be locking yourself out of a rapidly growing portion of the industry. Besides, as a craftsman, wouldn't you want to know every tool available? Otherwise how can you use the right tool for the job? &lt;/p&gt;
</description>
                      <author>ken</author>
                      <pubDate>Sat, 24 Feb 2007 11:14:02 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>2006 Year End Thoughts</title>
                      <link>http://www.iosn.net/Members/ken/blog/20061231</link>
                      <description>&lt;p&gt; Can't believe another year has come and gone. It seems like only yesterday that I wrote the 2005 Year End Thoughts, and only a few days ago that I came back to China and started my career in &lt;a href="http://www.exoweb.net"&gt;Exoweb&lt;/a&gt;. Time really does fly when you are having fun, and I certainly have been having a great deal of fun in the last few years. Sometimes stressful and sleepless fun, but fun all the same :)&lt;/p&gt;

&lt;p&gt;General summary of thoughts:&lt;/p&gt;

&lt;p&gt;Things that I am happy about:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Exoweb
    &lt;ul&gt;
      &lt;li&gt;Teams improving, growing&lt;/li&gt;
      &lt;li&gt;Culture&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Personal
    &lt;ul&gt;
      &lt;li&gt;Facing the different challenges over the last year&lt;/li&gt;
      &lt;li&gt;Learning to delegate&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Things that need to be improved:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Exoweb
    &lt;ul&gt;
      &lt;li&gt;Giving back to FOSS&lt;/li&gt;
      &lt;li&gt;Creating a continuous learning culture&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Personal
    &lt;ul&gt;
      &lt;li&gt;Working with people&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Goals for 2007: &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Make self (almost) redundant&lt;/li&gt;
  &lt;li&gt;Teach, not do&lt;/li&gt;
&lt;/ul&gt;

&lt;a href="http://www.iosn.net/Members/ken/blog/20061231"&gt;Read more ...&lt;/a&gt;
</description>
                      <author>ken</author>
                      <pubDate>Sun, 31 Dec 2006 18:20:34 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[<h2>Things that I am happy about - Exoweb</h2>

<p><b>Teams improving and growing</b> - This last year has really seen a dramatic growth in the quality of the people within Exoweb. While continuously improving our HR process has helped us get some really good people, the major change has been the steady improvement of people already within Exoweb. There are various reasons for this but ultimately, I believe it is because we have finally passed a critical mass of smart people and everyone is now learning from each other. Processes/practices such as code reviews, ExoForums and blogging have helped encourage the sharing of information and it appears to be self-perpetuating. People are demanding high standards from each other and everyone brings in their own knowledge and skills. My primary concern is no longer raising standards but knowing when to step aside and let people more knowledgable than me figure things out. </p>

<p><b>Culture</b> - building a good company culture isn't easy and I'll be one of the first to admit that I haven't really got the faintest clue how to go about it. Culture building is all about people and people skills aren't my greatest strength. Perhaps it is because I'm so clueless about culture building that I'm amazed that Exoweb has somehow produced (possibly by accident) a relaxed, open culture that many people find really attractive and unique. It's not perfect by a long shot and there's still so much more we can improve. Yet it is quite gratifying to hear people tell me that they find the culture of Exoweb one of the key selling points of the company and that they have never worked in a better place. Not everyone feels that way of course, but enough do. Personally, I've never worked with a better bunch of people, in a more comfortable environment. I am naturally biased though. </p>

<h2>Things that I am happy about - Personal</h2>

<p><b>Facing and Surviving the Challenges of the 2006</b> - 2004 and 2005 had different, lower level challenges for me. I joined Exoweb in 2004 as a senior team lead, so my main concern then was ensuring the success of a project with a small (5 devs total) team. The challenges then were a lot simpler! 2005 brought the challenge of maintaining quality in a team that was growing too large for me to personally review all code. 2006 was quite different - Exoweb continued to grow and the challenges that came up daily kept changing. The early part of 2006 was a battle to figure out how to scale technically. Or rather, how to ensure that the things I used to do still were being done when it was becoming obvious that one person could not possibly do it all.</p>

<p>The technical aspect of that problem was solved in early to mid 2006, among other things by the growing abilities of the team and instituting a more scalable version of code reviews (we created a cool trac plugin for this). This had the most fortuitous side effect of promoting learning even more from each other. With a great team that is continuously learning, most of my earlier technical challenges faded away. </p>

<p>Late 2006 was more an issue of scaling Project and Human Resources (HR) management responsibilities. The funny part was that as my team got better (and larger), the seniors within the team came to the conclusion that they did not want to do either PM or HR work, pushing all that to me. As a result, the workload in this aspect grew a lot faster than the team did in 2006. Surviving the PM aspect was done by the fine art of delegation (more about that later) while the HR aspect is still a serious work in progress.</p>

<p>Ultimately, I'm happy that I survived all the challenges of 2006. Ken in 2005, looking at these challenges, would have been quite intimidated. It was a good idea that I went into 2006 blind to the challenges ahead :). Looking back, I can certainly see many areas I could have done things far better but at least I can say that I haven't made an absolute mess of things. </p>

<p><b>Learning to Delegate</b> - Every book about management talks about how one needs to delegate. Yet they tend to gloss over <b>how</b> to delegate. One thing I quickly learned long ago was that if you just pass a task to someone and hope that they will do it right, 90% of the time things turn out badly. It took some experimentation and trial and error, but in the end, my great lesson in 2006 was realizing that it all boiled down to figuring out who I could delegate what to. Everyone is different, with different strengths and weaknesses. The challenge was to find someone (or combination of people) that had the right strengths to do the task on hand. Not a skill I am strong at (more later about this), so it was harder than it should have been. But as I write this today, I have a good team that functions very well together, with most of the critical tasks covered and working well together. </p>

<p>Yes, I realize this may seem blindingly obvious to some people but it wasn't that obvious to me. </p>

<h2>Things that need to be improved - Exoweb</h2>

<p><b>Giving back to FOSS</b> - Despite being strong believers and users of Free/Open Source Software, we don't contribute back nearly enough. Sure, some of us personally have done some work in FOSS advocacy or have code contributions here and there. However, as a company, I am still quite dissatisfied with what we have contributed back. Besides contributing server space (<a href="http://python.cn/">python.cn</a>, <a href="http://www.beijinglug.org/usergroup/homepage">Beijing LUG</a>, etc), software usage, bug reports and a few patches here and there, we have given very little back to the ecosystem that makes our business model possible. Despite having people who profess to genuinely believe in FOSS, despite having a contribute back policy and allocating a percentage of developers time to such activities, too little is contributed back. This is something that we will have to focus more on in 2007.</p>

<p><b>Creating a continuous learning culture</b> - Possibly because most of the seniors of Exoweb possess either the <a href="http://gmj.gallup.com/content/694/Learner.aspx">Learner</a> or <a href="http://gmj.gallup.com/content/688/Input.aspx">Input</a> talents (see <a href="http://www.amazon.co.uk/First-Break-Rules-Marcus-Buckingham/dp/1416502661/ref=pd_sim_b_2/026-0390654-8597268">First Break All The Rules</a>), we tend to expect that everyone will be like us - given the opportunity, will always try to learn and improve themselves. Unfortunately, that is not really the case. Some really talented software developers don't seek out knowledge for the sake of learning but are satisfied with learning only what is required to complete their task. Or despite the best intentions, they need a little external pressure. So despite having a 10% time self-improvement/contribute back policy in Exoweb, too many people do not take advantage of this. Yet continuous learning is a vital aspect of continuously improving the abilities of the organization.</p>

<h2>Things that need to be improved - Personal</h2>

<p><b>Working with People</b> - I've touched on this previously, but I'm basically much better at computers and hardware than people. To me, computers seem so predictable - given a fixed input, they typically produce a fixed output. Humans are so much more variable, with too many factors to consider. Yet management is about people, not about computers. According to the <a href="http://en.wikipedia.org/wiki/Peter_principle">Peter Principle</a>, I'm quickly rising to my level of incompetence :)</p>

<p>However, the level of understanding of people I'm looking for might be a bit higher than most. The ability to figure out a person's strengths and weaknesses and combine them with other people/processes that complement their strengths and compensate for their weaknesses is a very rare talent. If you look at most management practices today, they are built to solve this talent shortage. Most large organizations have processes that cater to the lowest common denominator - they allow the organization to survive mistakes made by less competent people, but they get in the way of the truly talented hitting their full potential. We sometimes call that bureaucracy. </p>

<p>Most managers are either poor at or unwilling to manage individuals. It is hard to manage individuals - you have to really understand your team and know how to combine them to achieve maximum results. Most prefer to assume that every human being is interchangeable, that one person can be swapped for another without problems. This only works if you are using people at the lowest of their abilities, so that the job can be done by almost anyone. It does not work when you are trying to make the most out of everyone's unique combination of strengths and talents. </p>

<p>This will probably be my primary challenge in 2007 - to become competent at managing individuals.</p>

<h2>Goals for 2007</h2>

<p><b>Make myself (almost) redundant</b> - I have delegated a large amount of my work to others already. I hope to finish this in 2007. Might be a while before I can delegate all the HR management aspects, but all the technical and project management aspects should be possible within 2007. I certainly hope to organize things so that I can go on a month long vacation and no one would notice :)</p>

<p><b>Teach, not do</b> - One thing that is really hard for me - delegating tasks to someone else instead of just rolling up my sleeves and getting it done in a couple of hours. Only problem is that there are only so few hours in a day and so many problems that need to get resolved. Making myself redundant requires that I restrain myself from digging into problems and instead focus on teaching/guiding others to take over from me. Teaching is a large investment of time - it is always faster to do it yourself than to teach. But without this investment, the organization will never scale.</p>

<p>2007 looks like it will be bringing quite some challenges, many in areas where my strengths do not lie. Still, I wouldn't have it any other way. Life isn't fun without challenges and I can't think of a better team of people to face the unknown with than the crew of Exoweb. Happy New Year everyone! </p>
]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>Time To Turn In My Geek License</title>
                      <link>http://www.iosn.net/Members/ken/blog/20061228</link>
                      <description>&lt;p&gt;Apparently, I'm spending too much time doing management and turning into a &lt;a href="http://en.wikipedia.org/wiki/Pointy_Haired_Boss"&gt;PHB&lt;/a&gt;. No one seems to think I'm technically competent anymore. Some recent conversations:&lt;/p&gt;

&lt;p&gt;While training a junior project manager:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Me: "So remember, with new tickets, ask a technical senior to help you estimate how many hours are required to complete the task ..."&lt;/p&gt;

  &lt;p&gt;A few days later, during the usual morning meeting discussing what tickets to create, prioritize, etc:&lt;/p&gt;

  &lt;p&gt;Me: "... so I think we should put this task in Milestone x, priority critical, estimated time 8 hours"&lt;br /&gt;

  Jr: "Ok, sounds good. I'll go get an estimate from senior x and take care of it." &lt;br /&gt;

  Me: "Wha ... didn't I just give you an estimate?" &lt;br /&gt;

  Jr: "Yes, but you said I needed an estimate from a senior ..."&lt;/p&gt;

&lt;/blockquote&gt;

&lt;p&gt;While showing a relatively new developer the rankings of everyone in &lt;a href="http://www.exoweb.net"&gt;Exoweb&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;

  &lt;p&gt;Me: "... and here we have the mid-levels devs, split in 3 sub levels. Finally, these are the seniors ..."&lt;br /&gt;

  Dev: "Wait, you're considered a senior?" &lt;/p&gt;

&lt;/blockquote&gt;

&lt;p&gt;After relating the above two incidents to yet another developer: &lt;/p&gt;

&lt;blockquote&gt;

  &lt;p&gt;Me: "... so apparently they don't think I'm a senior anymore ..."&lt;br /&gt;

  Dev: "Well, if you don't tell them, it's not obvious ..."&lt;/p&gt;

&lt;/blockquote&gt;

&lt;p&gt;If anyone wants me, I'll be out getting a haircut, buying some suits and gaining a lot of weight ...&lt;/p&gt;
</description>
                      <author>ken</author>
                      <pubDate>Sun, 31 Dec 2006 12:28:40 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[]]>
      </content:encoded>
     

                  </item>

            
	   	
        
        
            
                  <item>
                      <title>KISS (or why MS CS students have a bad time in interviews ...)</title>
                      <link>http://www.iosn.net/Members/ken/blog/20061205</link>
                      <description>&lt;p&gt;It's that time of the year when Master's students are hunting for jobs in China and we are flooded with resumes from students with Masters of Science in Computer Science (MScCS). We've spent the last couple of weekends interviewing the candidates that passed the front interviews and it has not been pretty. In fact, it has been pretty sad.&lt;/p&gt;

&lt;p&gt;The biggest problem we encounter with MScCS grads is made very apparent in how they approach one of the our typical programming problems. This particular problem is fairly simple and with a little bit of thought, can be made into a linear (computer performs x more calculations for every element added to n, where x is a constant number) or O(n) type of equation. Most competent people will come up with a O(n^2) algorithm (computer performs n operations for every additional element added to n, resulting in rapidly increasing number of calculations per element added) to it at first, then after a little thought, realize that there are a lot of duplicated operations, refactor that out and come up with the linear solution. &lt;/p&gt;

&lt;p&gt;MScCS are a little different - almost all the ones we have interviewed to date encountered this problem, probably came up with the O(n^2) equation ... then went off the deep end. They would inevitably come up with complex, fancy algorithms that utterly failed to solve the problem. These fancy algorithms would often handle the common case but fail on the boundary cases. They were fragile, easily tricked or prone to failure. When these flaws were pointed out, these candidates would come up with even more complex algorithms or add a lot more if/else checks ... resulting in even more brittle and unreliable code. None of them, if unaided, could come up with the ideal solution. &lt;/p&gt;

&lt;p&gt;Well, that's not really true. One particular candidate, after coming up with 4 complex, unworkable algorithms, finally said, "well, since you have given me such a tight time limit, I have no choice but to brute force it." He then proceeded to give the ideal solution. Linear time, handles all boundary cases. But he would rather give 4 non-working solutions rather than the working, "inelegant" solution.&lt;/p&gt;

&lt;p&gt;What I find strange and rather disturbing about these interviews is that it is somehow related to the mindset of those who are doing their MScCS. Bachelor level grads or people with several years of working experience rarely make this mistake. They either do it right or not at all. Yet for some strange reason, the MScCS students seem to value fancy algorithms over _working_ algorithms. &lt;/p&gt;

&lt;p&gt;Maybe it's the MScCS curriculum here in China which tries to focus on fancy algorithms. Maybe it's just that the MScCS feel the need to prove that their abilities are above the norm for CS graduates. Maybe we just have incredibly bad luck with our candidates. Whatever the reason, extremely few MScCS fresh grads have passed our interviews. As you can imagine, in a production environment, we highly value working code and eschew the fancy algorithms, especially algorithms that needlessly complex. Simplicity and correctness is far more important in our craft. &lt;/p&gt;

&lt;p&gt;The famous quote attributed to Brian Kernigham comes to mind:&lt;/p&gt;

&lt;BLOCKQUOTE&gt;"Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?"&lt;/BLOCKQUOTE&gt;

&lt;p&gt;When writing algorithms, another quote from Agile development comes to mind - "do the simplest thing that can possibly work." Keep It Simple ... er, let's call it Keep It Stupidly Simple (KISS) and avoid insulting anyone :)&lt;/p&gt;</description>
                      <author>ken</author>
                      <pubDate>Tue, 05 Dec 2006 21:59:55 +0530</pubDate>
                      
      <content:encoded>
        <![CDATA[]]>
      </content:encoded>
     

                  </item>

            
	   	
        


    </channel>

</rss>

