• My Understanding of Architecture as a developer and PM perspective

    I have been working as a software engineer over 10 years, although I was as Project Manager over 2 years before I came to Germany. In this 10 years,  I met and worked different teams and cultures and many projects that some successful and some failed.

    The reason wrote down my understanding today is to reflect in the future.

    To build a good architecture is TAO.

    TAO is  a Chinese word signifying ‘way’, ‘path’, ‘route’, or sometimes more loosely, ‘doctrine’ or ‘principle’.

    Architecture with stakeholders viewpoint

    • A system architecture is built to address the needs, concerns, goals, and objectives of its stakeholders.
    • Designing an architecture should reflect and balance stakeholders(investor, manager, PO, PM, QA, Dev, Ops, customer) different needs.
    • More communication is to avoid the defect of design and the lack of different concerns.

    Architecture capability on no-function requirement

    • Easy to understand,  Understandability. Good documentation, clean code, Unit test are elemental to understand the system.
    • Easy to maintain, Maintainability. It depends on how easy to change, replace, deploy, recover the system at present and in the future.
    • Easy to extend, Extensibility. Simplicity , Modularity, Scalability, Autonomy are helping to extend system smoothly.
    • Time is the key factor to staying productive and cost-efficiency. In rapid web development, architecture measured by the cost of time.
    • Cognitive complexity and control it, keep it simple with system thinking.

    Architecture made by iteration and progression

    • Building Minimum Viable Product(MVP) at first, it helps us get fast feedback from customers. Design driven in UX is minimal MVP.
    • Over Engineering and scope-spreading are big risks. To verify the architecture is to put into the market in earliest possible date.
    • Architecture is not made by design once but by evolution in long-term, there is No Silver Bullet.
    • To look failure in the face, know it, learn it, then improve it.

    Architecting for closed loop feedback

    • No measurement, no improvement
    • Metrics driven development(MDD), using Metrics when taking decisions.
    • Fast feedback loop is agile, metrics is not only Application, Infrastructure, but also business.
    • Loop is a closed and repeat system which likes collection data, measure, react and repeat.
    • Build automated processes included developing, release, deployment and monitoring first before implementation in detail.

    Architecture and organisation culture

    • Architecture is constrained to produce designs which are copies of the communication structures of organisations.
    • If architecture is an iceberg, technology, process, tools are upon the water, but under the water are the employee and culture.
    • Continual experimentation, taking risks and learning from failure.
    • Understanding that repetition and practice is the prerequisite to mastery.
    • Continuous delivery by continuous learning, encourage engineer to learn in working time.
    • Choosing relationship over correctness.

  • STATISTICS & TRUTH

    Knowledge is what we know
    Also, what we know we do not know.
    We discover what we do not know
    Essentially by what we know

    Thus knowledge expands.

    With more knowledge we come to know
    More of what we do not know.

    Thus knowledge expands endlessly.

    All knowledge is, in final analysis, history.
    All sciences are, in the abstract, mathematics.
    All judgements are, in their rationale, statistics.

    From —-C Radhakrishna Rao STATISTICS AND TRUTH
    Putting Chance to Work

  • Developing an App as a designer’s perspective

    After reading 3 books,  I am thinking what I am doing in software industry now in the context of history and future.

    The Human Interface, http://www.amazon.com/Humane-Interface-Directions-Designing-Interactive/dp/0201379376 Jef Raskin, the creator of the Macintosh goes beyond today’s graphic user interfaces to show the web, computers, and information application can be made easier to learn and use.

    Microinteractions, http://www.amazon.com/Microinteractions-Full-Color-Designing-Details/dp/1491945923 Dan Saffer is a Director of Interaction Design at Smart Design.  Since 1995, he has designed appliances, devices, software, websites, and services that are used by millions of people every day.

    Designing Design, http://www.amazon.com/Designing-Design-Kenya-Hara/dp/3037784504 Kenya Hara (1958) is a graphic designer, Professor at the Art University Musashino and communication advisor for Muji.

    It’s very  difficult to switch domains like philosophy, cognitive psychology, design, history, future, western culture, eastern culture. So I try to mix the knowledge with my personal understanding. But Today, I’d like to write these inspirations with my mother language, because it was bogged in the swamp when expressing high-level mindset, but I will translate into English in this month.

    Devils in the details. 这句话被无数次的提起和引用,但是不同的怎么去演绎和理解有千百种。今天我给出一个解释 : “细节之处体现了你的关注,你对这些用户的关爱”. 设计从小的方面入手,在一个大的功能已经设定的环境下,在小的细节的目标上。 If done well, it can be signature moment that increases adoption and customer loyalty. 用户喜欢你的功能来到你这里,而细节又一次成功的挽留住了用户的心,心说到底是一种感情。Detail is the delivery system for emotions.  理解又是一种对用户情感的彻底释放。

    An interface is humane if it is responsive to human needs and considerate of human frailties.  人都是有缺点的,而且有很多共性的缺点,作为我们软件工程师,需要去关爱。如果你连自己的工作都不喜欢,谈何去做好你的软件,谈何你去为客户去考虑一些问题。所以很多工作,必定只是过眼云烟。 We will help the user not only to get the job done, but also be a happier, more productive person. 这是2层的境界去考虑软件。 User do not care about what is inside the box, as long as the box done what need done. 从这个角度来出发,也明白 good algorithm, distribute system, artificial intelligence 的意义何在,意义在于更快的速度,更方便的使用。 What users want is Convenience and Results. 作为一个开放人员, we must cultivate in yourself a sensitivity to the difficulties that people experience.

    Keep the simple simple, 有个经典的计算机哲学 KISS principle  Keep it simple, stupid. 这个是西方软件工程里最高的追求。 更多的时间在工具上,那就更少的时间在真正的工作。最小的输入,最大的输出,这是用户界面的基础,As far as the customer is concerned, the interface is the product. 尽可能的去简化我们的程序,删除没有必要的复杂,没有必要的混乱,没有必要花费时间,防止用户犯错误,或者换句话说不诱导用户犯错,这也是人文主义的体现。在软件工程里,有些原则MinimalismLess is more(worse is better), Don’t repeat yourself (DRY), You aren’t gonna need it  这些都是简单的另一钟解释。

    If let you redesign a cup, how can you do it?  这是日本设计对设计抛出的问题,different perspective, different results. 但是我们必须从不同角度,比如文化。 Change know into unknown, find the true nature and true need. 设计的源泉在生活,我们的历史文化中,我们碰到是问题生活的问题,技术的难题,在历史的长河之中,也是我们另一个源泉。 如果我们能自如的穿梭在已经和未知的世界,历史和未来之中,我们一定能找到适合我们的设计和解决方案。what we can and cannot do (know thyself) —- from Plutarch 这个是对任何解决方案,任何技术的客观的评价。

    The article is only macroscopic view, there ars so many detail solutions in these books. Like GOMS, Mircrointeraction etc.  It will change your mindset.

  • How to solve problems in statu nascendi?

    In statu nascendi” from Latin means in the state of being born(正当将要开始的那个时刻). I found it from the book “How to solve it“, (1945) is a small volume by mathematician George Pólya describing methods of problem solving.  The state could not declare the time that we solve the problem at beginning easily.

    4 Steps to solve problems

    1. we have to understand the problem; we have to see clearly what is required.
    2. we have to see how the various items are connected, how the unknown is linked to the data, in order to obtain the idea of the solution, to make a plan.
    3. we carry out our plan.
    4. we look back at the completed solution, we review and discuss it.

    Some Tips

    • “What is the unknown? What are the data? What is the condition?”
    • “Good ideas are based on past experience and formerly acquired knowledge”
    • “Do you know a related problem”
    • “Look at the unknown! And try to think of a familiar problem having the same or a similar unknown.”
    • “ Here is a problem related to yours and solved before. Could you use it?”
    • “ Could you restate the problem?”
    • “If you cannot solve the proposed problem try to solve first some related problem.”
    • “ Did you use all the data? Did you use the whole condition?”
    • To devise a plan, to conceive the idea of the solution is not easy. It takes so much to succeed; formerly acquired knowledge, good mental habits, concentration upon the purpose, and one more thing: good luck. ”
    • To carry out the plan is much easier; what we need is mainly patience.”
    • “ Can you see clearly that the step is correct? But can you also prove that the step is correct?”
    • “ There remains always something to do; with sufficient study and penetration, we could improve any solution, and, in any case, we can always improve our understanding of the solution.”
    • “Can you check the result? Can you check the argument?”
    • “Can you derive the result differently”
    • “Can you use the result, or the method, for some other problem?”
    • “Do you know any related problem?”
    • “Do you know an analogous problem?”
    • “Here is a problem related to yours and solved before. Can you use it?”
      “Should you introduce some auxiliary element in order to make its use possible?”

    HOW TO SOLVE IT IN A DIALOGUE

    1. Getting Acquainted

    • Q: Where should I start?
      • A: Start from the statement of the problem.
    • Q: What can I do?
      • Visualize the problem as a whole as clearly and as vividly as you can. Do not concern yourself with details for the moment.
    • Q: What can I gain by doing so?
      • You should understand the problem, familiarize yourself with it, impress its purpose on your mind. The attention bestowed on the problem may also stimulate your memory and prepare for the recollection of relevant points.”

    2. Working for Better Understanding

    • Q: Where should I start?
      • Start again from the statement of the problem. Start when this statement is so clear to you and so well impressed on your mind that you may lose sight of it for a while without fear of losing it altogether.
    • Q: What can I do?
      • Isolate the principal parts of your problem. The hypothesis and the conclusion are the principal parts of a “problem to prove”; the unknown, the data, and the conditions are the principal parts of a “problem to find.” Go through the principal parts of your problem, consider them one by one, consider them in turn, consider them in various combinations, relating each detail to other details and each to the whole of the problem.
    • Q: What can I gain by doing so?
      1. You should prepare and clarify details which are likely to play a role afterwards.

    3. Hunting for the Helpful Idea

    • Q:Where should I start?
      • Start from the consideration of the principal parts of your problem. Start when these principal parts are distinctly arranged and clearly conceived, thanks to your previous work, and when your memory seems responsive.
    • Q: What can I do?
      • Consider your problem from various sides and seek contacts with your formerly acquired knowledge.
      • Consider your problem from various sides. Emphasize different parts, examine different details, examine the same details repeatedly but in different ways, combine the details differently, approach them from different sides. Try to see some new meaning in each detail, some new interpretation of the whole.
        Seek contacts with your formerly acquired knowledge. Try to think of what helped you in similar situations in the past. Try to recognize something familiar in what you examine, try to perceive something useful in what you recognize.
    • Q: What could I perceive?
      • A helpful idea, perhaps a decisive idea that shows you at a glance the way to the very end.
      • How can an idea be helpful? It shows you the whole of the way or a part of the way; it suggests to you more or less distinctly how you can proceed. Ideas are more or less complete. You are lucky if you have any idea at all.
    • Q: What can I do with an incomplete idea?
      • You should consider it. If it looks advantageous you should consider it longer. If it looks reliable you should ascertain how far it leads you, and reconsider the situation. The situation has changed, thanks to your helpful idea. Consider the new situation from various sides and seek contacts with your formerly acquired knowledge.
    • Q: What can I gain by doing so again?
      • You may be lucky and have another idea. Perhaps your next idea will lead you to the solution right away. Perhaps you need a few more helpful ideas after the next. Perhaps you will be led astray by some of your ideas. Nevertheless you should be grateful for all new ideas, also for the lesser ones, also for the hazy ones, also for the supplementary ideas adding some precision to a hazy one, or attempting the correction of a less fortunate one. Even if you do not have any appreciable new ideas for a while you should be grateful if your conception of the problem becomes more complete or more coherent, more homogeneous or better balanced.

    4.Carrying Out the Plan

    • Q:Where should I start?
      • Start from the lucky idea that led you to the solution. Start when you feel sure of your grasp of the main connection and you feel confident that you can supply the minor details that may be wanting.
    • Q: What can I do?
      • Make your grasp quite secure. Carry through in detail all the algebraic or geometric operations which you have recognized previously as feasible. Convince yourself of the correctness of each step by formal reasoning, or by intuitive insight, or both ways if you can. If your problem is very complex you may distinguish “great” steps and “small” steps, each great step being composed of several small ones. Check first the great steps, and get down to the smaller ones afterwards.
    • Q:What can I gain by doing so?
      • A presentation of the solution each step of which is correct beyond doubt.

    5.Looking Back

    • Q: Where should I start?
      • From the solution, complete and correct in each detail.
    • Q: What can I do?
      • Consider the solution from various sides and seek contacts with your formerly acquired knowledge.
      •  Consider the details of the solution and try to make them as simple as you can; survey more extensive parts of the solution and try to make them shorter; try to see the whole solution at a glance. Try to modify to their advantage smaller or larger parts of the solution, try to improve the whole solution, to make it intuitive, to fit it into your formerly acquired knowledge as naturally as possible. Scrutinize the method that led you to the solution, try to see its point, and try to make use of it for other problems. Scrutinize the result and try to make use of it for other problems.
    • Q: What can I gain by doing so?
      • You may find a new and better solution, you may discover new and interesting facts. In any case, if you get into the habit of surveying and scrutinizing your solutions in this way, you will acquire some knowledge well ordered and ready to use, and you will develop your ability of solving problems.

    I will stop to copy and paste all sentence from the book, but at least we have an idea to find original reason why we can solve the problem.

  • Rethink & Rebuild

    Doing these tasks,

    1. Rethink the method of learning skills
    2. Rethink the way to solve problems
    3. Rethink the psychology to understand myself
    4. Rethink the healthy and food

    For rebuilding a new mind to think my world from east to west

    Chinese has a saying, ‘预先善其事,工欲善其事,必先利其器‘. It means ‘To do a good job, an artisan needs the best tools’