Subscribe by Email


Showing posts with label Learning. Show all posts
Showing posts with label Learning. Show all posts

Saturday, April 27, 2013

Learning - Setup groups within the company and share experiences - Part 1

The first question is about why such a topic would belong in a blog about software processes ? Seems a bit strange to have a blog about experience sharing, since it seems to something that is not specific to the software area. However, I have found that the busy nature of the software professional leads to a scarcity of time, leaving little time for reviewing ones own experience, what to talk about trying to do experience sharing with people from other teams. This being busy nature has only increased due to the economic problems of the last few years, with the same number of people expected to do more.
So what is this post about ? In any decent sized organization, whether it be a product development organization or an organization that works on projects, a number of teams do similar kind of work and hence are in a position to learn a lot from each other. Even though their products or projects may be somewhat different from each other, the level of difference with each other would not be significant enough. As a result, if there was coordination (or rather, let us not use the term of coordination, rather let us talk about how they can share their experiences), then the teams and their managers can learn a lot about how each team handled some situations which are common.
This is best served through an example. We had a situation where we were running into problems with an external vendor (not even a vendor, more like a open source component maker who would post new versions of their component with updates and notes on a regular basis, every 6 months or so). We did not have any clarity as to what were the contact details of the key people in the component maker, we did not know details about the kind of testing processes that they had, and so on. This was causing us problems, since the component was important to us (it saved us a lot of money that would otherwise be needed to buy a professional software that did the same function).
At that time, we recollected that another team in the company was doing something similar in terms of functionality. We did a quick engineering discussion with them, and realized that they were far ahead of us in terms of figuring out these kind of details that we were looking for. They had knowledge of the key people in that open source project, and they had discussions which provided them far more comfort in terms of the testing processes and the level of quality in the released version of that component.
Because of this particular discovery, we had a senior engineering person within our group interact with a similar person from their team on a regular basis for these kind of discussions. We also created an email group with the specific name of that component, and made it open for other people within the company to join. The resultant was that over a period of time, we discovered 2 smaller project teams within the company that were also looking to evaluate such a component, and they got a head start based on the discussions that they had with us and with the other teams.
Now, if you do such discussions, not only for such an example, but for other cases where you are running into problems, such as problems with the latest seeds of MS Windows or OS from Apple, or where you are running into other problems, such groups can provide a lot of help, since it allows people to share issues and share solutions. However, it takes time and effort to do this kind of sharing and coordination, even though the rewards that you get from such sharing can be well worth it.

I will add more about this in the next post in the series (Sharing experiences within the company - Part 2 - TBD)


Friday, June 8, 2012

What are the values involved with scrum?


Since the invention of the scrum software development process, it gradually became popular among the programmers and developers because of its values. 
In this article we are going to discuss about the values that made the scrum development process quite popular in the field of the software engineering. 

Values associated with Scrum Methodology


The scrum is known to support the values of:
  i) Commitment
 ii) Focus
iii) Respect
iv) Openness and
 v) Courage
The scrum is said to be powered by the above mentioned values. It may seem like following so many of the values might be so difficult! But to be honest there is nothing like that in scrum and this is what makes the scrum as one of the best agile software development methodology. You just have to follow these values to the maximum extent you can and later on it is taken care of by the development process itself.

1. Commitment
- Commitment as we know is an art in itself i.e., it is the art of binding oneself with the task at hand. 
- According to the philosophy behind the scrum software development process,  a person can only act if he/ she can commit himself/ herself to the task or work whatever the case may be. 
Normally, it happens that we work in a state of inaction, which means we work quite unwillingly. 
- Scrum helps you to commit to the tasks. 
- For a genuine scrum process usually high levels of commitment have been observed. 
- The authenticity of a scrum process is maintained by the level of commitment of the members of the development team towards the whole development process.

2. Respect
- Respect is a value that is considered to inculcate a feeling of self esteem in a person for others as well as for oneself and also towards the work that is being done.
- There is no doubt regarding whether the scrum supports this value or not! Of course it does. 
- According to the philosophy of the scrum, no positive communication can be developed without a feeling of respect towards one’s and towards all.
- Due to a lack of respect there are possibilities of misunderstandings developing among the team members which in turn may hurt the sentiments of the people. 
- This is another value that plays an important role in maintaining the authenticity of the scrum process. 
- Respectful iterations are needed.

3. Focus
- By focusing on a particular task you concentrate all your attention on a task. 
- This value is encouraged by the scrum since according to its philosophy without focus, you cannot pay attention to any task in any meaningful way. 
- Without focusing, learning cannot be done in a meaningful way either.
- For a scrum process to be quite genuine and authentic, high levels of effective focus are required.

4. Openness
- Openness is a value of the character or behaviour of an individual defining one’s attitude of ready accessibility.
- It means one’s actions do not speck of secrecy and concealment. 
- Scrum has a habit of dealing only with openness. 
- Scrum involves extensive sharing of information among the team members. 
- This value increases the transparency of the whole development process. 
- In a genuine and authentic manner, everyone knows everything about the process and the project.

5. Courage
- Courage is strongly supported by the scrum because the truth about the reality becomes obscured when nobody speaks out regarding it. 
- Often it happens that many of the team members feel very insecure while describing the reality, they fear they might get fired. 


Wednesday, April 4, 2012

What is meant by adaptive and predictive planning?

Learning is an important aspect of any development process be it of any field. Learning can be classified in to many types, but in this article only two types have been discussed namely:
- Adaptive learning and
- Predictive learning

Adaptive Planning or Learning

- Adaptive learning is considered to be a computer driven educational method in which the computers are the interactive teaching devices rather than having human teachers do the teaching.

- The presentation of the educational material is adapted by the computers according to the weaknesses of the students which are determined by the responses of the students to the questions asked by the computer.

- Here the whole learning process is motivated by the idea of using electronic education for incorporating the interactive values to a student that would have been provided by an actual human tutor or teacher.

- This technology encompasses various aspects taken from the fields like education, psychology, computer science and so on.

- Adaptive learning was evolved because it is not possible to achieve tailored learning with non adaptive and traditional approaches.

- The learner is transformed from the passive receptor of the information to the collaborator of the educational processes.

- The primary application of the adaptive learning is in basically the following two fields which have been designed as both web applications and the desk top applications:
1. Education and
2. Business training.

Adaptive learning is also known by several other names like:
1. Computer based learning
2. Adaptive educational hyper- media
3. Intelligent tutoring systems
4. Adaptive instructions
5. Computer based pedagogical agents

Models or Components of Adaptive learning

The whole process of adaptive learning has been divided in to some separate models or components as mentioned below:

1. Student Model
- This model keeps a track of the student and learns about him.
- This model makes use of algorithms that have been researched for over 20 years.
- The CAT (computer adaptive testing) makes use of the simplest means for the determination of the students’ skill.
- Nowadays, the students’ models make use of richer algorithms for providing a more extensive diagnosis of the weaknesses of the students.
- This it does by linking the questions and the concepts and using ability levels to define the strengths and weaknesses.

2. Instructional model
- This model is actually responsible for conveying the information.
- It makes use of the best technological methods for educational purposes like multimedia presentations along with the expert teacher advice.
- When the students make mistakes, the model provides them with useful hints.
- These hints can be question specific.

3. Instructional environment
This provides an interface for the system and human interaction.

4. Expert model
- This model is responsible for teaching the students using the stored information which is to be taught.
- This may include solutions for question sets, lessons and tutorials.
- Some very sophisticate expert models may use expert methodologies for the illustration of the solution of the questions.
- In some of the adaptive learning systems, the qualities of an expert model may be acquired by an instructional model.

Predictive Planning or Learning

- The predictive learning involves machine learning i.e., to say an agent has to build a model of its own environment type by carrying out various actions in several circumstances.

- The knowledge of the effects of the actions tried out is used for turning the models in to planning operators.

- This is done so that the agent is able to act purposefully in that environment.

- We can say that the predictive learning is all about learning with a minimum of the mental structure that exists already.

- Some say that this kind of learning has been inspired by the Piaget’s account of the construction of knowledge of the world by interacting with it.


Tuesday, July 12, 2011

What is Adaptive Software Development (ASD)? What are three phases of ASD?

Adpative Software Development (ASD) is a method for the creation and development of software systems. It focuses on rapid creation and evolution of software systems. ASD is a pat of rapid application development.

Adaptive software development life cycle is mission focused, feature based, iterative, time-boxed, risk driven, and change tolerant. In adaptive software development, the developer has a basic idea in mind and they g to work. The focus is in the computer code.

In ASD, there are no pre-planned steps. The software is made very quickly. New versions can come out very quickly as the development cycle is very short. The structure of adpative software development and rapid application development are similar, difference lies in the fact that:
- adaptive software development does not allow the time when the project is finished, rapid application development does.
- adaptive software development does not have a real end point whereas rapid applicatio development allows the end of project.

Adaptive Software Development life cycle comprises of three phases:
- Speculation
- Collaboration
- Learning

In speculation, user requirements are understood and an adaptive cycle planning is conducted. It depends on bug and user reports.
Effective collaboration with customer is very important. Communication, teamwork, individual creativity are a part of effective collaboration. The individual developers combine their portions of work.
Learning cycles are based on the short iterations with design, build and testing. ASD teams can learn through focus groups, formal technical reviews and postmortems.


Facebook activity