Thursday, October 31, 2013

Week 8: The Rise of Agility

So this week the theme for the class was agility.



We began the class by discussing the assigned readings: "Big Ball of Mud" by Foote and Yoder and "Embracing Change with Extreme Programming" by Beck.




A big ball of mud is seen as a software system that lacks a perceivable architecture. Although not well designed, these structures are extremely popular. There are many patterns that lead to these unstructured systems. They include:



* THROWAWAY CODE: code that was intended for use but then not used. However, instead of discarding it, developers may have another use for it. An example we came up with in class was Firefox who keep building their systems upon throwaway code.

* PIECEMEAL GROWTH: occurs when a system becomes overgrown and extremely unstructured. Some products may not be architected at all, they could just be processed. This can be disastrous for a system.

* KEEPING IT WORKING: keeping a system up and running even when it is being updated or changed. An example of this is Facebook; it is constantly being updated yet users are always able to log on and continue to use the system. It is all about keeping your customers happy. But as we discussed in class keeping a system working at all costs sometimes may be a disaster.

* SHEARING LAYERS: occurs when developers focus on and develop one area too much and forget about the others. Organizations want all their different layers to work in harmony: this cannot occur if they shear layers. An example would be if you are using a system (a keyboard) and all buttons work apart from 2. There is a shearing layer in the architecture of the system as they all do not correlate to each other.

* SWEEPING IT UNDER THE RUG: a strategy used by design teams to control decline. It is a strategy that will be used by all design teams; they try to hide the negatives.

* RECONSTRUCTION: occurs when an organization has to start all over again. When this occurs, all that is left to salvage is the patterns that underlie the experience.



I think that some of these patterns can be positive for organizations but Ithink that software should be as architected and as structured as possible which would lead to little errors.



Extreme Programming is said to turn the conventional software process upside down. EXTREME PROGRAMMING (XP) is software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. It is a type of agile software development and it advocates frequent "releases" in short development cycles, which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted. Some of the elements of XP include small releases, pair programming, planning game and open workspace.



Thirdly, we discussed IONA Case Part 2. I notices some problems within the company from reading the case. The business model changed from IONA being a technology consulting firm to a product company. The environment also changed as the offices were moved around on a yearly basis. The company had been famous for its 'everyone knows everyone else' feel and exciting work culture. But this attribute changed with the changing work space and also the demise of the popular 'wine and cheese' night on the last Friday of the month. The atmosphere in IONA definitely changed. Communication breakdown was also evident between all the different departments. Engineers were seen as managing everything within the company; there was no specific manger assigned to a department. So the question asked was how do you scale communication in an organization like IONA? Suggestions included reorganising Orbix, outsourcing, reinstating out of work parties. A company like IONA needs formal structure, but realistically you are never going to capture it all so do you need informal gatherings? As a manager how would one ensure that there is formal and informal structure? Allen pointed out that he would keep an eye on the atmosphere, be open to every situation, be politically astute, manager upwards and constantly diagnose the environment. I agree with all his points and in my opinion openness to every situation is extremely important for a manager.



Agile is seen as more of an umbrella term rather than a concrete method. In the agile movement, it is about making software development more valuable by adding value early. Software developers want to get the most valuable part to the market as soon as possible. There are 4 values needed: communication, simplicity, feedback and courage.Courage is needed to embrace change.



We finished off the class by undertaking a task assigned to us in pairs. The task was to assume we had an electronic device that can detect 'smells' and to create a number of paper+pencil sketches to mock-up a software interface for electronic nose. It was an interesting task as it required a lot of brainstorming. My partner and I came up with 'smell me' and we designed 6 interfaces for our app using Balsamiq. I found the task extremely helpful and I will certainly use it again for our group project for this class and also for another project e are doing. You can never forget the importance of just a pencil and some paper!



That's it for this week!



Happy Halloween!!
Full Post

No comments:

Post a Comment