Profiel van Veikup XiaBLOG METAFoto'sWeblogLijstenMeer Extra Help

Weblog


    Reason or Result?

    Chinese girls are always complaining that they are not able to deal with programming related problems. Just now I sent a interview paper test to one of my college classmates - Yan, who is a double Master of Computer Science from UK, planning to get a job in VIA Shanghai.
    Absolutely, I know, she can not make it...
     
    For me she is not the first case of this kind. And then these girl will tell me: "That's the reason why I'm not suitable for these jobs - they are for boys." Opps, it is a reason or result? In my mind, the only reason why these girls are not good at programming skills, is that they are afraid of it. They think the job is not suitable for girls at the beginning - that's the key point. Definitely, however, the 99.8% of our DNA is same.
     
    And the last question is, why do you choose CS when entering colleges? You girls are wasting boys' opportunity.

    Drive your project by TODO list?

    This post is very simple and short but very important.
     
    The most important reason why today's organization's low efficiency, is that we are still in a "planned economy system".
    The execution of our organization should be changed from plan-driven to task-driven. A task has several properties, include importance, emergency, duration, difficulty, quality (and any other necessary properties). All of these properties come out a "task rank". The task rank describes the task's value. Then the model is:
     
    Task Rank <-> Performance <-> Employee Title/Salary
     
    The project manager should keep preparing the task list (like the work items when he is planning a project). The other team players would be able to see this list in time, and take a think of for which tasks he is capable to get them done. Then the project manager would receive a lot of task requests. He can choose right ones to complete the tasks according to his information of the requesters. Whenever the task has been done, he can evaluate the completion quality (in %). Employee performance evaluation is always nearly a impossible mission in traditional organizations, but it is much more simple in this model. We can refer to tasks data.
     
    Then how about the plan? Our clients always keep asking "when will you get things done"! OK, project manager also need to give them a detailed plan and proceed it, but the plan execution should not be driven by the detailed plans (plans of plans). I think this model is much better. But how to make sure the whole plan would be done on time? A successful project is made up of two factors: plan & execution. The plan should be done by experianced project managers. While this model is focused on the other one.
     
    About how to breakdwon the project into small work items to build the TODO list, it is totally another question. Fortunately, Work Breakdown Structure (WBS) theory has already existed for a long time. Whatever, a task means "something todo for the project completion".
     
    Advantages:
    .....
     
    Disadvantages:
    .....
     
     --- updating

    Never tell me you are busy

    I really don't think it is a good habit to keep complaining "I'm busy~ I'm busy~ I'm busy~ ". Maybe at least you should tell me why you are busy. Everyone has lots of things to do everyday, and these things should be done in a right order. Definitely the most import and most emergent things should be taken care of first, and you will recognize them by analysing them carefully. However, when asked something to do, if you just answer "I'm busy right now...", the asker would be puzzled because he don't know if what he asked is not important, or if you are really busy in other emergency. The worse is he may guess he is not so important in your mind - I don't think you want to see that.
     
    I think it is not necessary to use the word "busy". If you don't have time to do something, you can directly tell him/she what you are busy in. It is also very beneficial to team work.

    Thought in Sunday morning

    Do everything earier
     
    That means we should prepare ourselves in advance for everything - it is easier said then done. First we should be able to forecast something will happend, then it can be possible to analyse the problems in the domain to think about how to solve them. When asked how can be a richest men in the world, Bill Gates said that's not because he knew everyhing, but he could forecast everything (at least many things). So, to do everything earier, sometimes it is not a good practice, but a kind of ability (except you have exactly known what to do next because your supervisor has informed you all about them).
     
    Interest vs. Work
     
    Someone said one of the saddest things in the world is the work will destroy your interest. However, your interest in something always make you to be good at them, even make you becoming a specialist of them. On the other hand, it will also cause you to find a job that is in the same field, because you want to find a best approach to earn more money - the approach is to do what you are good at.
     
    Well, according to the analysis above, the only solution for this problem is to move your interest into how to earn more money, and then you will be good at earning money, and then you will be a specialist of earning money ... oops, we call them "business man". Oh, however, you have to know money is not everything; interest may be more important for your life. Everyone should make their decision what to choose, if your interest is not "earning more money". Someone in this planet had never puzzled with this problem, such as Bill Gates.
     
    What I have learned in the past two years after I graduated
     
    I'm always thinking about this question by/from myself. Technical skills improvement? No, most of them are learned in the university. I think the most important thing I've learned is believing every thing is possible. Again, it is easier said then done. When I'm trying to make 20% possibility to be above 90% of success rate, I'm growing up faster then other ones in the same age.
     
    "Everything is possible", the word from LINING's advertisement, it really changed me a lot. My another favourite word is: "The door will never open except you knock it" - from someone's blog.

    Considering my next book

    As a .NET developer I'm interested in how to connect managed and unmanaged world these months. That is, how to invoke a windows API in C#? or how to make use of Windows Shell? I know there are rare scenarios that a .NET developer need to do this kind of job, but sometimes it is the real interesting field in .NET programming. Moreover, I bet there will be more and more windows desktop applications written in .NET languages such as C#, include those applications running on mobile devices, especially after Windows Vista will be lunched next year. That means you should deal with windows programming concept itself, but not ASP.NET that is only simple HTML tags making up. So it is better to prepare yourself earlier. For me, I think a book focusing on this field (interoperability with managed and unmanaged codes) should be very valuable, and that's the reason why I'd like to write this entry now.
     
    Basically, the interoperablity contains following concepts:
    • P/Invoke with C style exported functions and structs
    • Make use of COM components with IDispatch interfaces
    • Make use of COM components with IUnknown interfaces
    • Write a component in managed code for unmanaged consumers
    • CLR hosting with unmanaged applications

    All of them are really complex if you are not familiar with the CLR's marshalling behaviour. And to achieve this interoperablity you'd better have enough internal knowledge with both sides at the same time. Since most of the developers do not understand both of them, however, for the requirement that we do need to write desktop application with .NET in the future, it is necessary to have a read into this kind of book. Alternatively, this kind of book should also be useful for those developers who want to learn native programming concepts but only working at .NET fields. I think it is not a bad idea.

     

    I have talked with a publisher several days ago, and they told me they totally supported me.  It is another good news, while I'm considering if it is possible to write the book in double languages at a same time - such as chinese and korean, or japanese. I'm looking for the MVPs from these countries these days also.

    New life started from here

    It is time the world changing so fast. I've got three good news today (and yesterday):
    • Get a new job with better title and better salary (it is doubled)
    • My MVP award is renewed (2006.7-2007.7)
    • Be recommend as "CSDN第二届优秀版主" (as a big board manager of CSDN .NET forum)

    Unfortunately, I fell in love with a girl these months, who has already been in a relationship. I know you are not very satisfied with the one, and you has the same feeling as me. But tomorrow I will go to Beijing for business for about two months, that is 1453 kilometers away; will you still remember me?

    Be happy, be busy, be rich

    The most important thing in our life is to be happy. I know everyone is busy for your work or family stuff, while there are so many little things could also make you happier, but not only these things like traveling around the world, which will take several weeks of time. These months I'm always considering these little things in our life, and now I want to write them done. It is really easy to be happy everyday, you can
    • Play billiards with your father and uncles
    • Play chess or card with your family
    • Fix a bug from your code (if you are a programmer like me)
    • Have a dinner with your best friends (pls drink enough beer, but don't drink too much)
    • Find some new friends that have a same hobby with you (even include basketball, swimming, etc)
    • Do something together with your sweetie (anything is OK, such as preparing an Xmas Email together to your parents)
    • Sing a song loudly alone in your house in the midnight
    • Call an old friend that is not in the same city or country with you
    • Take a wash
    • Make a meal by yourself in the weekend
    • Add a new entry to you own blog or space (like this)
    • .....

    to be update

    Mother's Day is coming

    The 2nd Sunday of May of every year is our mother's day, and this year's is coming. Are you ready?
     
    In the last year, the gift to my mom is a cell phone for about 2000rmb. It is not very expensive but my dad told me that she never be angry with him in these months - that must be the reason.
    Additionally, it is some kind of parental pride, I'm satisfied with this too.
     
    For the labor day I went back to my parents' place in 1-3 of may. I don't have much time at home, so I bought the gift of this year for my mom in advance. It is a Haier's automatic dust cleaner - I think this machine will help my mom to save a great deal of time and effort for cleaning the house. My dad agreed with me as well as my mom, while the neighbours complained that the noice is a bit loud.
     
    Bill gates said, 天下最不能等待的事情莫过于孝敬父母. Here we've got a chance, don't miss it.
     
    ----- Updated on 6/22/2006
     
    This is the gift for Father's Day:
     

    Several types of the .NET programmer

    Graduate + .NET Language (like C# or VB.NET) = Primer .NET Programmer
     
    .NET Language + .NET Library (FCL) + .NET Key Features + XML = .NET Programmer
     
    .NET Programmer + HTML + CSS + Javascript = Senior ASP.NET Programmer
     
    .NET Programmer + Understanding of Windows = Windows Forms Programmer
     
    Windows Forms Programmer + VC/MFC Background = Senior Windows Forms Programmer
     
    .NET Programmer + COM/DCOM/COM Plus + Windows Mgnt = Enterprise Services Expert
     
    .NET Programmer + Knowledgeable + Social Experience + OOA/D Skills = Requirement Engineer
     
    Requirement Engineer + Domain Knowledge + Solid Development Skills = Architect
     
    Architect + Several Years of Experience  = Senior Architect
     
    Senior Architect + Domain Expert + Technology Vision + Business Vision = CTO
     
    to be update

    What to do next?

    After translated my book "Enterprise Services with the .NET Framework" with saucer, I found that I don't know what to do when I'm free. I mean, where another shot is, which is valuable and funny either for myself or public. These days I'm considering if it is necessary (or possible) for me to go abroad, and how to prepare for it, include evaluating how much time and money will cost. Is it a good idea? My monther supports me (acturally she always supports me for nearly everything I want to do), while my father is not. But the interesting thing is, most of the friends who are still in foreign countries support me to go abroad, while those who have ever been in a foreign country and in China now told me it is satisfied to stay in China too, the foreign countries may not so good as imagine, etc.
     
    Anyway, I have to finish the following three things first:
    1. The GUI and test cases for my FTP library. There will be a FTP client application which is very like FlashFXP (with tabs), and a FTP client control (as a view) for various of applications, which can be even hosted in Internet Explorer like ActiveX controls.
    2. A tool which can build up a CodeDOM from C# source codes. The syntax tree will be built by ANTLR. It is just a start, you can imagine what can do based on this effort.
    3. Help Broadview to review their new book: "Programming ASP.NET, 3rd Edition". The editor told me I'm the chief reviewer of this book now.

    After that, if I still have time, I'd like to:

    1. Try to understand the new technologies with Windows Vista. Especially WPF and WCF. With WPF (Windows Presentation Foundation), I will write a WPF version of my FTP client application - after the first version is done. With WCF (Windows Communication Foundation), there are so much things to do. Basiclly, I have to understand WS-* first, and learn deep into the new version of .NET Remoting. And then, I will try to compare it with Managed COM+ (System.EnterpriseServices).
    2. Get a IELTS Certificate with the score of 7 (at least 6.5). (Or GMAT?...)
    3. Try to find the other half of my life?
    4. Buy a car?  It seems it is not a good time.

    Furthermore, Li Jianzhong's training & consulting company is growing very fast. Maybe there will be lots of work to do in the next several months or years ...

    Trying to be someone normal

    This post is written to myself and my friends - those friends who know me and my situation. And to explain my activities in Infosys this week.
     
    I'm not lonely, although I'm always alone and I'm single. But I have to admit that I'm not a gregarious boy. - This is the background.
     
    In the last week, I send a request to my SPM to move to RH base of Infosys Shanghai. But this strange behavior causes lots of talks about me. (No one in Infosys Shanghai like RH, except our boss, I think.) The questions are something like:
     
    "It is for a girl in RH."
    I totally understand their thought. The day I moved to RH is our Valentine's day - 2/14/2006. But I have to inform you someting about the situation, actually I planned to move there in 2/13, but I was not in company on that day for some personal issues.
     
    "For the appraisal in Feb."
    It's really a very moment. But do you really think I need to do something like this to get a promotion? I'm Vista in Infosys, that's enough.
     
    "For the ENPC project for Guangdong mobile."
    Although I'm the requirement engineer of this project, I don't like this project. (Again, for some personal issues in Infosys.) My seat is near by their team - but it explains nothing. I will be in a new project very soon, as SPM's word.
     
    Ok, let me tell you the truth: The reason why I moved to RH is because I love the shuttle between subway and office :-)
    As the title of this entry, I'd like to be someone normal. The shuttle bus's schedule will help me to normalize my life. You can never imagine this - except you really know me.
     
    RH: Infosys Shanghai's office in River Harbor (浦东-张江-集电港)

    FtpClient Library 4.0.2237 released

    I released the new version of my FtpClient Library to gotdotnet.com on 2/15/2006.
     
     
    A friend from my msn contacts asked me: Why did you insist on such a old-style technology? We use BT (BitTorrent) or eDonkey today! And besides, .NET 2.0 has its build-in support for FTP tasks.
     
    It is not something like re-invent a wheel. When you trying to dig into the FtpWebRequest and FtpWebResponse classes of .NET 2.0, you will find that they are only a very low-level wrapper for FTP operations. These two classes are satisfied with simple FTP tasks, but that's not very enough for large-scale or enterprise ready solutions. And that's ture for most of the other FTP libraries in .NET languages such as C#. I think they are not rich enough - at least nearly all of them do not have the support of FTP queue.
     
    BitTorrent and FTP are not the same thing. Today the FTP client applications are very mature, and so do BitTorrent clients. My goal is not to implement a new FTP client application, but just a library for any other solution that needs FTP technologies (based on .NET, as a client). However, I do have a implement of client application, although it is not my goal. It's very like FlashFXP, and I wrote it to test my library to make sure it is ready for various FTP related requirements.
     
    GPL or BSD
     
    I choosed the GPL license for this project. So, any other application that uses this library should be open-souce too. BSD license don't have this limitation, but I decided to forget it. That's because there are so many unscrupulous programmers in the world (especially in China), they will do anything with your code, include selling - I can imagine.

    However, if you want to use it in your commercial projects, you can contact me (then I can upgrade it to a new version without GPL license, it's OK with GPL).
     
    ----- Updated on 3/5/2005
     
    Why I didn't choose SF.net but GotDotNet to host my open-source project?
     
    It is said that China's goverment don't want their citizens to access SF.net for some strange reasons. Indeed, we often can't open SF's web pages in China. GDN is much more stable for chinese programmers.

    The invitation for a book about AJAX

    This post is all about the invitation from Broadview for their planned new book about AJAX, which is about 4 months ago. I've never mentioned it in my blog, space, or homepage. Now, I want to write something about the reason why I refused their invitation.
     
    AJAX: Async Javascript with XML.
    (Frankly speaking, I don't like this definition of AJAX, "X" just means XmlHttp here.)
     
    It looks like a nice opportunity for me, and I have to say thanks to ghj1976 from CSDN for his recommendation and the editor from Broadview. However, I decided to drop it for three reasons:
     
    1. I didn't have time at that period, because I was working on antoher book with my friend saucer: "Enterprise Service with .NET", which was finished before this spring festival.
     
    2. I don't think AJAX is a good subjest for a book, although I really agree it is a very useful technology for web applications.
    With the programmers who are good at Javascript and DHTML, they always know the mean of the term "AJAX", even before it was invented. I have to say AJAX is not something like a new technology, so every programmer has their ideas himslef, and there are too many ways to implement the AJAX style applications. A new book is not necessary ...
    You may have a defferent opinion: Since AJAX is so good a technology, and it will be more and more popular (I believe it), so we need a book and the book will be popular too.
    Then the key point is here: Why the developers need AJAX? They want this technology to improve customers' experiance, and to improve the web application's performance, or any other reasons. Another truth is: Most of the ASP.NET and Java/JSP programmers don't know deeply about Javascript. So, if there is a book we need, it should focus on the usage of AJAX - but not implement. Actually what we need is just a mature platform of AJAX - but it is not exist. So it is not a good time to talk about the book about AJAX. Microsoft's Atlas project might be the only choice of ASP.NET programmers for AJAX after it is released, then you will find the books about AJAX today will go to dustbins. May be next year.
     
    3. I'm familiar with Javascript, and implemented a AJAX framework (as a sample on msdn magazine) for ASP.NET 1.1 last year, but I'm not a expert for AJAX. My opinion may not be true, or some other one may have better ideas. Moreover, since it is not a good way to earn money (even stupid), I don't have any motivations here.
     
    Summary
    AJAX is a useful technology, but it is not mature enough. The implement of AJAX is funny, but we don't need to write it into a book. In the future, there will be only a few AJAX frameworks can survive (I guess the number should be less then five). Such as Microsoft's Atlas for ASP.NET.

    Writting for fun

    I'd like to better my english and make me more international, so I decide to write everything here in english. I'm sorry for my awful english, but I'm sure it will become better and better.
    Actually the spoken english is more important for me currently, but since there is not many opportunities to practice, I think the written english is a good start.
    If there is any mistake with my posts, pls let me know, thanks!
     
    *