Thursday, April 6, 2017

Bean Test: Vịnh xuân quyền và những tố chất cần có của một Te...

Bean Test: Vịnh xuân quyền và những tố chất cần có của một Te...: Cũng giống như bao môn phái võ thuật khác, Vịnh Xuân quyền là một trong những môn võ thuật với phương pháp luyện tập hiệu quả để giữ gìn cũn...

Saturday, April 1, 2017

Questions to James Bach

I had a pleasure to talk to James Bach when he came to Vietnam last summer. He is a father and a teacher who enlightens people about metacognition in software testing. His knowledge covers many areas of software testing, from context-driven testing, heuristics, tester careers, to the secret life of testers. If you have an opportunity to learn from him, you will absolutely agree with me on how talented he is.
1.     What would you do to make sure the quality of the co-located Agile Project?
James: You are going to need a lot of planned communication, because communication will not happen naturally when people are far away. I suggest daily conference calls. Distributed projects take strong leadership to get people to come together. I also suggest that key people should periodically visit each other, instead of relying only on electronic communication.
(“Co-located Agile project means Agile team members are located in different location or multiple agile teams are working on different parts of the product from different location.”)
We all know that in Agile environment, the high speed and quality is the first priority. People seem to work without taking break, and the quality is measured not only based on the project but also based on the team characteristics. Hence, the human factor is the key in ensuring project quality, which means that effective communication could influence the success of the project. James’ opinion woke up my mind about some ideas about the communication in co-located Agile projects.
Firstly, the effective communication is determined by the language, product, tool/technology, and process knowledge of the team, which have to be synced at the same level. In order to communicate effectively across distance and time zones, distributed teams need to speak comfortably the same “language”. It's not only the language such as English, German, or French, but also product terms, tools/technology features or processes, in which each team will have to be at similar level in these in order to speak and understand each other.
To be able to synchronize, you need to take extra steps to ask concise and valid questions, to clarify requirements or requests, to review the outputs before it's going out. With the equality of knowledge, each distributed team should be able to make decisions for their internal matters, in order to implement self-management principle. One team should not tell other teams what and how to do.
Secondly, applying the suitable communication tools and methods could also play and important role in the success of team communication. There are quite plenty of communication methods to select, from direct communication (Face-to-face or Video calls) to indirect ways (Email, Forum, or Text chat). Also, you can consider some popular and useful communication tools, including: Skype, Slack, Confluence, GoToMeeting, or Google Drive, which support easily to communicate between onshore and offshore team. Those methods and apps can help eliminate the distance in time zone and location. 
Additionally, for better communication effectiveness, you need to arrange the scope of work reasonably and support clients properly, it’s will help to connect smoothly. To tighten the business, it is advised that we can visit the onshore/offshore regularly to build relationship with teams and instantly respond to the release/milestone/technology changes.
2.     How would you define testable code? What are your criteria?
James: All code is testable. Some code is more testable than others. Testability in code just means how easily you can test it. Code is more testable when it is observable and controllable. Ask for function-level logging and scriptable interfaces. Also, code is more testable when it is simple and when it is decomposable. Decomposability is the ability to separate the components and test them in relative isolation.
To be more specific on James’ opinion, I think of some simple ways to define a testable code such as: code’s logic, code naming convention, project structure/architect. Testable code always includes the ability of extension, being easy to maintain, re-use, and upgrade. This article is a typical example for understanding readable code fifteen most important best practices for writing super readable code.
3.     What type of skills should the tester pick up to move into DEVOPS world?
James: I don't know that much about the DEVOPS world. But that world doesn't welcome testers. It welcomes developers. So the first required skill is programming. Then you have to look for the tools to support your testing work.
There are some tactics that testers need to pick up in order to move into DEVOPS:
- Live site testing: Testers have to test the product in production, after it is released.
- Collect and analyze feedback from users in the field. React quickly to any emerging concerns among the users.
- Advocate for testability. It’s critical that the product be built with testing in mind.
I totally agree with James about the above points of views. Besides, we testers need to improve the ability to understand coding, scripting, build-production, tools, and operation system such as Linux, Windows.
4.     How do you define what type of information should be included in a final report to the client? What type of information is useful and what is not?
James: There is no perfect report. There is only the report that gives values to clients.
Here is some advice:
+ Build credibility (by being credible).
+ Know the context of your tests (test framing).
+ Never use a number that is out of context (e.g. no test case counts)
+ Highlight general test activities (put test in the right context). 
+ Highlight product risk (put bugs in the right context)
We can build final report with three levels:
+ Level 1: Facts and truth about bugs and observations
+ Level 2: How do you get those facts? How to test those facts?
+ Level 3: How do you know if the test is good? Why is the test good enough or not?
5.     How do you estimate the effort of testing in a project?
James: There is no magic spreadsheet that tells you how long testing will take. But good estimation starts with visualization. Can you picture the testing process in your mind? Many testers have trouble doing that. But if they are not clear what testing will look like and feel like, they also won’t have any idea how long it will take.
Behind that question is a list of other questions that we can figure out and answers to give ourselves the ability to estimate the effort of testing in a project:
o         How much time is really needed for testing?
o         How long would it take to finish testing?
o         What is the least amount of time we could allocate to testing?
o         How much testing is needed to assure a high quality solution?
o         How many test cases will be needed?
o         How many testers are required?
o         What testing skills are required?
o         How much will the testing cost?
o         Do we need to test them all?
Only five questions for James, but he has shared a lot of useful knowledge and experience including: defining problem, questioning, and thinking about the object in the way of co-located Agile Project, testable code, skills of testers, creating a good report and estimating the effort of testing.
Thanks James very much!

Thursday, November 24, 2016

Những biện pháp giữ người tài cho công ty

Nhân viên giỏi thường không tìm kiếm các công ty trả lương hậu hĩnh. Thay vào đó, họ thường tìm kiếm công ty, nơi tạo ra việc làm ý nghĩa và thúc đẩy sự nghiệp thăng tiến. Một trong những lợi thế cạnh tranh giữa các công ty ngày nay đó chính là nguồn nhân lực sáng tạo, có tư duy phản biện, và dám nghĩ dám làm. Dưới đây là 6 chiến lược công ty có thể áp dụng để xây dựng lợi thế này:

1. Dùng việc thu hút nhân tài như là một cơ hội marketing

Quy trình tuyển dụng có thể là một công cụ xây dựng thương hiệu quan trọng nếu được quản lí chặt chẽ và hợp lý. Trong bảng tin đăng tuyển, hãy miêu tả chi tiết văn hóa công ty, sự kiện công ty, chính sách tiền thưởng. Cần phát triển mục tuyển dụng chuyên nghiệp trên trang web công ty nhằm gây hứng thú cho các ứng viên.

2. Tạo một văn hóa có sức hấp dẫn mạnh để giữ chân nhân tài

Không gì thu hút nhân tài đến với công ty bằng chính nhân tài giỏi của công ty đó. Những ứng viên xuất sắc luôn bị thu hút bởi những nhà lành đạo tài ba. Điều quan trọng là cần xây dựng đội ngũ nhân viên giỏi gắn liền với thương hiệu công ty. Ứng viên có thể ấn tượng với thương hiệu công ty, nhưng cuối cùng, họ cần được thu hút bởi những người tài giỏi mà họ sẽ làm việc chung.

3. “Quảng cáo” ưu điểm của công ty – một công cụ xây dựng thương hiệu

Công ty cần đưa ra những lí do để giúp nhân viên hiểu rõ tại sao nhân viên nên làm việc tại công ty. Đó có thể là môi trường làm việc với những cải tiến không ngừng, cơ hội đào tạo tốt, hoặc đơn giản là bầu không khí thân thiện, tinh thần hợp tác cao. Ngoài ra, văn hóa doanh nghiệp cũng rất quan trọng trong việc gìn giữ và phát huy nguồn nhân lực. Một môi trường làm việc minh bạch, rõ ràng cho hiệu quả làm việc cao. Nhưng để giữ người, cần phải xây dựng mối liên hệ đoàn kết, thân ái, vui vẻ phấn khởi trong Công ty, làm sao để mỗi người đều cảm thấy mình có liên hệ rất mật thiết, có vai trò không thể thiếu trong tập thể. Bên cạnh đó, tăng cường các hoạt động ngoại khóa, sinh hoạt tập thể để giúp nhân viên rèn luyện kỹ năng sống, và giúp phát hiện những yếu tố tài năng còn tiềm ẩn.

4. Cung cấp cơ hội phát triển – cách thức quản lí đầy hấp dẫn

Giúp nhân viên thấy vui vẻ là điều quan trọng. Ví dụ như nhân viên mong nhận được phản hồi và đánh giá kết quả đào tạo về khả năng làm việc của họ trong công việc thường ngày, hoặc những nhân viên giỏi muốn được thử thách và công nhận, hãy đảm bảo công ty có những thử thách dành cho các cấp quản lý, cơ hội học tập đặc biệt để giúp nhân viên phát triển sự nghiệp và hoàn thiện bản thân với những điểm như sau:
-          Tạo cơ hội thăng tiến và thể hiện bản thân.
Việc đề bạt, thăng chức phải được công khai rộng rãi trong toàn bộ doanh nghiệp. Các tiêu chí nên được mô tả một cách rõ ràng, chi tiết. Nhà quản lý nên tăng cường phân quyền nhiều hơn, giúp cho nhân viên được độc lập suy nghĩ và độc lập ra quyết định. Đây chính là nhu cầu tự khẳng định và được tôn trọng trong thuyết nhu cầu của Maslow.
-          Đào tạo
Điểm mạnh của những nhân viên giỏi là khả năng học hỏi không ngừng. Hiểu được điều này, các doanh nghiệp Việt Nam cần tổ chức các khóa đào tạo hàng năm, giúp nhân viên nâng cao kỹ năng, khả năng của mình. Với điều kiện tài chính còn hạn hẹp thì các doanh nghiệp vừa và nhỏ nên đào tạo tập trung, tổ chức các khóa đào tạo chuyên nghiệp, chất lượng, chứ không nên dàn trải.
-          Tăng thêm tính hấp dẫn cho công việc.
Chúng ta biết rằng khả năng lớn nhất của một nhân viên giỏi đó là sự sáng tạo.Tình trạng “ không có đất dụng võ”, không thể hiện hết kỹ năng, khả năng sẽ sớm giết chết những điểm mạnh của họ. Tất yếu họ phải ra đi. Do đó, các nhà quản lý nên giao cho những nhân viên giỏi các công việc mang tính mới mẻ, gia tăng tính thử thách trong công việc, giúp nhân viên vượt qua bản thân họ, giúp nhân viên tự tin hơn, yêu công việc hơn.
-          Khen thưởng.
Hiện nay, hầu hết các doạnh nghiệp đều thưởng vào các đợt lễ hội, đặc biệt là vào dịp cuối năm. Nhưng họ cần nhận thức được rằng, thưởng kịp thời là một hành động tích cực góp phần nâng cao thành tích nhân viên. Điều đó có nghĩa là các doanh nghiệp Việt Nam nên gắn liền phần thưởng với thành tích. Mỗi khi nhân viên nào có một đóng góp lớn cho tổ chức thì phải thưởng và tuyên dương ngay sau đó chứ không phải là chờ đến các dịp cuối năm, thưởng một cách đồng loạt ( như họ đang làm)

5. Đẩy mạnh cân bằng công việc – cuộc sống

Cho phép nhân viên làm việc tại nhà, dẫn con đến cơ quan vào một ngày làm việc, hoặc tổ chức những sự kiện giữa tuần sẽ tạo được sự cân bằng cuộc sống. Hỗ trợ nhân viên giữ được cân bằng cuộc sống và công việc sẽ giúp công ty giữ chân người tài.

6. Linh hoạt và gắn bó như gia đình

Vậy các công ty nên làm gì để nhân viên trẻ không nhảy sang công ty đối thủ? Chính sách gắn bó như gia đình như nghỉ thai sản, lịch làm việc linh động, nghỉ phép rất cần thiết. Ví dụ như công ty có thể cho phép làm việc tại nhà trong thời gian ngắn nếu nhân viên có việc gấp cần giải quyết, tổ chức khóa thiền, Yoga trong công ty để rèn luyện sức khỏe thân và tâm.

Nói tóm lại, để giữ được người tài cho công ty, không chỉ từ 6 yếu tố trên mà còn rất nhiều yếu tố khác cấu thành. Bên cạnh đó người CEO cần có những tư duy chiến lược hoàn toàn đúng đắn và chính xác về cơ chế nhân tài, nhạy cảm linh hoạt trong mọi hoàn cảnh để có thể giữ được người tài cho công ty.



Sunday, July 31, 2016

The Importance of Building Teamwork

These days, our work moves at a quick pace and organizations are continuously expanding, we’re quickly bringing on new clients, and team members come and go. This provides a unique opportunity to create relationships, but the importance of building them often gets ignored. As a technical resource, we are often so focused on getting the next build or test run that we don’t invest the time to build teamwork. But if we do, it can help us improve productivity, create friendships, and even benefit our lives outside of work. But why is it so important? 
1. Synergy is the combination of individual strengths, skills and expertise, and the ability for those to make up another team member’s weakness. Synergy is the spirit of teamwork. When you work alone, you may develop your independence, but you also risk overload, burnout, and not having the best skillset for the job.
2. Creating a good support network is also important in a team due to the varied working ability of each team member. Some people are known for cranking work, undistracted, while others are good for listening, understanding, or supporting others. A strong team needs to create an environment promotes a positive working environment and cooperative attitude for all staff members. It’s important for group members help each other, reply on each other and build trust within the group.
3. Sharing workload helps members in a team complete more, together. And working together with the same goal helps member improve quality of work. The more easily people on a team work together, the better the results are. Moreover, working with others to coordinate schedules, meet deadlines and make decisions will strengthen the team’s interactions.
4. Enhancing communication is also key to success of the team. We need to share what we feel and what we need, in order to communicate it clearly and effectively. During the course of a project, discussing ideas and collaborating developer your own skillset as well as those of team members. Not only that facilitate an open discussion but each member of the team will also be adequately informed.
A successful team depends on not only mental attitude of the whole team but also the leadership skills of the team leader. Dwight D. Eisenhower said that “Leadership is the art of getting someone else to do something you want to done because he wants to do it”.
Leaders help themselves and others do the right things by building a vision that solves complex problems, generates new ideas, coordinates individual activities towards a bigger goal, provide support to team members, gives people a sense of belonging, and helps people learn from each other. Leadership is also about mapping out where you need to go as a team; it makes working in a team more dynamic, exciting and inspiring.

When we combine a good leader with good teamwork, everyone benefits from a better working environment. Understanding the values of teamwork is critical to keep employees engaged, happy, and productive.

HoaLe





Saturday, July 9, 2016

Different opinions of James Bach in software testing

​On the occasion of STC Conference in July 2016 in which James Bach is a keynote speaker, the STC club has posted several introductions of James’ thoughts and teachings ideas in software testing. I am posting here additional James’ additional opinions and ideas on software testing that depart from the conventional thinking. read more

HoaLe

Wednesday, January 20, 2016

Celebrities have an important influence on young people’s characters

In today’s society, the development of technology such as television sets, magazine covers, internet blogs, facebook, linkedin, youtube, tabloids news makes us more connected to people. The devices also make young people plastered with images of these tacky celebrities which are scientifically proven to have influence their characters.


For me, a young person, I always find some celebrities having some interesting things to learn such as Jack Ma, DaiLai LaMa, Thich Nhat Hanh, Steve Jobs, Bill Gates who brings many things such as “Only the development of compassion and understanding for others can bring us the tranquility and happiness we all seek” Dalai LaMa. I think almost all young people are also finding a celebrity to be their idols to learn and motivate some aspects of their life such as actions, living philosophy, work, family, relationship with people, friendship, between people together of their.

However, I want to talk about spirit and ability of Dr.Richard who has given me a big motivation to compose the articles “7 keytraits to Master Novice Testers”. His enthusiasm has encouraged and inspired to me and many other people to feel the passion and willpower to learn and strive constantly all the time. Although he passed away, all his spirits are living forever.

Young people are more likely to listen and have action following celebrities than their parents. And it is important for parent to quell the negative influence that a celebrity can have on their children. Some of the influences come from media sources which trends to thrive on negative behavior of celebrities like some people who spiral out of control such as drugs, alcohol and all other actions will affect habits of young people who are always rapid learning and imitating, which does harm their mind which are making a negative difference in other lives.

Celebrities have an important influence on young people’s characters their attitudes and actions that make them to have positive thinking. Young people learns many ways of celebrities who have many good spirits and passion to motivate for young people.

HoaLe