Question: when is the work on a site is finished?
Answer: When no one uses it anymore.
There is a saying: “if a business doesn’t grow, it dies”. And these days businesses need to run twice as fast in order to stay in the same place.
This is why the true test for a site design is how fast can it respond to change requests. In the past adding new features to a site was a 1 to 2 years project which began with 6 months of documenting the requirements. But now if it takes you 3 months to work on the specification, by the time you finished writing the design document the requirements have already changed and the document is not worth the bytes which are used to store it.
In today land, if your competitor launches a new offering and you can’t respond to it within a couple of weeks, there is no point in trying. And because of that, we (the entire IT industry) need to learn how to think fast and deliver faster.
In the late 90’s signs of a big problem in the web development industry started to show up.
The problem was that by the time it took to deliver new business requirements, they were already obsolete when they went up, making the entire effort a failure.
This was the result of the development model of that time, Waterfall model, which did not meet the demand for speed and did not take advantage of just how quickly software could be updated.
- Individuals and interactions over processes and tools
- Self-organization and motivation are important, as are interactions like co-location and pair programming.
- Working software over comprehensive documentation
- Working software is more useful and welcome than just presenting documents to clients in meetings.
- Customer collaboration over contract negotiation
- Requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important
- Responding to change over following a plan
- Agile software development methods are focused on quick responses to change and continuous development
- That is, while there is value in the items on, the right, we value the items on the left more.
The union of people, process, and products to enable continuous delivery of value to our end users
DevOps is the product of the Agile movement. While agile is focused on the design & development process, DevOps meant to bring agile movement all the way to production and behind.
DevOps is a software engineering practice that aims at unifying software development (Dev) and software operation (Ops). The main characteristic of the DevOps movement is to strongly advocate automation and monitoring at all steps of software construction, from integration, testing, releasing to deployment and infrastructure management. DevOps aims at shorter development cycles, increased deployment frequency, more dependable releases, in close alignment with business objectives
As DevOps is intended to be a cross-functional mode of working, rather than a single DevOps tool there are sets (or “toolchains”) of multiple tools. Such DevOps tools are expected to fit into one or more of these categories, reflective of key aspects of the development and delivery process:
- Code — code development and review, source code management tools, code merging
- Build — continuous integration tools, build status
- Test — continuous testing tools that provide feedback on business risks
- Package — artifact repository, application pre-deployment staging
- Release — change management, release approvals, release automation, Containers
- Configure — infrastructure configuration and management, Infrastructure as Code tools
- Monitor — applications performance monitoring, end-user experience
DevOps is done with modern automation tools like Jenkins, Github, Visual Studio Online, Chef, Puppet, Docker, Azure Release Management and Kubernetes. Although in principle it is possible to practice DevOps with any architectural style, the Microservices architectural style is becoming the standard for building continuously deployed systems
In 1998, a single developer could make a website by creating a couple of HTML pages with images and host them on a server. In 2018 that is no longer enough. A single website can be composed of tens or even hundreds of server with advanced network components like firewalls, load-balancers and API gateway all working together.
Those websites are powered by modern CMS systems and contain hundreds of internal and external systems integration points. They contain many user interaction features like custom lead forms, comments & ratings, forums & wiki, and live chat. They offer mobile support using native/progressive/hybrid apps and social sites integration for both the users and their data. They provide business value with advanced marketing features like Search Engine Optimization, Social Media Optimization, Site Advertisement, Site Search and Site Personalization with the ability to measure site effectiveness using advanced Analytics & BI.
Designing, Building, Securing and Maintaining those site requires the combined effort of many people with different vocations, all working together around the clock in order to provide business value to their customers.
This is the full picture which contains the complete modern web apps requirement stack table:
You can read more about every concept on its Wikipedia page.