Skip to content

Homework 2

Menaf Kasap edited this page Feb 24, 2016 · 4 revisions

#Agile Software Development

####Table of Contents

##What is Scrum? Scrum is a methodology that widely used in software development. The aims of Scrum are reducing complexity about a project and make development process easier. First of all, people in development group holds different roles like Scrum Master and Product Owner. Generally there are four processes in a usual Scrum scheme; product backlog, sprint backlog, sprint and scrum meetings. A general Scrum process

Product backlog is a document which contains features of the project. Product owner has a key role in this process, he/she determines whether this property (user stories) take place or not. After that these features are prioritized by product owner. The list of features can be upgraded at the anytime on development period. Team members make estimates about each feature’s amount of work time.

Next step is sprint backlog. Each task would be split into sprints. Usually sprints last about 30 days. Scrum master and scrum team determine which features will be done in a sprint and assign tasks to people.

Sprint is the cyclic development part of Scrum methodology. In regular basis, development team do tasks in current sprint and after each day amount of work is recorded in burnout chart. Burnout chart is useful about whether team is on correct way or not. Moreover, estimates about end time of a sprint can be done according to burnout chart data.

In each day, scrum team do a scrum meeting. It takes 10-15 minutes per day and every member of team indicate what've done previous day, what'll be done today and some problematic issues that a member encountered.

To summarize, Scrum methodology is useful in observing progress of a project and work distribution. Team members become aware of current development process in daily scrum meetings. I think, Scrum method works better with small groups like 10-15 people attended because more people in a group cause chaos.

For further readings, you can look at these links:

##Dysfunctions of a Team
The video by Patrick Lencioni is mainly about how a leader should be and what are the basic problems among the team members especially with a focus on absence of trust. This video actually stems from the book by him with the same name The Five Dysfunctions of a Team. In this book he mentions 5 fundamental dysfunctions of a team and suggests solutions about how to overcome these problems. In each chapter he focuses on one of the five dysfunctions. These dysfunctions can be shown as in a form of a pyramid: :)

As you can also see that absence of trust is at the bottom of the pyramid this actually shows us that this one is the most important and essential one among others. So the video is also mainly about this part. He says that people will follow a leader into a fire if they're human and they're honest and they're vulnerable. Trust is the most important essence of being a team but how are we going to trust one another? Well, the person in front of you should be a human so that you can sympathize and trust him/her. Right at this point he mentions that trust is based on vulnerability. So what a leader or any other team member should basically do is to be a human not just act like one faking it but actually be one showing vulnerability and human like features. Moreover, even if only one person has some kind of trust issues this is a big problem for the entire team. Hence, each and every single team member should establish trust between one another. In that context one can say for example:

  • Sorry!
  • I was wrong!
  • I made a mistake.
  • I am bad at that, I need your help!
  • You are better than I am, I admire you.

Once everyone at the team is mature and human enough to say these words and respect and trust one another that team can overcome any kind of problem and focus on their actual job rather than inside problems.

##Toyota Production System [Link to video] (https://www.youtube.com/watch?v=kce2L23yLcw) Toyota Motor Corporation, which is a Japanese automotive manufacturer, is the 13th-largest company in the world by revenue.([Reference Link] (https://en.wikipedia.org/wiki/List_of_largest_companies_by_revenue)) The specific way of Toyota's manufacturing system namely TPS(Toyota Production System) shows us how to produce high quality products. The TPS was created to benefit customers , employees and products. TPS contains 5 core values:

  • Genchi Genbutsu
  • Kaizen
  • Challenge
  • Teamwork
  • Respect

Today the way of commerce is changed. The production process only starts after the customer has placed the order, and this is known as Lean production. In lean production manufacturer must produce the product in exactly given time by the client. One of the Toyota's supporting role of the system is the idea of just-in-time. They use kan ban cards to see when the stocks are low, they records the time (takt-time) that takes during production process. These times are monitored then coordinated using a Scheduler called Hujinka and ideologically it's similar to burndown chart in Scrum. It increases the efficiency in productivity and make workers concentrate on their tasks.

One of the amazing facts about process is that all members of team could stop production when a potential fault is detected. By using boards on floors, any problem is visible at factory floor. The team goes to the root of the problem and handles it. That provides reliable, durable and high quality products. One of the core values of TPS is Kaizen. It seems the most magnificent one. At regular meetings, team members are invited to give their opinion and share their suggestions for any improvement. These meetings encourage and create teamwork. More than 3 000 proposals are suggested in a typical year by team members in Europe. Since the production is relied on total commitment from everyone involved, the process is called also Thinking People System.

Clean and tidy work of team members creates an environment that everyone respects each other. Creating the sense of safety is also another factor that improves production. While using high technologies, it tries to have minimum impact on the environment.

TPS creates a safe and responbsible system producing innovative safer products that benefits the customers and drivers. Safer products lead to improved productivity which creates lower overall cost for customer. In consequence, Tthe system provides manufacturing highest quality, cost efficient products, delivery to the client on time.

##The Puzzle of Motivation
In this video, Dan Pink , who is the author of five books about business, work and management that have sold two million copies worldwide and have been translated into 34 languages, is giving a speech about the relationship between motivation and business in today's world. In order to explain the relationship, he mentioned some terms, facts and experiments.

Dank Pink introduces 'The Candle Problem' - attaching the candle to the wall so the wax doesn't drip onto the table. Two groups of people are asked to solve this problem. To solve problem faster, first group is given incentives like that if you solve it faster or fastest then you get something valuable. The result of this experiment shows us that rewarding causes to block creativity and thinking. And he says that this kind of motivators does not work for a lot of tasks. Then Dan Pink brings up an issue that there is a mismatch between what science knows and what business does.

He says extrinsic motivators like rewarding work for tasks of 20th century. But they do not work well for tasks of 21st century. Because tasks are getting more complicated and have no simple solutions. He also cited that the higher the pay, the better performance for tasks that involved only mechanical skills.

After speaking about where extrinsic motivator works and where it does not work, he addresses the term intrinsic motivator which increases performance for tasks involved creativity and thinking. He says scientist who have been studying motivation have given us a new approach which is built much more intrinsic motivation. This approach revolves around autonomy -the urge to direct our own lives, mastery -the desire to get better and better at something that matters, purpose -the yearning to do what we do in the service of something larger than ourselves. In the video he explains the word autonomy and gives examples about it.

As a summary of this vide, I could easily say that Dan Pink wants to emphasize the mismatch between business model and business type. This mismatch causes to lower performance than expected. It can be cured by choosing appropriate business model

##Teamwork at Software Development Teamwork is a cooperative or coordinated effort on the part of a group of persons acting together as a team, each doing a clearly defined portion, to achieve a common goal. Teamwork is one of the essential part of software development, in order to produce meaningful outputs for the team members and the organisation.

Some of the reasons for organizing a group of people as a team:

  • Teamwork creates synergy.
  • Teamwork supports a more empowered way of working, removing constraints which may prevent someone doing their job properly.
  • Teamwork promotes flatter and leaner structures, with less hierarchy.
  • Teamwork encourages multi-disciplinary work.
  • Teamwork fosters flexibility and responsiveness, especially the ability to respond to change.
  • Teamwork pleases customers who like working with good teams.
  • Teamwork promotes the sense of achievement, equity and camaraderie, essential for a motivated workplace.
  • When managed properly, teamwork is a better way to work!

Some Features of Effective Teamwork:

  • Good Leadership

The best leaders reliably follow through on their commitments. They are also willing to provide leadership whenever the team requires. Employees want a leader who is always available and approachable. Leaders also decide quickly about problems.

  • Right People

Successful teamwork consists of not only good leader but also the right mix of other team members. Each member should have an established role and be equipped with the specific skills to fulfill it. Once the team is up and running, members must build trust, and respect each other's place within the group.

  • Clear Goal

Team members must have a clear objective and a shared commitment to the team goal. Without a specific outcome in mind, members may lose motivation to fulfill their parts of the project. Thanks to a clear goal, ways that team follows to reach main goal can be chosen easily.

  • Participation

In order for a team everyone must be participating in the creation of a solution. Each member of a team is essential to the team's success, and when the group is given a task, each member knows what their job is and sets out to put in their fair share of the effort.

  • Diversity

Most members bring a diversity of thought, experience and skills to a team. Leaders who recognize and encourage this will be rewarded with new and inventive ways to accomplish a job. Effective teams are willing to try a new solution to an old problem or open to new or unusual suggestions.

  • Open Communication

A team is able to communicate effectively and there is a feeling of open communication between all members of the group. Issues within a team are handled by face-to-face communication.

  • Decision-Making

A team has a hierarchy and a built-in decision-making system that helps it to react quickly and effectively to all situations.

  • Efficient Use of Ideas

Brainstorming is one way that groups come up with the solution to a problem. An effective team is able to gather information from each member and formulate that information into a response.

  • Effective Communication

Interactions across team members as well as to and from team leaders are all necessary. In the most effective teams, communication happens regularly. Regular team meetings are a good way to discuss ongoing activities and new assignments. Email, impromptu meetings and conference calls are quick ways to respond when a problem occurs.

  • Skilled Conflict Management

Conflict happens, even in the most synergistic teams. Often new ideas and solutions can come from differences of opinion, so they shouldn’t be discouraged. Decide as a team how to handle conflicts.

Moreover, there is a enjoyable and instructive video about teamwork.

References:

##Communication at Software Development

First, I would like to share an article by Donnie Flood who used to be the co-finder and CTO of Bizo which was acquired by LinkedIn for $175 Million in 2014 and who is now the director of software engineering at LinkedIn (Link). He talks about the importance of communication in software engineering and the ways of improving it in a quite sincere and funny way. He mentions that contrary to what is believed, software engineers don't code all the time but they rather spend their time communicating with product management, account management, support, operations, sales, customers and of course with the peers and managers. So even though you are a great coder you need to be a good communicator to become a successful software engineer.

Another resource that I found quite interesting but a little bit long is from a blog written by Steve Schwarz, owner of Alfa Jango (Link). As I said, this is a little bit long read so I focus on two parts of his writing namely, communication and software engineering and Communicating with engineers. Here he mentions another aspect of communication. He argues that software engineers should communicate in a clear and exact manner. Especially when it comes to a project, if everybody understands everybody else very well then we may say that the project will be fine. Likewise if you want something from a software engineer your demand should be unambiguous and clear because we as software engineers need to know exactly what is wanted so that we can operate.

Last but not least, I would like to share a link with you particularly on communication on agile software teams (Link). Here the author, Scott Ambler, talks about different modes of communication and suggests that one should choose the right technique according to the project and team etc. He also mentions the factors that effect communication and here the motto is Teams that pair together stay together. For an effective communication, he sums up, a team should be willing to work together, share correct and trusty information, use the correct mode of communication and a good documentation regardless if it's paper, video or audio documentation.

##Software Development Life Cycle

Software Development Life Cycle (also as known as Software Development Methodology), SDLC for short, is a well-defined, structured sequence of stages in software engineering to develop the intended software product.

###SDLC Activities SDLC framework steps are:

SDLC

###Software Development Paradigm Software development paradigms help developers to select a strategy to develop the software. Here are some paradigms:

Model Name Diagram
Waterfall Model waterfall
Iterative Model iterative
Spiral Model spiral
V – model v
Big Bang Model bigbang

####References:

Good Practices & Bad Practices :

Three resources mentioned above contain information about good practices in software engineering.
In these materials, good practices are told in six main titles.
Developing Iteratively
Managing Requirements
Using Component Architecture
Modelling Visually
Verifying Quality
Controlling Changes

The resource mentioned below contains information about bad practices in software engineering.
Practices of Highly Ineffective Software Developers

Bad practices are told in ten main titles in that material.
Precisely, it tells us what we should avoid during development process.

Team Members

  • [Mehmet Doğan](Mehmet Doğan)
  • [Işıl Kurt](Işıl Kurt)
  • [Ömer Faruk Tayfur] (Ömer Faruk Tayfur)
  • [Abdulmenaf Kasap] (Abdulmenaf Kasap)
  • [Seha Yiğit Güryol] (Seha Yiğit)
  • [Haluk Aydın] (Haluk Aydın)
  • [Serpil Kuzu] (Serpil Kuzu)
  • [Uğur Taş] (Uğur Taş)
  • [Mert Even] (Mert Even)

##Milestone Reports

  • [First Presentation Milestone Report] (First-Presentation-Milestone-Report)
  • [Second Presentation Milestone Report] (Second-Presentation-Milestone-Report)
  • [Final Presentation Milestone Report] (Final-Presentation-Milestone-Report)

##Project

  • [Project Description] (Project Description)
  • [Domain Analysis] (Domain Analysis)
  • [Themes/Features] (Themes)
  • [Personas] (Personas)
  • [User Stories] (User Stories)
  • [Communication Plan] (Communication Plan)
  • [Requirements] (Requirements)
  • [Responsibility Assignment Matrix] (Responsibility Assignment Matrix)
  • [Use Cases and Use Case Diagram] (Use Cases)
  • [Class Diagram] (Class Diagram)
  • [Sequence Diagram] (Sequence Diagram)
  • [Activity Diagram] (Activity Diagram)
  • [Mockups] (Mockups)
  • [Test Plan] (TestPlan)

##Meetings (451)

  • [Week 1 Meeting - 09/26/16 Monday Ağaç Ev] (Meeting1 451)
  • [Customer Meeting 1 - 09/29/16 Thursday BM-A2] (Customer Meeting 1 451)
  • [Week 2 Meeting - 10/04/16 Tuesday BM-Lounge] (Meeting 2 451)
  • [Week 4 Meeting - 10/23/16 Sunday BM-Lounge] (Meeting 4 451)
  • [Week 5 Meeting - 11/9/16 Wednesday BM-Lounge] (Meeting 5 451)
  • [Customer Meeting with Suzan Uskudarli- 11/18/16 Friday BM-Lounge] (Customer-Meeting-with-Suzan-Uskudarli)

##Tutorials

  • [Git Versioning System] (Git Versioning System)
  • [Issue System] (https://guides.github.com/features/issues)
  • [How to Write User Stories] (UserStoryWriting)
  • [Requirements: What & How ?] (HowToRequirements)
  • [Tutorial for Programming Environment] (Setup Tutorial)
Clone this wiki locally