Anamorphic Development

Anamorphic Development is a 2-stage process developed and revised by ionisis in 2008 whereby only initial and minimal planning, design, prototyping, and analysis occurs, as more of a framework for the general concept or direction. The website is then made live to alpha users—or "test users"-- by invite only, and from their usage and feedback, the functionality is built that will flesh out the project and its features, not to exceed the original scope or concept of the project. This allows for the final result to take its own shape which is tailored to the needs of the client and users, and be free of unnecessary functionality. The project is considered complete once its original concept or scope has been fulfilled.
Process
Development begins almost immediately after conceptualization. As development continues, the client has easy access to the current application state, which usually resides on development servers, or a non-publicized location on a publicly accessible server, and is able to provide feedback and guidance as the project evolves, to shape the direction and growth of the project. At this stage, the programming and coding of the framework is usually done in parallel with client feedback and testing. The developers work closely with the client, and have frequent contact with them.
After the framework is considered extensible or satisfactory to build upon, the project is made live on the internet as an "Alpha" System, and select members of the general public are invited to begin using the project and to provide feedback and reviews of the project. Public review, in addition to client review, adds to a clearer picture of the direction and shape of the project that is necessary for its success, as sometimes the end users may think of new ways to do things, new features to enhance the project, find problems in the functionality, or find bugs in the project, some of which the client or the development firm would not have come across with without them. At this stage, the programming and coding of functionality is usually done in parallel with feedback and testing. Features are developed more rapidly because a subset of features, defined by priority, are the sole focus of each iteration of planning, design, and development, as opposed to the entire system.
Distinguishing factors
The distinguishing factor of anamorphic development is that the project continually and rapidly evolves or "morphs" to fit the needs of the client and end users, while trying to maintain its original concept and scope. Other than the core framework, there is very minimal feature planning at the onset, giving the project the potential to change shape and take on new functionality as it is discovered to be a need or a benefit, as opposed to planning all features, and having a result with functionality that is not needed, and lacking functionality that is needed. This is a much more targeted and adaptive trait as it is free of unnecessary functionality, which adds clutter to the code and adds unnecessary overhead in planning, testing, and development; this method addresses only actual needs. This free-formed adaptive trait is considered anamorphism. This process is quite distinct from other Systems Development Life Cycles and methodologies, such as Agile Web Development.
It is very important to note a clear and concise separation of the framework development phase and the features development phase, how the latter is a layer that exists upon the former, and how they are mutually exclusive development phases; this is the biggest distinction of this method. By developing an extensible framework, features can be plugged in with little of no modification of existing code, which allows for faster and more targeted feature development, and for a horizontally scalable project. There are usually no "releases" or "versions" of the project, as it is an ongoing prototype until it is declared finished, which is usually when it satisfies the initial needs and concept of the client.
This methodology is not widely used or approved of, as it allows for many modifications; but since there is no hard plan, this is not thought of as modifications, but more as morphing to more closely suit the needs of the end users, to more completely satisfy the concept as a whole, and to provide a better product with higher end user satisfaction and usability. By this methodology, it is better to have a more generalized and dynamic concept which you can adapt to as you go, as opposed to starting out with a static idea and a rigid and thorough plan, as problems arise each time a need changes or is realized.
Benefits
* less time spent in planning, which saves more time later when plans change (and they always do)
* saves time wasted in documentation, which almost never goes through a project's life cycle without being almost completely rewritten
* saves time on requirements analysis and reassessment, as end users and clients direct this process as the project evolves
* saves time testing, as the client and end users are also testers (even if unknowingly) and contribute to the feedback
* coding and programming can be performed faster and more accurately, as there is less of a need to go back and take out or rewrite existing code when new needs and requirements change, because it is usually the case that coding is done in parallel with feedback and testing, after the initial framework is constructed
* ensures greater usability and end user satisfaction, as it is modelled to fit their needs, within the scope of the original concept
* anamorphic projects are usually billed incrementally (monthly, weekly, daily, or hourly), due to the nature of the methodology, which ensures that the client gets the best product for the money invested (as users and clients set the requirements, to an extent)
* if billed incrementally, the client can stop the development of further features or enhancements when they reach their budget
* if billed incrementally, it helps to protect the development firm from going over budget when there are many features added or enhanced
* development is much faster and much more targeted than conventional methods, as it is free from some of the most time consuming tasks, like documentation, thorough requirements planning, and major modifications, which gives the project powerful results for short timelines
* the time spent on planning and designing is much shorter, as these steps are targeted for specific features, be it new or an enhancement
* it almost completely eliminates inaccurate planning, inaccurate assessments, misunderstandings of goals, and misdirection, as there is little initial planning, and after the commencement of the functionality development stage, development is done in very small and narrow steps, at the direction of feedback
Setbacks
* it is easy for a project to expand beyond the scope of the initial concept, and requires that the project manager understands the fine lines that signify the concept's boundaries
* it is easy for a project to go over budget, as features are enhanced and new features are added frequently, which is why some companies prefer to bill incrementally (monthly, weekly, daily, or hourly) for anamorphic projects
* if not billed incrementally, the cost of such a project is difficult to estimate for the development company
* if the development firm bills incrementally, then it is hard for the client to estimate cost
* the duration of such a project is difficult to estimate
Developers
Developers who use this methodology are referred to as anamorphic developers, and the team is made up of as few specialists as possible, who work closely together with each other, with the client, and with the end users. Their roles overlap each other to ensure clearer communication, tighter integration of efforts, higher accuracy, better quality, greater efficiency, and more speed.
 
< Prev   Next >