Don’t have a goal? then make one

Sounds weird? Don’t misunderstand, I am only talking to myself because the fact has once again proved that I am a lazy bird which only willing to find bugs when hangery. In the last several weeks of job hunting, fighting hard in all kinds of testing, I find that I can work much harder than I expected. And, as the result, I learned so much among which something I will never means to learn. I suddenly realized that I can learn Java classLoading mechanism as the way I learn the specific parameter of the new WS6 jet engine which might equipped on the J10. As programming is my hobby, why not learn as much as I can? why not learn thing "looks unused"? why not learn those tricks under the hood which been described "too theoretical"? IF you want to be a good programmer, you should even improve your typing speed!

I almost wasted the all this week because of temporary lost my target. Although life become relaxed, but it’s actually painful when nothing to do. One week break is long enough and I will try to find some thing to do to keep myself busy.


API Design with Java

An unexpected treasure found on, the original article is at here. Expecting the date of publish…

Table of Contents For
API Design with Java
by Bill Venners


Chapter 1. The API

  • Guideline: Focus on interface, not implementation.
  • Guideline: Design for the user, not for yourself.
  • Guideline: Keep methods, objects, and packages focused.
  • Guideline: Design to prevent client mistakes.
  • Guideline: What to leave in, what to leave out.
  • Guideline: Make common things easy, rare things possible.
  • Guideline: Make the semantic contract as explicit as possible.
  • Guideline: Make sure subtypes fulfill the semantic contracts of their supertypes.
  • Guideline: Avoid optional clauses in semantic contracts.

Chapter 2. Classes, Inheritance, and Composition

  • Guideline 9: Use classes primarily to serve as blueprints for objects.
  • Guideline 10: Use concrete classes to say "What objects are."
  • Guideline 11: Use composition enlist the help of other objects.
  • Guideline 12: Use class extension to model permanent IS-A relationships.
  • Guideline 13: Understand the difference between inheritance and composition.

Chapter 3. interfaces and Abstract Classes

  • Guideline 14: Appreciate the significance of the interface.
  • Guideline 15: Use interfaces to define large families or to say "What objects can do."
  • Guideline 16: Use interface extension to decouple services or restrict the semantic contract.
  • Guideline 17: Consider creating convenience implementations of your interfaces.
  • Guideline 18: Use abstract classes to provide default behavior or establish a small family.

Chapter 4. Design Patterns

  • Guideline 19: Understand the role of intent in design patterns.
  • Guideline 20: Use Decorators to avoid hierarchy explosion.
  • Guideline 21: Use Proxies to control access to objects.
  • Guideline 22: Use Iterators to provide access to the elements of a collection.
  • Guideline 23: Use Chain of Responsibility to delegate along a linked list of objects.
  • Guideline 24: Use Strategies to pass algorithms to objects.
  • Guideline 25: Use Commands to pass requests to objects.
  • Guideline 26: Use Event Generators for asynchronous notification.
  • Guideline 27: Use the Composite Pattern to treat objects and collections uniformly.
  • Guideline 28: Use Factories to delegate the production of objects.
  • Guideline 29: Use Template Methods to delegate to subclasses.

Wish to test Java

News always comes when it’s not expected. It has been almost a month, and SAP letter finally comes. Although SAP is the right type of company for me and I’m not so scare of the logic test, but it was said that the C++ is one part of the exam. I am wondering how the SAP HR choose me while I didn’t write a single letter about C++ ? Since It’s not possible to improve my C++ good enough to cope with the test, I decided to make some preparation of DS and logic and leave C++ alone. But what if they really give me a C++ answer sheet? May Gods help me.

Don’t expect to get More than you paid

Last week is very special to me. I’ve done everything I can but still failed in ThoughtWorks recruitment. This is just the company I dreamed for long. ThoughtWorks is so insteresting to me, not for it’s salary or  free snacks, I feel comfortable with it’s culture, and it’s great to meet some smart guys there. In fact, To improve myself by working with those great guys is my biggest motivation. It’s a fair compitition and I lose the game, there is nothing to conplain. I’am not qualified enought for that position. I am not good enough.

Something about the Huawei’s recriutment, I feel no pain for failling in the 3rd interview. I didn’t PAY enough for that. you can never expect to get more than you paid.