Monday Apr 13, 2009

I attended the Qcon 2009 Beijing Conference from Apr.07 ~ Apr.09. Qcon is an enterprise software development conference. This conference was held by InfoQ(Information Queue) Chinese website (http://www.infoq.com/cn) which is an independent online community focused on change and innovation in enterprise software development.The main topics of the conference are related to Agile, Java, Cloud Computing, Architecture, RIA and so on. Some knowledgeable experts from each areas made speeches at the meeting.


Spring and opensource


Spring is the technology that draws people's interests recently. It employs several cutting edge technologies like IOC and AOP to ease the development burden in web and enterprise applications.

I met Rod Johonson on the meeting, who is the founder of SpringSource that is the company innovated Spring Framework for Java. According to Rod, lightweight container and user friendly API is the future of web development. And in my experience, Spring is such a lightweight and flexible framework.

"In terms of simplification, I think the Java language itself did a pretty good job of simplifying a lot of constructs, certainly compared to the history behind it with C++. And I think that [with] Java 5, the language level continues that. In terms of where we find the greatest complexity, it¡¯s really in the area of server-side Java, and I think we¡¯ve made huge progress in the last few years towards POJO-based (Plain Old Java Objects) development. I think that certainly the reality is server-side Java development today is much simpler than it was with the original J2EE model.", Rod said in his speech.

I totally agree with that because I had a hard experience in writing EJBs. EJB solution is too heavy to generate steep learning curve and produce high productivity in small teams. Although it is part of the Java EE standard, a more lightweight technology that can save effort on coding and configuration is apparently attractive. Improving productivity is more important than the standard itself.

Open sourced Tomcat is far more popular than its commercial counterparts like WebLogic and WebSphere. Its functions are limited. But it is light enough to deploy easily in most environment, and robust enough to support small to middle applications. Talking Spring and tomcat, Rod Johonson mentioned open source is the direction of software. He said the community is a big driving force, it has more power than ever. The power is not controlled by a one or two companies like Microsoft or IBM anymore. It's a trend to open source and it's important for individuals as well as companies to contribute to open community.

In answer to the interesting question raised by another Sun Engineer, Rod gave suggestions about "How individual can benefit from open source". "Each individuals made significant to open community can show their own brand. After you establish your brand, you will be invited to speak, write books, and do consulting works. Big companies may hire you as well because your personal reputation will also help your employer. "


RIA and UI design

RIA (Rich Internet Application) is a really hot and practical topic.

The speaker is Lv Jianwei, the team leader of Netease.com, author of bestseller Out of Software Workshop.

"User experience is all about value and satisfaction. There're three main barriers in developing RIA web applications. Firstly, it's department mismatch. There should be some independent departments responsible for design and development. Second is tools mismatch. Third, skills mismatch. " Said by Jianwei.

The common work flow of UI design should be :

Wireframe --> Mockup --> Prototype --> Final look and feel

The wireframe graph is the very basic design concept composed by only lines and basic shapes. It is usually drawn by hand, sometimes can be made in software. Mockup looks more like the real UI except it is static and drawn by graphic software like Photoshop. Prototype is the real software with undecorated UI and fake functions. It is to verify the dynamic aspect of the UI. Final L&F put everything together at last. Every step will be executed only after the design in previous step is verified.

Further more, a good design depends on not only good designers and good programmers, but also with the expertise who knows the end users, and even psychology. But in real projects, programmers usually decide the final design, It is a common phenomena that the designer are not respected enough in the team. When a design is hard to implement because of programmers' capability constraints, designers will usually be forced to give up. So the final look and feel may much differentiate from the original design. Jianwei also gave an advice to the programmers that they should expand their skill set, focus on not only programming but also the sense of beauty and art.

Connecting to my works, I have the same feeling of his "skills mismatch" mentioned by Jianwei. Designers and programmer have the different background and different skill sets. Back to the time when I designed UI of HCTS, it was a painful memory because I do not have any sense of selecting color and arranging layout.

Except the traditional AJAX(YUI, GWT, Dojo...) methods, there're some main plugins for RIA technologies, like Adobe's AIR/Flex, Microsoft's Silverlight and Sun's JavaFX. Flex was highly recommended in the conference. It seems that JavaFX has not yet gained enough attention among the RIA experts. It is a promising technology but still need more marketing enforcement from Sun in my opinion.


Cloud Computing

Cloud Computing was a hot topic in the conference. The traditional IT companies like Microsoft, IBM, SUN and VMware have their own explanation and solution for Cloud Computing. In my opinion, Cloud is a service based computing. Everything can be a service. A machine with a specific configuration and environement can be reached by service. Everything you can do on a physical machine can be done in cloud. It is transparent to the users. By Cloud Computing, resources(CPU, Memory, Storage, etc) can get the maximum use and workforce can be saved as well. Microsoft, IBM, SUN and VMWare gave their own solutiions in the conference. Seems VMWare is more advanced in mobile area. Their mobile virtualization platform (MVP) will be out in the year.

I also got a chance to talk to the guys from tencent. They have their own requirement of Cloud Computing and they're making their own "Clouds". The purpose of their clouds is to satisfy their own business requirement but not to provide service to others and they won't adopt to any solutions provided by other companies.

Another thing I learned is more and more companies choose to use PCs groups to replace big servers. The performance and reliability can be guaranteed but the cost is decreased. Google is a very good example for this.


Case studies from eBay and taobao

"90% code of taobao is written in JAVA", said by Ben Wang, the CTO of taobao.com. Many of us may doubt whether JAVA is capable for constructing such a big website with so many PVs everyday. Actually, taobao is not the only large website written in JAVA. eBay and Amazon are also constructed in Java. JAVA is a good choice for large web applications. The architect of taobao gave a high level introduction of taotao's current architecture and how taotao was migrated from a traditional LAMP(Linux + Apache + Mysql + Php) web application to a JAVA web application. Actually, before they chose to use spring framework, they developed their own IOC container and MVC framework to satisfy their own development requirement. So an outstanding framework comes from the development progress and is invented to improve the productivity of development. By using such kind of framework, developers could be released from the repeated configuration processes and they can more focus on the business layer.

Randy Shoup, the architect of eBay made a speech of lessons from eBay.
The design of eBay follows the principles as below:
1. Partition Everything
2. Async Everywhere
3. Automate Everything
4. Remember Everything Fails


Thoughts for our own products


1. Improving HCTS framework, provide simpler interfaces to test case developers. The current framework is a little bit complex for the case developers to use. Or write a UI to help developers construct/configure their testcase/test instead of writing XML files by hand.
2. Process improvement. We are developing several products in parallel. So Agile may a suitable for us to try. Some timesthe process is quite complex for HCTS product. However, the complex process may not guarantee the quality. We should find an efficient way to change the current situation.
3. Automate the repeated work or share the resources. Actually, it's not necessary for each one of us set up the same environment. If we have a resource pool, it may save a lot of workforce and we can mainly focus on our core business.
4. As for the trend of Cloud Computing and virtualization, I am thinking whether we can provide some kind of service on the internet to do some light weight test for the customers?