In a nutshell it is just the following:
- got a task/requirements/problem which can be solved with a computer
- implement a solution
- see that solution actually works (most of the time)
- see that solution fails in some cases
- iterate from 2) to 5) until the original task/requirement/problem is resolved to its full extend
Then as in life we say the task/requirement/problem should be resolved right? Well it is not based on Chaos Theory where everything is known and subject to a change. Thus follows and the original task/requirement/problem -> it changes with time.
Here we are not going to focus on how to deal with different kind of changes but rather we'll work with the ability to withstand changes or in other words to be adaptive and how these concepts can be applied to the software development discipline in pratical manner.
That said software development mainly is a combination of using a technology/tools(what we use) and the methodology followed(how we use them). In that sense there are working pratical showcases within Camplight Ltd (the company which I'm proud member of) that they are at least one step closer towards managing complexity, chaos and adapting to changes.
Follows is a short list of those two aspects of the same thing called software development:
software development - https://node-organic.com
- A concept and followup practical implementation of organic software development
- Provides huge gains of development performance for experienced persons
- covers and solves wide range of problems
- is designed following nature's patterns thus is highly adaptive to changes
Agile / Lean organization - http://trello.com
- Customizable Kanban board
- Simple and intuitive UI
- Realtime
Source code contributions - http://github.com
- Fast (!) & Secure
- Integrations build-in such as slack, trello, custom webhooks
- Working (!) PR reviews & comments
Knowledge contributions - http://drive.google.com
- Fast (!) & Secure
- Document based (supports standard word processing and spreadsheet tools)
- Cross-browser & cross-device support
- Realtime (!) collaboration
- Custom integrations via apis
Continuous delivery - http://codeship.com
- Continuous integration and delivery automation
- Buildin integration with github
Continuous delivery - http://linode.com
- Fast (!) & Secure VPS hosting
- Low cost, pay as you go model
- Full control, images, integration apis
Communication - http://slack.com
- Fast (!) & Secure text based communication
- Buildin integrations & apis for automation
- Plenty of open source contributions
- Desktop, Web & mobile native support
Communication - http://hangouts.google.com
- Free up to 10 participants for online video conference calls
- Cross-browser and cross-device support
- Agile / Lean
- Just one kickoff meeting per every start of working week
- Defines sprint’s goals and their priorities
- Clears any outstanding questions and/or open topics/tasks
- Review and Retrospectives are not needed - what’s done is visible day by day directly operational either on staging and/or production
- Communication (either online/offline/async) between all parties and stakeholders on
daily basis is required to drive development’s
- Priorities
- Results & feedbacks
- Tasks
- Tasks
- Are extracted from planned goals
- Are small (1-2 hours of actual work required)
- Can be created by everyone in the team
- Have priorities accordingly to their related goals
- Completed tasks are always tested and (if there is) feedback is provided resulting in new tasks (changes/fixes/improvements)
- Source code contributions
- GitFlow / GithubFlow
- Master branch is production ready deployable
- Staging branch is staging ready deployable before merging into Master
- Develop branch is main stable development line
- All other branches are features/hotfixes/etc… and are pushed constantly to upstream/origin been merged into Develop branch after PR and review
- TDD / BDD driven
- Assets design contributions
- UI/UX guide based - do not create entire pages all the time, rather design a common UI controls and UX guide
- Follow Photoshop Etiquette and alike
- Continuous delivery
- Incorporates a
staging
(quality assurance / tests) andproduction
modes of developed system - In large systems addon per feature deployments are suitable in isolated environments
- Incorporates a