| Zhamak Dehghani's "Data Mesh: Delivering Data-Driven Value at Scale" (2021) is a must read book for the data professional. So, here I am, finally managing to read it and give it some thought, even if it will probably take more time and a few more reads for the ideas to grow. Working in the fields of Business Intelligence and Software Engineering for almost a quarter-century, I think I can understand the historical background and the direction of the ideas presented in the book. There are many good ideas but also formulations that make me circumspect about the applicability of some assumptions and requirements considered. So, after data marts, warehouses, lakes and lakehouses, the data mesh paradigm seems to be the new shiny thing that will bring organizations beyond the inflection point with tipping potential from where organization's growth will have an exponential effect. At least this seems to be the first impression when reading the first chapters. |
||
The book follows to some degree the advocative tone of promoting that "our shiny thing is much better than previous thing", or "how bad the previous architectures or paradigms were and how good the new ones are" (see [2]). Architectures and paradigms evolve with the available technologies and our perception of what is important for businesses. Old and new have their place in the order of things, and the old will continue to exist, at least until the new proves its feasibility. The definition of the data mash as "a sociotechnical approach to share, access and manage analytical data in complex and large-scale environments - within or across organizations" [1] is too abstract even if it reflects at high level what the concept is about. Compared to other material I read on the topic, the book succeeds in explaining the related concepts as well the goals (called definitions) and benefits (called motivations) associated with the principles behind the data mesh, making the book approachable also by non-professionals. Built around four principles "data as a product", "domain-oriented ownership", "self-serve data platform" and "federated governance", the data mesh is the paradigm on which data as products are developed; where the products are "the smallest unit of architecture that can be independently deployed and managed", providing by design the information necessary to be discovered, understood, debugged, and audited. It's possible to create Lego-like data products, data contracts and/or manifests that address product's usability characteristics, though unless the latter are generated automatically, put in the context of ERP and other complex systems, everything becomes quite an endeavor that requires time and adequate testing, increasing the overall timeframe until a data product becomes available. The data mesh describes data products in terms of microservices that structure architectures in terms of a collection of services that are independently deployable and loosely coupled. Asking from data products to behave in this way is probably too hard a constraint, given the complexity and interdependency of the data models behind business processes and their needs. Does all the effort make sense? Is this the "agility" the data mesh solutions are looking for? Many pioneering organizations are still fighting with the concept of data mesh as it proves to be challenging to implement. At a high level everything makes sense, but the way data products are expected to function makes the concept challenging to implement to the full extent. Moreover, as occasionally implied, the data mesh is about scaling data analytics solutions with the size and complexity of organizations. The effort makes sense when the organizations have a certain size and the departments have a certain autonomy, therefore, it might not apply to small to medium businesses. Previous Post <<||>> Next Post References: |
A Software Engineer and data professional's blog on SQL, data, databases, data architectures, data management, programming, Software Engineering, Project Management, ERP implementation and other IT related topics.
Pages
- 🏠Home
- 🗃️Posts
- 🗃️Definitions
- 🏭Fabric
- ⚡Power BI
- 🔢SQL Server
- 📚Data
- 📚Engineering
- 📚Management
- 📚SQL Server
- 📚Systems Thinking
- ✂...Quotes
- 🧾D365: GL
- 💸D365: AP
- 💰D365: AR
- 👥D365: HR
- ⛓️D365: SCM
- 🔤Acronyms
- 🪢Experts
- 🗃️Quotes
- 🔠Dataviz
- 🔠D365
- 🔠Fabric
- 🔠Engineering
- 🔠Management
- 🔡Glossary
- 🌐Resources
- 🏺Dataviz
- 🗺️Social
- 📅Events
- ℹ️ About
13 March 2024
🔖Book Review: Zhamak Dehghani's Data Mesh: Delivering Data-Driven Value at Scale (2021)
03 October 2023
🧮ERP: Implementations (Part III: Simplifying the Implementation Project)
ERP implementations are complex projects and a way to manage their complexity is to
attempt reducing their complexity (instead of answering to complexity by
complexity). A project implementation’s methodology is probably the most important
area that allows project’s simplification, though none of the available
methodologies seems to work well with such projects.
The point
that differentiates the various methodologies is solution’s conceptualization.
In general, the expectation is to have a set of functional design documents
(FDDs) that describe how the system operates and that can be used for
programming the customizations, if any. The customer must review and sign-off the
FDDs before the setup is done, respectively the development starts. Moreover,
given the dependencies between documents, they often need to be signed off
together.
Unfortunately, FDDs reflect the degree of understanding of the target system and business requirements, gaps that can prove to be a challenge for the parties involved, requiring many iterations until they are brought to the expected quality level. The higher the accuracy considered; the more iterations are needed. FDDs tend to consume a considerable percent of the available financial resources, in extremis the whole budget being exhausted just for 'printed paper'. Moreover, the key users see late in the project the working functionality.
In agile methodologies, FDDs are replaced by user stories, and, if still needed,
can be written as part of the sprints or later. Unfortunately, agile
methodologies have their own challenges and constraints in ERP implementations.
As functionality is explored, understood, and negotiated with the customer
during the implementation, it’s seldom possible to provide a realistic cost
estimation upfront. Given that most ERP implementations exceed their budget,
starting a journey without having an idea how much the project costs seems to be
a prohibitive approach for many customers. Moreover, the negotiations have the
character of Change Requests, which can easily become a bottleneck for the project.
On the
other hand, agile methodologies involve the customer earlier and the
development could start earlier as well. The earlier the customer is involved, the
earlier the key users understand how the system works, and thus they can be
more efficient in performing their activities, respectively in identifying the
gaps in understanding, trapping functional issues early in the process, at
least in theory. Some projects address this need by having the key user trained,
though the training environment usually has a different setup and data than
needed by the customer. Wouldn’t be a good idea to have the key users trained in
an environment that reflects to a higher or lower degree the customer’s data and
setup requirements?
In theory
the setup for such an environment can be done upfront based on one standard configuration
frequently met in customer’s industry. With this the functional consultants can
start to configure the system together with the key users exploring the data and
setup existing in the legacy system(s). This would allow increasing on both
sides the depth of understanding and has the potential of speeding up the
implementation. This can be started in the early phases, during the time in
which the requirements are gathered. Ideally, a basic setup can exist already
when the requirements are signed off. It’s true that this approach would mean a
higher investment upfront, though the impact could be considerable. Excepting Data Migration and customizations the customer already has a good basis for
Go-Live.
Of course,
there can be further challenges, though the customer can make thus sure that
the financial resources are well spent – having a usable system, respectively a
good system understanding outweighs by far the extreme alternative of having high-quality
unimplemented FDDs!
07 March 2021
💼Project Management: Methodologies (Part II: Agile Manifesto Reloaded II - Requirements Management)
Independently of its scope and the methodology used, each software development project is made of the same blocks/phases arranged eventually differently. It starts with Requirements Managements (RM) subprocesses in which the functional and non-functional requirements are gathered, consolidated, prioritized and brought to a form which facilitates their understanding and estimation. It’s an iterative process as there can be overlapping in functionality, requirements that don’t bring any significant benefit when compared with the investment, respectively new aspects are discovered during the internal discussions or with the implementer.
As output of this phase, it’s important having a list of requirements
that reflect customer’s needs in respect to the product(s) to be implemented. Once
frozen, the list defines project’s scope and is used for estimating the costs, sketching
a draft of the final solution, respectively of reaching a contractual agreement
with the implementer. Ideally the set of requirements should be completed and be
coherent while reflecting customer’s needs. It allows thus in theory to agree upon
costs as well about an architecture and other important aspects (responsibilities/accountability).
Typically, each new requirement considered after this stage needs
to go through a Change Management (CM) process in which it gets formulated to the
needed level of detail, a cost, effort and impact analysis is performed, respectively
the budget for it is approved or the change gets rejected. Ideally small changes
can be considered as part of a buffer budget upfront, however in the end each change
comes with a cost and project delays.
Some changes can come late in the project and can have an important
impact on the whole architecture when important aspects were missed upfront. Moreover,
when the number of changes goes beyond a certain limit it can lead to what is known
as scope creep, with important consequences on project’s costs, timeline and quality.
Therefore, to minimize the impact on the project, the number of changes needs to
be kept to a minimum, typically considering only the critical changes, while the
others can be still implemented after project’s end.
The agile manifesto’s principles impose an important constraint
on the requirements - changing requirements is a good practice even late in the
process – an assumption - best requirements emerge from self-organizing teams, and
probably one implication – the requirements need to be defined together with the
implementer.
The way changing requirements are handled seem to provide more
flexibility though it’s actually a constraint imposed on the CM process which interfaces
with the RM processes. Without a proper CM in place, any requirement might arrive
to be implemented, independently on whether is feasible or not. This can easily
make project’s costs explode, sometimes unnecessarily, while accommodating extreme
behavior like changing the same functionality frequently, handling exceptions extensively,
etc.
It’s usually helpful to define the requirements together with the implementer, as this can bring more quality in the process, even if more time needs to be invested. However, starting from a solid set of requirements is a critical factor for project’s success. The manifesto makes no direct statement about this. Just iterates that good requirements emerge from self-organizing teams which is not necessarily the case.
The users who in theory can define the requirements best
are the ones who have the deepest knowledge about an organization’s processes and
IT architecture, typically the key users and/or IT experts. Self-organization revolves
around how a team organizes itself and handles the various activities, though there’s
no guarantee that it will address the important aspects, no matter how motivated
the team is, how constant the pace, how excellent the technical details were handled
or how good the final product works.
Previous Post <<||>>Next Post
💼Project Management: Methodologies (Part I: Agile Manifesto Reloaded I - An Introduction)
There are so many books written on agile methodologies, each attempting to depict the realities of software development projects. There are many truths considered in them, though they seem to blend in a complex texture in which the writer takes usually the position of a preacher in which the sins of the traditional technologies are contrasted with the agile principles. In extremis everything done in the past seems to be wrong, while the agile methods seem to be a panacea, which is seldom the case.
There are already 20 years since the agile manifesto was published
and the methodologies adhering to the respective principles don’t seem to provide
the expected success, suffering from the same chronical symptoms of their predecessors
- they are poorly understood and implemented, tend to function after hammer’s principle,
respectively the software development projects still deliver poor results. Moreover,
there are more and more professionals who raise their voice against agile practices.
Frankly, the principles behind the agile manifesto make sense.
A project should by definition satisfy stakeholders’ requirements, ideally through
regular deliveries that incorporate the needed functionality while gradually seeking
to get early feedback from customers, respectively involve the customer through
all project’s duration, working together to deliver a feasible product. Moreover,
self-organizing teams, face-to-face meetings, constant pace, technical excellence
should allow minimizing the waste, respectively maximizing the efficiency in the
project. Further aspects like simplicity, good design and architecture should establish
a basis for success.
Re-reading the agile manifesto, even if each read pulls from
experience more and more pro and cons, the manifesto continues to look like a Christmas
wish-list. Even if the represented ideas make sense and satisfy a specific need,
they are difficult to achieve in a project’s context and setup. Each wish introduces
a constraint that brings with it its own limitations. Unfortunately, each policy
introduced by a methodology follows the same pattern, no matter of the methodology
considered. Moreover, the wishes cover only a small subset from a project’s texture,
are general and let lot of space for interpretation and implementation, though the
same can be said about any principles that don’t provide a coherent worldview or
a conceptual model.
The software development industry needs a coherent worldview
that reflects its assumptions, models, characteristics, laws and challenges. Software Engineering (SE) attempts providing such a worldview though unfortunately is too
complex for many and there seem to be a big divide when considered in respect to
the worldviews introduced by the various Project Management (PM) methodologies.
Studying one or two PM methodologies, learning a few programming languages and even
the hand on experience on a few projects won’t fill the gaps in knowledge associated
with the SE worldview.
Organizations don’t seem to see the need for professionals of
having a formal education in SE. On the other side is expected from employees to
have by default some of the skillset required, which is not the case. Besides understanding
and implementing a technology there are a set of knowledge areas in which the IT
professional must have at least a high-level knowledge if it’s expected from him/her
to think critically about the respective areas. Unfortunately, the lack of such
knowledge leads sometimes to situations which can impact negatively projects.
Almost each important word from the agile manifesto pulls with it a set of concepts from a SE’ worldview – customer satisfaction, software delivery, working software, requirements management, change management, cooperation, teamwork, trust, motivation, communication, metrics, stakeholders’ management, good design, good architecture, lessons learned, performance management, etc. The manifesto needs to be regarded from a SE’s eyeglasses if one expects value from it.
07 May 2019
𖣯Strategic Management: Strategic Perspectives (Part I: Agile vs. Lean Organizations)
💼Project Management: Methodologies (Part IV: Agility under Eyeglasses II)
💼Project Management: Methodologies (Part III: Agility under Eyeglasses I)
[1] Harvard Business Review (2018) Why Agile Goes Awry - and How to Fix It, by Lindsay McGregor & Neel Doshi (Online) Available from: https://hbr.org/2018/10/why-agile-goes-awry-and-how-to-fix-it
[2] Forbes (2012) The Case Against Agile: Ten Perennial Management Objections, by Steve Denning (Online) Available from:
https://www.forbes.com/sites/stevedenning/2012/04/17/the-case-against-agile-ten-perennial-management-objections/#6df0e6ea3a95
[3] Springer (2018) Do Agile Methods Work for Large Software Projects?, by Magne Jørgensen (Online) Available from:
https://link.springer.com/chapter/10.1007/978-3-319-91602-6_12
[4] Michael O Church (2015) Why “Agile” and especially Scrum are terrible (Online) Available from:
https://michaelochurch.wordpress.com/2015/06/06/why-agile-and-especially-scrum-are-terrible/
[5] Dev.to (2019) Mockery of agile, by Artur Martsinkovskyi (Online) Available from: https://dev.to/arturmartsinkovskyi/mockery-of-agile-5bdf
21 April 2019
💼Project Management: Project Planning (Part II: Planning Correctly Misunderstood II)
The misunderstandings derive maybe also from the fact that each methodology introduces its own approach to planning. PMI as traditional approach talks about baseline planning with respect to scope schedule and costs, about management plans, which besides the theme covered in the baseline, focus also on quality, human resources, risks, communication and procurement, and separate plans can be developed for requirements, change and configuration management, respectively process improvement. To them one can consider also action and contingency planning.
In Prince2 the product-based planning is done at three levels – at project, stage, respectively team level – while separate plans are done for exceptions in case of deviations from any of these plans; in addition there are plans for communication, quality and risk management. Scrum uses an agile approach looking at the product and sprint backlog, the progress being reviewed in stand-up meetings with the help of a burn-down chart. There are also other favors of planning like rapid application planning considered in Extreme Programming (XP), with an open, elastic and undeterministic approach. In Lean planning the focus is on maximizing the value while minimizing the waste, this being done by focusing on the value stream, the complete list of activities involved in delivering the end-product, value stream's flow being mapped with the help of visualization techniques such as Kanban, flowcharts or spaghetti diagrams.
With so many types of planning nothing can go wrong, isn’t it? However, just imagine customers' confusion when dealing with a change of methodology, especially when the concepts sound fuzzy and cryptic! Unfortunately, also the programmers and consultants seem to be bewildered by the various approaches and the philosophies supporting the methodologies used, their insecurity bringing no service for the project and customers’ peace of mind. A military strategist will more likely look puzzled at the whole unnecessary plethora of techniques. On the field an army has to act with the utmost concentration and speed, to which add principles like directedness, maneuver, unity, economy of effort, collaboration, flexibility, simplicity and sustainability. It’s what Project Management fails to deliver.
Similarly to projects, the plan made before the battle seldom matches the reality in the field. Planning is an exercise needed to divide the strategy in steps, echelon and prioritize them, evaluate the needed resources and coordinate them, understand the possible outcomes and risks, evaluate solutions and devise actions for them. With a good training, planning and coordination, each combatant knows his role in the battle, has a rough idea about difficulties, targets and possible ways to achieve them; while a good combatant knows always the next action. At the same time, the leader must have visibility over fight’s unfold, know the situation in the field and how much it diverged from the initial plan, thus when the variation is considerable he must change the plan by changing the priorities and make better use the resources available.
Even if there are multiple differences between the two battlefields, the projects follow the same patterns of engagement at different scales. Probably, Project Managers can learn quite of a deal by studying the classical combat strategists, and hopefully the management of projects would be more effective and efficient if the imperatives of planning, respectively management, were better understood and addressed.
#️⃣Software Engineering: Programming (Part VIII: Pair Programming)
Software Engineering Series |
03 December 2016
♟️Strategic Management: Agility (Just the Quotes)
"There is common but flawed notion in enterprise IT circles that maintenance work requires less skill than full-scale development. As a result, project sponsors looking to reduce cost opt for a different team of lower-cost people for maintenance work. This is false economy. It hurts the larger business outcome and reduces IT agility." (Sriram Narayan, "Agile IT Organization Design: For Digital Transformation and Continuous Delivery", 2015)
"Agile is more a 'direction', than an 'end'. Transforming to Agile culture means the business knows the direction they want to go on." (Pearl Zhu, "Digital Agility: The Rocky Road from Doing Agile to Being Agile", 2016)
"Organizations that rely too heavily on org charts and matrixes to split and control work often fail to create the necessary conditions to embrace innovation while still delivering at a fast pace. In order to succeed at that, organizations need stable teams and effective team patterns and interactions. They need to invest in empowered, skilled teams as the foundation for agility and adaptability. To stay alive in ever more competitive markets, organizations need teams and people who are able to sense when context changes and evolve accordingly."
"Some folks think that Agile is about going fast. It’s not. It’s never been about going fast. Agile is about knowing, as early as possible, just how screwed we are." (Robert C Martin, "Clean Agile: Back to Basics", 2019)
"Data architects often turn to graphs because they are flexible enough to accommodate multiple heterogeneous representations of the same entities as described by each of the source systems. With a graph, it is possible to associate underlying records incrementally as data is discovered. There is no need for big, up-front design, which serves only to hamper business agility. This is important because data fabric integration is not a one-off effort and a graph model remains flexible over the lifetime of the data domains." (Jesús Barrasa et al, "Knowledge Graphs: Data in Context for Responsive Businesses", 2021)
29 September 2012
Programming: Pair Programming (Definitions)
"An XP practice requiring that each piece of source code to be integrated into the software product should be created by two programmers jointly at one computer."" (Johannes Link & Peter Fröhlich, "Unit Testing in Java", 2003)
"A coding technique where one programmer (the driver) writes code and explains what he or she is doing, while another watches and looks for problems." (Rod Stephens, "Start Here!™ Fundamentals of Microsoft® .NET Programming", 2011)
"A software development approach whereby lines of code (production and/or test) of a component are written by two programmers sitting at a single computer. This implicitly means ongoing real-time code reviews are performed." (IQBBA, "Standard glossary of terms used in Software Engineering", 2011)
"An Extreme Programming practice where two (or three) programmers work together at the same computer. The driver or pilot types while the observer, navigator, or pointer watches and reviews each line of code as it is typed." (Rod Stephens, "Beginning Software Engineering", 2015)
"A software development approach whereby lines of code (production and/or test) of a component are written by two programmers sitting at a single computer. This implicitly means ongoing real-time code reviews are performed." (SQA)
11 March 2012
🚧Project Management: Scrum (Definitions)
"An agile method whose focus is on project management and requirements management. Scrum is often combined with XP." (Pramod J Sadalage & Scott W Ambler, "Refactoring Databases: Evolutionary Database Design", 2006)
"An agile software project management process introduced by Ken Schwaber and Jeff Sutherland. Scrum is known for self-organized teams, thirty-day iterations called Sprints, daily team meetings called Scrum, and a to-do list called Product Backlog." (Bruce MacIsaac & Per Kroll, "Agility and Discipline Made Easy: Practices from OpenUP and RUP", 2006)
"An agile process based on a football analogy, using small teams working in an intensive, independent manner." (Bruce P Douglass, "Real-Time Agility", 2009)
"An iterative incremental framework for managing projects commonly used with agile software development." (IQBBA, "Standard glossary of terms used in Software Engineering", 2011)
"An iterative, incremental methodology for project management often seen in agile software development, a type of software engineering." (DAMA International, "The DAMA Dictionary of Data Management", 2011)
"A development methodology that uses frequent small increments to build an application iteratively and incrementally." (Rod Stephens, "Beginning Software Engineering", 2015)
"An iterative and incremental time-boxed method of developing software using small, self-directed teams. The goal of scrum is to flexibly develop what customers find valuable." (Pamela Schure & Brian Lawley, "Product Management For Dummies", 2017)
"An agile framework for developing and sustaining complex products with specific roles, events, and artifacts." (Project Management Institute, "Practice Standard for Scheduling" 3rd Ed., 2019)
"Iterative and incremental product development framework used in agile projects." (Jurgen Janssens, "Managing Customer Journeys in a Nimble Way for Industry 4.0", 2019)
"Scrum is a style of agile software development. It is built around the idea of iterative development and short daily meetings (called scrums) where progress or problems are shared." (Alex Thomas, "Natural Language Processing with Spark NLP", 2020)
"An agile process framework for managing knowledge work, with an emphasis on software development." (Kamalendu Pal & Bill Karakostas, "Software Testing Under Agile, Scrum, and DevOps", 2021)
"An iterative and incremental software development to handle drawbacks of traditional development methodologies. It produces many releases in short times based on customer requirements, time pressure, competition, product quality and available resources." (Fayez Salma & Jorge M Gómez, "Challenges and Trends of Agile", Balancing Agile and Disciplined Engineering and Management Approaches for IT Services and Software Products, 2021)
26 October 2008
GSCM: Kanban (Definitions)
"In lean cellular manufacturing, a visual device, such as a card, floor space (kanban square), or production bin, which communicates to a cell that additional materials or products are demanded from the subsequent cell." (Leslie G Eldenburg & Susan K Wolcott, "Cost Management" 2nd Ed., 2011)
"A card-based techniques for authorizing the replenishment of materials." (Daryl Powell, "Integration of MRP Logic and Kanban Shopfloor Control", 2014)
"A just-in-time technique that uses kanban cards to indicate when a production station needs more parts. When a station is out of parts (or is running low), a kanban card is sent to a supply station to request more parts." (Rod Stephens, "Beginning Software Engineering", 2015)
"A note, card, or signal, a Kanban used to trigger a series of processes, usually downstream in the supply chain, in order complete tasks, products, and/or services. As part of a workflow management systems, timely Kanbans allow for efficient operations that enable agile, just-in-time (JIT), and lean philosophies to work." (Alan D Smith, "Lean Principles and Optimizing Flow: Interdisciplinary Case Studies of Best Business Practices", 2019)
"Agile method to manage work by limiting work in progress. Team members pull work as capacity permits, rather than work being pushed into the process when requested. Stimulates continuous, incremental changes. Aims at facilitating change by minimizing resistance to it." (Jurgen Janssens, "Managing Customer Journeys in a Nimble Way for Industry 4.0", 2019)
"This tool is used in pull systems as a signaling device to trigger action. Traditionally it used cards to signal the need for an item. It can trigger the movement, production, or supply of a unit in a production chain." (Parminder Singh Kang et al, "Continuous Improvement Philosophy in Higher Education", 2020)
"A signal that communicates a requirement for a quantity of product." (Microsoft, "Dynamics for Finance and Operations Glossary")
"A signaling device that gives instruction for production or conveyance of items in a pull system. Can also be used to perform kaizen by reducing the number of kanban in circulation, which highlights line problems." (Lean Enterprise Institute)
28 December 2007
🏗️Software Engineering: Extreme Programming (Just the Quotes)
"Given the choice between an extremely skilled loner and a competent-but-social programmer, XP teams consistently choose the more social candidate. The best interviewing technique is to have the candidate work with the team for a day. Pair programming provides an excellent test of technical and social skills." (Kent Beck, "Extreme Programming Explained: Embrace Change", 1999)
"The XP philosophy is to start where you are now and move towards the ideal. From where you are now, could you improve a little bit?" (Kent Beck, "Extreme Programming Explained: Embrace Change", 1999)
"The new concept of Extreme Programming (XP) is gaining more and more acceptance, partially because it is controversial, but primarily because it is particularly well-suited to help the small software development team succeed. [...] XP is controversial, many software development sacred cows don't make the cut in XP; it forces practitioners to take a fresh look at how software is developed." (Kent Beck, "Abstract Extreme Programming Explained", 2000)
"Don't produce voluminous design documents at the beginning. Don't even produce them in the middle: produce them at the end. Extreme Programming teaches you how to keep the design flexible, for highest flexibility and fastest implementation. The design documents you produce at the beginning will go out of date very quickly (they always do, even on non-Extreme projects), and you 'Il either waste time updating the docs or let them get out of date. Either is bad." (Ron Jeffries, "Extreme Programming Installed", 2001)
"Don't try to freeze requirements before you start implementing. Requirements changes show that the customer is learning! Sure, it would be nice if they knew just what they wanted before you started building things, but the fact is that when they see what you're building, they'll learn what they meant. XP lets you use a development and planning approach that allows for change, without big up-front investment in frameworks or flexibility." (Ron Jeffries, "Extreme Programming Installed", 2001)
"Extreme Programming is a discipline of software development with values of simplicity, communication, feedback and courage. We focus on the roles of customer, manager, and programmer and accord key rights and responsibilities to those in those roles." (Ron Jeffries, "Extreme Programming Installed", 2001)
"The values of XP are simplicity, communication, feedback, and courage. [...] Use simple design and programming practices, and simple methods of planning, tracking, and reporting. Test your program and your practices, using feedback to decide how to steer the project. Working together in this way gives the team courage." (Ron Jeffries, "Extreme Programming Installed", 2001)
"We all strive for simple and clear design, don't we? Of course we do. But in XP, we take it to extremes. At every moment in time, we want the system to be as simple as possible. That means that we want no additional functions that aren't used, no structures or algorithms that are more complex than the current need would dictate." (Ron Jeffries, "Extreme Programming Installed", 2001)
"XP isn't slash and burn programming, not code and fix, not at all. Extreme Programming is about careful and continuous design, rapid feedback from extensive testing, and the maintenance of relentlessly clear and high-quality code." (Ron Jeffries, "Extreme Programming Installed, 2001)
"Extreme Programming is the most prominent new, light-weight (or agile) methods, defined to contrast the current heavy-weight and partially overloaded object-oriented methods. It focuses on the core issues of software technology. One of its principles is not to rely on diagrams to document a system." (Bernhard Rumpe, "Executable Modeling with UML. A vision or a Nightmare", Issues & Trends of Information Technology Management in Contemporary Associations, 2002)
"Extreme Programming recognizes the importance of design decisions, but it strongly resists upfront design. Instead, it puts an admirable effort into communication and improving the project’s ability to change course rapidly. With that ability to react, developers can use the “simplest thing that could work” at any stage of a project and then continuously refactor, making many small design improvements, ultimately arriving at a design that fits the customer’s true needs." (Eric Evans, "Domain-Driven Design: Tackling complexity in the heart of software", 2003)
"In fact, XP works best for developers with a sharp design sense. The XP process assumes that you can improve a design by refactoring, and that you will do this often and rapidly. But past design choices make refactoring itself either easier or harder. The XP process attempts to increase team communication, but model and design choices clarify or confuse communication." (Eric Evans, "Domain-Driven Design: Tackling complexity in the heart of software", 2003)
"Extreme Programming is the first popular methodology to view software development as an exercise in coding rather than an exercise in management." (Ben Aveling, "XP lite considered harmful?", 2004)
"One of the central axioms of extreme programming is the disciplined use of regression testing during stepwise software development." (Thomas A Henzinger et al, "Extreme model checking", 2004)
02 October 2007
🏗️Software Engineering: Agile Methods (Just the Quotes)
"Agile development methodologies promise higher customer satisfaction, lower defect rates, faster development times and a solution to rapidly changing requirements. Plan-driven approaches promise predictability, stability, and high assurance. However, both approaches have shortcomings that, if left unaddressed, can lead to project failure. The challenge is to balance the two approaches to take advantage of their strengths and compensate for their weaknesses." (Barry Boehm & Richard Turner, "Observations on balancing discipline and agility", Agile Development Conference, 2003)
"It is a myth that we can get systems 'right the first time'. Instead, we should implement only today’s stories, then refactor and expand the system to implement new stories tomorrow. This is the essence of iterative and incremental agility. Test-driven development, refactoring, and the clean code they produce make this work at the code level."
"Agile approaches to software development consider design and implementation to be the central activities in the software process. They incorporate other activities, such as requirements elicitation and testing, into design and implementation. By contrast, a plan-driven approach to software engineering identifies separate stages in the software process with outputs associated with each stage."
"Agile methods universally rely on an incremental approach to software specification, development, and delivery. They are best suited to application development where the system requirements usually change rapidly during the development process. They are intended to deliver working software quickly to customers, who can then propose new and changed requirements to be included in later iterations of the system. They aim to cut down on process bureaucracy by avoiding work that has dubious long-term value and eliminating documentation that will probably never be used." (Ian Sommerville, "Software Engineering" 9th Ed., 2011)
"Agile development methods require a disciplined approach to ensure that customer feedback, continuous testing, and iterative development actually lead to frequent deliveries of working, valuable software." (Michael Hüttermann et al, "DevOps for Developers", 2013)
"The advantages of Agile processes, including Scrum and Kanban (a method for delivering software with an emphasis on just-in-time delivery), are often nullified because of the obstacles to collaboration, processes, and tools that are built up in front of operations." (Michael Hüttermann et al, "DevOps for Developers", 2013)
"This is what the Agile Manifesto means when it says responding to change over following a plan. To maximize adaptability, it is essential to have good, fast feedback loops. This is why there is so much emphasis on iterative development." (Sriram Narayan, "Agile IT Organization Design: For Digital Transformation and Continuous Delivery", 2015)
"Heart of Agile is a meme. Heart of Agile is four words stripped down to nothing. It contains only four words – collaborate, deliver, reflect, improve." (Alistair Cockburn, [interview] 2017)
20 May 2007
🌁Software Engineering: DevOps (Definitions)
"An application delivery philosophy that stresses communication, collaboration, and integration between software developers and their information technology (IT) counterparts in operations. DevOps is a response to the interdependence of software development and IT operations. It aims to help an organization rapidly produce software products and services." (Pierre Pureur & Murat Erder, "Continuous Architecture", 2015)
DevOps is an approach based on lean and agile principles in which business owners and the development, operations, and quality assurance departments collaborate to deliver software in a continuous manner that enables the business to more quickly seize market opportunities and reduce the time to include customer feedback. Indeed, enterprise (Sanjeev Sharma & Bernie Coyne, "DevOps For Dummies" 2nd Ed, 2015)
"Is a method for software development and management that integrates the development and deployment cycles to achieve a more agile, continuous evolution of software-based products and services" (Diego R López & Pedro A. Aranda, "Network Functions Virtualization: Going beyond the Carrier Cloud", 2015)
"DevOps is a mindset, a culture, and a set of technical practices. It provides communication, integration, automation, and close cooperation among all the people needed to plan, develop, test, deploy, release, and maintain a Solution." (Dean Leffingwell, "SAFe 4.5 Reference Guide: Scaled Agile Framework for Lean Enterprises" 2nd Ed., 2018)
"Short for development operations, an information technology environment in which development and operations are tightly tied together, yielding small incremental releases to gain user feedback." (O Sami Saydjari, "Engineering Trustworthy Systems: Get Cybersecurity Design Right the First Time", 2018)
"The practice of incorporating developers and members of operations and quality assurance (QA) staff into software development projects to align their incentives and enable frequent, efficient, and reliable releases of software products." (Shon Harris & Fernando Maymi, "CISSP All-in-One Exam Guide" 8th Ed., 2018)
"The tighter integration between the developers of applications and the IT department that tests and deploys them. DevOps is said to be the intersection of software engineering, quality assurance, and operations." (William Stallings, "Effective Cybersecurity: A Guide to Using Best Practices and Standards", 2018)
"A software engineering practice that aims at unifying software development (Dev) and software operation (Ops)." (Jun Bi et al, "Automatic Address Scheduling and Management for Broadband IP Networks", Emerging Automation Techniques for the Future Internet, 2019)
"Develop operations, or DevOps, is an agile methodology that merges the functions of software development and operations in the enterprise software development domain. This approach has been adopted in the networking world to facilitate a programmable approach to network operations. Often when applied to networking the term is changed to NetOps." (Patrick Moore, "Model-Centric Fulfillment Operations and Maintenance Automation", Emerging Automation Techniques for the Future Internet, 2019)
"Practices and technologies that promote tighter coupling of software development (Dev) and operations (Ops) - typically marked by more automation, continuous monitoring, shorter development cycles and higher deployment frequencies. A key driver for security policy automation. DevSecOps is a related term that refers to practices and technologies that aim to embed security in DevOps practices." (Myo Zarny et al, "Network Security Policy Automation: Enterprise Use Cases and Methodologies", 2019)
"Development and operations is an abbreviation for 'development' and 'operations'; is a software engineering methodology for managing software development (Dev) and technology operations (Ops). The main aim of DevOps is to enable automation and tracing for all phases of software implementation, from integration, testing, releasing to deployment and infrastructure management." (Antoine Trad & Damir Kalpić, "Using Applied Mathematical Models for Business Transformation", 2020)
"Development and operations (DevOps) has been adopted by prominent software and service companies (e.g., IBM) to support enhanced collaboration across the company and its value chain partners. In this way, DevOps facilitates uninterrupted delivery and coexistence between development and operation facilities, enhances the quality and performance of software applications, improving end-user experience, and help to simultaneous deployment of software across different platforms." (Kamalendu Pal & Bill Karakostas, "Software Testing Under Agile, Scrum, and DevOps", 2021)
"DevOps is a sprint-based approach that can catch coding flaws during the development of code due to security reviews, rework on previous sprint cycles, and testing." (David A Bird, "Hacker and Non-Attributed State Actors", Real-Time and Retrospective Analyses of Cyber Security, 2021)
"It is a set of practices emerging to bridge the gaps between operation and developer teams to achieve a better collaboration." (Mirna Muñoz, "Boosting the Competitiveness of Organizations With the Use of Software Engineering", 2021)
"It is a way to work were the software is rapidly developed and immediately deployed for operating in a computational productive environment. It is continuous delivery product development lifecycle. It must automate the development process. DevOps is both a culture and a set of technologies and tools used for automation." Laura C Rodriguez-Martinez et al, "Service-Oriented Computing Applications (SOCA) Development Methodologies: A Review of Agility-Rigor Balance", 2021)
"People from software development and operations work together to enhance the speed of delivery of new software features. It is a concept for bridging the gap between software development and software operations and integrating the logic of common responsibility for the complete software delivery lifecycle into one cross-functional team." (Anna Wiedemann et al, "Transforming Disciplined IT Functions: Guidelines for DevOps Integration", 2021)
"DevOps is a set of tools and processes that help automate IT
operations." (Aniruddha Deswandikar,"Engineering Data Mesh in Azure
Cloud", 2024)
"DevOps is a catch‑all term for the blending of roles between developers and operations engineers. As the barriers between roles such as database administrator, systems administrator, and software engineer have eroded, the term DevOps has emerged as a way of describing the intersection of responsibilities from all these camps, and their increasing interrelation in the lifecycle of a product. A crucial enabling aspect of this movement is the increased use of automation in building, deploying, and monitoring large applications." (NGINX) [source]
"DevOps is a collection of best practices and working methods for the software development process whose cumulative goal is to shorten the development life cycle and support practice such as continuous integration, continuous delivery and continuous deployment." (Sum Logic) [source]
"DevOps is a set of practices that works to automate and integrate the processes between software development and IT teams, so they can build, test, and release software faster and more reliably." Atlassian [source]
"DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes." (Amazon) [source]
"DevOps refers to a broad range of practices related to the development and operation of software code in production in cloud data centers. DevOps is centered in Agile project management techniques and microservice support. DevOps approaches the entire software development lifecycle with automation based around version control standards." (VMWare) [source]
"The cultural movement that stresses communication, collaboration and integration between software developers and IT operations." (Global Knowledge)
30 April 2007
🌁Software Engineering: User Story (Definitions)
"Informal description of a functional requirement or product property in XP. A user story serves as the basis for acceptance tests that formally check whether the product complies with the described function or property." (Johannes Link & Peter Fröhlich, "Unit Testing in Java", 2003)
"A requirement formulated into a small number of sentences in the user’s natural language. User stories are common in Extreme Programming (XP)." (Bruce P Douglass, "Real-Time Agility", 2009)
"A short narrative that explains who wants something to happen in a piece of software, what they want, and why they want it." (Jon Radoff, "Game On: Energize Your Business with Social Media Games", 2011)
"A narrative description of a software requirement, function, feature, or quality attribute presented as a narrative of desired user interactions with a software system." (Project Management Institute, "Software Extension to the PMBOK® Guide" 5th Ed., 2013)
"A short story explaining how the system will let the user do something." (Rod Stephens, "Beginning Software Engineering", 2015)
"A tool used in Agile software development to capture a description of a software feature from an end-user perspective. The user story describes the type of user, what he or she wants, and why. A user story helps to create a simplified description of a requirement." (Pierre Pureur & Murat Erder, "Continuous Architecture", 2015)
"Description of the functionality that a product should have, written from the perspective of the user. A very simplified and focused requirement description." (Pamela Schure & Brian Lawley, "Product Management For Dummies", 2017)
"User stories are short, text-based descriptions of functionality required by a stakeholder group." (Cate McCoy & James L Haner, "CAPM Certified Associate in Project Management Practice Exams", 2018)
"A high-level user or business requirement commonly used in agile software development, typically consisting of one or more sentences in the everyday or business language capturing what functionality a user needs, any non-functional criteria, and also includes acceptance criteria. " (ISTQB)
04 March 2007
🌁Software Engineering: eXtreme Programming (Definitions)
"A disciplined and deliberate agile development method that focuses on the critical activities required to build software." (Pramod J Sadalage & Scott W Ambler, "Refactoring Databases: Evolutionary Database Design", 2006)
"An agile process created by Kent Beck. XP articulates five values to guide you in your project: Communication, Simplicity, Feedback, Courage, and Respect." (Bruce MacIsaac & Per Kroll, "Agility and Discipline Made Easy: Practices from OpenUP and RUP", 2006)
"An agile software development approach championed by Kent Beck and others." (Bruce P Douglass, "Real-Time Agility: The Harmony/ESW Method for Real-Time and Embedded Systems Development", 2009)
"A software engineering methodology that promotes agility and simplicity, typically involving pair programming and a cycle of frequent testing and feedback." (Mark S Merkow & Lakshmikanth Raghavan, "Secure and Resilient Software Development", 2010)
"A development approach that focuses on building projects incrementally using frequent builds. It includes techniques such as coding to the specific problem rather than a general one, paired programming, and test-driven development." (Rod Stephens, "Start Here! Fundamentals of Microsoft® .NET Programming", 2011)
"A software engineering methodology used within agile software development whereby core practices are programming in pairs, doing extensive code review, unit testing of all code, and simplicity and clarity in code. See also Agile software development." (Requirements Engineering Qualifications Board, "Standard glossary of terms used in Requirements Engineering", 2011)
"An updated approach to Rapid Application Development using object-oriented techniques and a minimum of specifications." (DAMA International, "The DAMA Dictionary of Data Management", 2011)
"A lightweight agile software engineering methodology used whereby a core practice is test-first programming." (Tilo Linz et al, "Software Testing Foundations, 4th Ed", 2014)
"A development model that takes typical programming practices (such as code reviews) to extremes (pair programming)." (Rod Stephens, "Beginning Software Engineering", 2015)
"An engineering methodology consisting of code-focused practices to ensure high quality of development." (Fayez Salma & Jorge M Gómez, "Challenges and Trends of Agile", 2021)
"A software engineering methodology used within agile software development whereby core practices are programming in pairs, doing extensive code review, unit testing of all code, and simplicity and clarity in code. See also agile software development." (IQBBA)
24 February 2007
🌁Software Engineering: Kanban (Definitions)
"An agile methodology where a team member who finishes his current item takes the next highest priority item from the project’s backlog. Kanban seeks to restrict the amount of work in progress at any given time." (Rod Stephens, "Beginning Software Engineering", 2015)
"In software development, a method for developing software on a just-in-time basis. Kanban removes the scrum time boxed method to track work, which is useful when your development team members have specialized skills." (Pamela Schure & Brian Lawley, "Product Management For Dummies", 2017)
"Agile method to manage work by limiting work in progress. Team members pull work as capacity permits, rather than work being pushed into the process when requested. Stimulates continuous, incremental changes. Aims at facilitating change by minimizing resistance to it." (Jurgen Janssens, "Managing Customer Journeys in a Nimble Way for Industry 4.0", 2019)
"An agile method inspired by the original Kanban inventory control system and used specifically for knowledge work." (Project Management Institute, "Practice Standard for Scheduling" 3rd Ed., 2019)
"An agile process framework with a flow control mechanism used for just-in-time pull driven production where the upstream processing activities are started by the downstream process request signals." (Shanmuganathan Vasanthapriyan & Kalpani M U Arachchi, "Effectiveness of Scrum and Kanban on Agile-Based Software Maintenance Projects", 2020)
"A method in software development which considered as a system for visualizing work and converting it into flow to reduce waste time and maximizing customer value." (Fayez Salma & Jorge M Gómez, "Challenges and Trends of Agile", 2021)
07 February 2007
🌁Software Engineering: Rapid Prototyping (Definitions)
"Rapid prototyping is a method that involves creating a series of prototypes in rapid, iterative cycles. Normally, a prototype is created quickly, presented to users in order to obtain feedback on the design, and then a new prototype is created that incorporates that feedback. This cycle is continued until a fairly stable, satisfactory design emerges, which informs the design of a production-scale system." (M Cameron Jones, "Patchwork Prototyping with Open Source Software", 2007)
"The use of rapid prototyping methodologies is to reduce the production time by using working models of the final product early in a project tends to eliminate time-consuming revisions later on, and by completing design tasks concurrently, rather than sequentially throughout the project. The steps are crunched together to reduce the amount of time needed to develop training or a product. The design and development phases are done simultaneously and the formative evaluation is done throughout the process." (Irene Chen, "Instructional Design Methodologies", 2008)
"A step in software development process that supports user’s involvement in design by allowing users to see and experience the final system before it is built." (Irina Kondratova & Ilia Goldfarb, "Culturally Appropriate Web User Interface Design Study: Research Methodology and Results", 2011)
"A family of technologies that enable the relatively fast and low-cost production of products for testing and evaluation purposes." (Rachel Heinen et al, "Tools for the Process: Technology to Support Creativity and Innovation", 2015)
About Me
- Adrian
- Koeln, NRW, Germany
- IT Professional with more than 24 years experience in IT in the area of full life-cycle of Web/Desktop/Database Applications Development, Software Engineering, Consultancy, Data Management, Data Quality, Data Migrations, Reporting, ERP implementations & support, Team/Project/IT Management, etc.