Efficient programming refers to not just program performance, resource usage and speed but as team development and large scale, planned projects become the norm, to refer as well to formation of Developer Alliances and Development Guidelines Formulation.
Developer Alliances
Let me explain this with an example: Sammy, after reading PHP for punks and deciding he is well versed with the language, comes up with a great idea to create an online assignment submission system. However, he does not know anything about databases, and takes 2 more months to learn it. He then develops the system in a month’s time but the users aren’t very pleased with the user interface resulting in four more months to learn JavaScript and CSS and update the site. Now they are demanding more user interactivity.…. Within 2 years any webmaster tasked with the job of maintaining the website would find it a herculean task.
Developer Alliances compromise of a team of developers with complementary skills required for a given project. Sammy could have reduced the website’s development time by 6 months simply by teaming up with a developer or developers who were skilled in databases, JavaScript and CSS. It also would have resulted in better clients’ goodwill, and the cyber world can be a very unforgiving place.
Developer Alliances reduce development time, allowing you to beat deadlines and the competition to the market, develop more quality software by following Development Guidelines, different viewpoints on how to approach a problem and each developer concentrating on their area of expertise. It’s simply the principle of numbers and different approaches resulting to a better solution.
The computer world is rife with examples: Bill Gates and Bob Allen, resulting in the inception of Microsoft. Bill Joy teaming up with Scott McNealy,Vinod Khosla and Andy Bechtolshiem to create one of the best company in the IT business; Sun Microsystems.
Google, Yahoo, ICQ. No matter how brilliant you are, you could always use the input of another mind. One should ideally be in a team with people with whom they get along well and understand each other’s development techniques, coding style and areas of strength and weaknesses, and assigning development tasks as appropriate.
The principle of People Alliances applies to all fields and parts of life: Henry Ford teaming up with Thomas Edison resulted in even greater achievements for him, and his alliance with Harvey Firestone, Luther Burbank and John Burroughs propelled him to even bigger achievements.
The project to be undertaken must be taken into consideration in forming the Developer Alliances. The group’s number should ideally be 5-8 people, as larger groups tend to resulting in more time being used in decision making than in the decisions’ implementation.
Development Guidelines Formulation
One of the most essential skills in Developer Alliances is the ability to understand each other’s code or work and be able to immediately continue where they left off, as in Pair Programming, or to seamless incorporate their components, objects or various end products of the chosen model. Some are lucky to have worked on various past projects together but for others development guidelines are required. They should be as concise as possible, from the mundane to the general e.g.
All classes start with a capital letter with each subsequent word starting with a capital letter.
Meaningful names to be supplied for each module.
Network modules will be secure and implement encryption [using this product]”
From the above guidelines, each developer then will immediate deduce what is a class simply by its spelling. It will also result in well named libraries and an API, making code reuse or exposing the API to other independent developers straightforward.
Development guidelines should be directed by the chosen model of design and development. A great place to start is a programming language recommendations, a product’s convection etc. This should then be tailored to suit the developers’ needs and the given project.
As you move from the general to the specific, the guidelines become more detailed and more technical, offering both executive and technical information and statistics. This can then be used to remunerate team workers. This offers several benefits, for an experienced or expert developer can be on several teams, and using available software allows team members to work on the same project from different geographic locations, and if possible, in the same office.
When used concurrently with other software engineering principles and methodologies like requirements specification, DFDs, UML diagrams and so on, it leads to shorter development time and makes it easier to meet clients requirements due to different skills of the Developer Alliances members.
Tuesday, June 8, 2010
Subscribe to:
Posts (Atom)