Saturday, March 24, 2012

Blog #3 Reflection on project development

Learning takes place everywhere at any time (2011, World Innovation Summit for Education). We can be learning from anyone regardless of how experience they are. In this blog, I will be describing my learning points relating to the development of my team’s product: plan for unexpected events, research for better ways to code and avoid ‘stubbornness’ pitfall.

Plan for unexpected events

My team did not take midterm tests and assignments for other modules into consideration while planning for the project schedule. We also did not expect that team members are unable to open codes properly. These may seem trivial but when there are more issues, it contributes to a large amount of time. My team had to reduce the number of features to be implemented to compensate for the time lost. Hence we are implementing fewer features than expected.

From this, I learnt that we should allow some buffer time for such events in our schedule. Thus, it would be useful that I can plan more accurately for my future software development projects. Inability to do so may cause late submission of the project, reduced numbers of features, incomplete features or worse, incur cost.

Research for better ways to code

A problem can usually be solved by various ways. Out of these ways, there would be a best or a few better ways to solve it. Since we are inexperience, it is good to learn from others on how to code in a better way. We should research on how to ensure our codes are easy to understand, allow more features to be implemented easy and allow ease in linking up with other systems. There are programmers who would post online their experiences in coding. From this, we will have the knowledge of the existing problems of the programming language and potential problems. Thus we should also research on the specific section we are going to code to find a solution which has less potential problems.

To judge whether this is a better way to code, we can follow this priority order from high to low:

1. Code is easy to understand

2. Code has less potential problems

3. Code allows easy extension

4. Coding time required is least

5. Code is efficient

This priority order takes in consideration of the limited time for the project, merging of teammates’ codes is needed and there may be future developers working on these codes.

From this, I learnt that researching in advance reduces a great amount of time required to code. It also reduces the number of problems occurring during merging of teammates’ code.

Avoid ‘stubbornness’ pitfall

Many a times, programmers tend to fall into this pitfall of being very stubborn with their codes. This is because we are confident in our codes and we take pride in what we do. Being able to accept criticism is a crucial factor to help us improve. After receiving these criticisms, we should reflect on how this would help us and make necessary changes. We also need to take note that not all criticisms are useful thus we need to evaluate whether it is beneficial to us.

Nevertheless, many are unable to master this skill, including myself. Here are some ways to improve our taking of criticism:

1. Hold your emotions back and keep yourself calm

2. Keep quiet and do not defend

3. Imagine the criticism is directed at someone else

4. Analyse it in an objective way

These steps need to be repeated every time we get feedback until we are used to accepting criticisms (Mokhov, n.d).

This is very useful for my future projects as there will be criticism on my work. Being able to obtain this skill would allow me to enhance my work.

To conclude, we should be open and learn from anyone. When criticisms are given, we should listen and reflect on it. We should also do research before implementing our features to save implementation time. Also, it is impossible for us to predict the future; hence we need to ensure that our plan can withstand unexpected events.

References

Oleg Mokhov. (n.d). How to take criticism. Think Simple Now – a moment of clarity. Retrieved from http://thinksimplenow.com/happiness/criticism/

World Innovation Summit for Education. (2011, November 16). Learning Anytime, Anywhere: Lifelong learning is about people getting control of the learning that is happening in their communities. World Innovation Summit for Education. Retrieved from http://www.wise-qatar.org/content/learning-anytime-anywhere-lifelong-learning-about-people-getting-control-learning-happening-

Saturday, February 18, 2012

Blog #2: Reflection on CS2103T project - No Conflict

In this blog post, I will be writing about a challenge my team is facing, “there is no conflict”. In normal situations, teams usually have arguments when there are disagreements. However, in my team, team members tend to keep quiet or agree to it when in actual fact, they disagree to it. For instance, everyone will keep quiet when Sathish allocates tasks to us. Also, Yu Kai is quite quiet during group discussions and he seems to be in deep thoughts. As for ZhenYang, he tends to ask more questions than provide ideas. As for myself, I have a tendency to give up my ideas rather than trying to convince my team when someone disagrees to it.

These methods are frequently used to avoid conflicts (Academic Leadership Support, n.d). However, according to Academic Leadership Support (n.d), conflicts should be allowed and it should be resolved early. This is because avoiding it would let the problem accumulate which leads to severe consequences (Anderson, 2010). When the problem blows up, relationships may be damaged. On top of that, the team may be missing out an important piece of information. This is because the opinion may contain a better solution, a major problem or suggestion that may help the team to think further. Additionally, team members who are quiet will become more recessive thus contributing less to team discussions. Likewise, this makes other members more dominant.

This may be caused by our bad experiences with conflicts. Besides that, we may not want to open up ourselves to others as we are not familiar with each other. It may also be because everyone wants to respect each other hence we try not to oppose or offend others. Furthermore, our inexperience and lack of confidence may also cause us to have the thought that our ideas or opinions are not useful.

One possible solution is to encourage teammates to express their views on the topics discussed. This can be done by prompting them questions such as “What are your views on this?”. Another way is to let recessive teammates speak first. This is to show them that their opinions are valuable. An alternative solution is to get everyone’s consensus on the ideas discussed for each sub topic before moving to the next. Therefore we need to allocate more time for discussions in order to utilize these solutions.

Nevertheless, implementing these solutions will lead to disagreements. Hence the team needs to resolve the disagreements as soon as possible. One possible solution is to have a team member recording all the ideas and reason for backing up the ideas. Then the team will review the list of ideas and pick the best idea which suits the situation. If there are still disputes over the best idea, team members may need to compromise or try to combine their ideas.

From my observation, my team members seem to be getting closer to each other after these few months. As the team faces varies challenges, the team matures as one. One good example would be the Oral Presentation 2 (OP2). The team was put to a test during the question and answer session. Due to different perspectives for the features of our software, the team did not pass the test. Fortunately, the team had a discussion to review OP2 immediately after it. The team also sorted out the differences during the following meet up. I also noticed that more opinions are shared and we are slowly revealing our true selves. Therefore, the team has started to progress in terms of overcoming this challenge.

In conclusion, it is important that team members express their oppose views. Though this may cause disputes, it is a process the team has to go through in order to mature. The team should iron out the disputes well and early to prevent accumulation of problems.

References

Academic Leadership Support. (n.d). Retreived from http://www.ohrd.wisc.edu/onlinetraining/resolution/aboutwhatisit.htm

Paul Anderson. (2010, May 20). Don’t Avoid Conflicts; Manage Conflicts using Conflict Resolution to Make Better Teams. Articles Factory. Retrieved from http://www.articlesfactory.com/articles/management/dont-avoid-conflicts-manage-conflicts-using-conflict-resolution-to-make-better-teams.html

Saturday, January 28, 2012

Blog #1 - Communication and Team Behaviour

Communication occurs two ways between two or more people verbally and non-verbally. It can be understood differently by different people based on their experiences and knowledge. In this blog, I will be recording and analyzing the observations of my team’s discussions from my perspective.

To begin with, I observed that my team has exhibited an important principle of effective communications, active listening. My team dedicates full attention to the speaker who is sharing his ideas. While listening to the speaker, team members respect the speaker by demonstrating positive body language such as nodding and giving eye contact. After the sharing session, questions are asked to clarify doubts or main points are rephrased to affirm the meaning. Most importantly, at any one time, there is only one speaker. Though the team did not set this ground rule, team members intuitively comply with it.

In addition, my teammates participate in meetings very actively. They are prepared to share their ideas and thoughts. They are also willing to listen to others’ opinions and internalize it. As such, many interesting ideas are proposed thus, the discussions are successful.

Nevertheless, it is inevitable that every team will face difficulties. During the first meeting, the team struggled with the focus of the meeting. There was a slight dispute over whether the team should focus on graphic user interface or the features to be implemented in the project. I was astonished when Yu Kai mentions that the team should focus on the features in a serious tone with a straight face as I perceived that as anger. The team responded in a normal tone hence it did not lead to a serious disagreement. The team came to an agreement of focusing on features as it forms the foundation for designing systems based on Systems Development Life Cycle (SDLC); a process of creating systems.

I also observed that our first meeting took longer than expected as more time is necessary to complete the discussions and settle administrative matters. Furthermore, the team went off topic to talk about other assignments of CS2103T module. It is also hard to allocate tasks due to insufficient understanding of individual team members. From this, I realized that my team is lack of a systematic way to handle meetings.

To conclude, I have gained a better understanding of my teammates through the discussions we had. I noticed that everyone has their own way of expressing their thoughts through verbal and non-verbal communications. In the case of Yu Kai, speaking in a serious tone and straight face is his normal way of communicating with others. While Zhenyang nods his head and smile when he agrees to a certain idea.

Also, I am grateful for my teammates’ willingness to comprise their break times for meetings despite their busy schedules. For this reason, I would like to propose three improvements to reduce ineffective discussions. Firstly, we need to settle administrative matters and lay the pipelines for communicating and sharing documents as soon as possible. Secondly, we need to allocate a time keeper to ensure that meetings are not over run. Lastly, we need to allocate a person to keep the team focus on the topics for discussion.

Tuesday, January 17, 2012

How to subscribe to my blog

-To subscribe on your browser
-click here http://fkl-kim.blogspot.com/feeds/posts/default
-then click Subscribe to this feed
*Note: This doesn't work in Chrome

-To subscribe by email
-enter your email address under FOLLOW BY EMAIL box
*Note: this subscription is not live updated

-To put my posts on your blog
-Go to dashboard, under Design tab, click Add a Gadget and find Feed. Paste this link: http://fkl-kim.blogspot.com/feeds/posts/default
*Note: this subscription is not live updated