Metaphors for software development

Often in the software business, you ll deal with people that dont really know a great deal about software. It is about using the right words, the correct labels to communicate effectively the content and the goals of the software being produced. Eating your own dog food or dogfooding is the practice of an organization using its own product. In the software development field, manufacturing metaphors abound for what we do. It is a leaky abstraction, and i wonder if we can do better. When developing software product, there are many approaches for architectures, design and implementation. And theres no fear that the zoom operation is actually changing the size of the underlying image, since thats not what magnifying glasses do. Software engineering with an agile development framework. What is a good analogy to explain how software development is different than building a bridge.

For small projects, the letter writing metaphor works adequately, but for other purposes it leaves the party early it does not describe software development fully or adequately. A tweet about how engineers should not write code spanish made me revisit a subject i used to enjoy. A confusing abundance of metaphors has grown up around software development. My favorite take on its problems is this article by martin fowler. Its like having to write detailed step by step directions for how to drive somewhere. Another popular metaphor for software development is gardening, from the pragmatic programmers, i believe. I take the association one step further and claim that it craft is not just a good metaphor for software development, but that software development is literally a craft. In my blog post, i discuss an alternative metaphor for process. Fred brooks the mythical manmonth 1995 says, plan to throw on away. Understanding software construction metaphors joseph e phillips. Hence dogfooding can act as quality control, and eventually a kind of testimonial advertising.

Software is unpredictable the first is a belief that software is inherently unpredictable in the medium to long term. A metaphor serves more as a heuristic than it does as an algorithm. I have gathered some of my favorite metaphors in this post. We use metaphors to explain or understand something in terms of something else. Much of what we do is informed by visionaries from the manufacturing sector, taichi ono, eliyahu goldratt. How can we use software metaphors and common metaphors. But you usually have to add contingency plans for things like what if there is. But metaphors also target the process of software development, and not only the final product. The presentation slides from a talk i gave at xp2010 in trondheim, norway. Be careful with software metaphors over the years, there have been any number of popular software metaphors that help people radically misunderstand the realities of software development.

Oct 18, 2006 it is a trivial observation that software programmers use a lot of metaphors. So, speaking in metaphors, softwaredevelopment is like designing a house. When explaining our software development process to clients, the lab3 team often finds itself comparing developing software to the building of a house. Probably the most famous and persistent one is the idea that making software is similar to building a skyscraper or to building construction in general. Essentially youre asking what the difference is between an engineering process and a software. Bootstrapping can also refer to the development of successively more complex, faster programming environments. When explaining our software development process to clients, the lab3 team often finds itself comparing developing software to the building of. Metaphor appears in many aspects of software development henney2003 from architectural, such as classic xps expression of architecture through a system metaphor beck2000, to metaphors for software development itself, such as building architecture or civil engineering. Metaphors and software development the imaginative universal.

Sep 10, 2019 agile software development today mostly means scrum. Kent beck, author of extreme programming explained defines a system metaphor as. Id embrace the metaphor and simply point out where normal bridge building practices differ from normal software development practices. Are there any good metaphors for explaining project. These are the creators of devices, languages, algorithms, or data structures who need. Henrik kniberg created the original and best known version of the drawing. If youve ever read a book or attended a training sessionon on agileagile development, youve probably seen it, too. The buildingconstruction metaphor could be extended in a variety of other directions, which is why the metaphor is so powerful. In this case, though, the central theme of the book turned me off. Youre reading joel on software, stuffed with years and years of completely raving mad articles about software development. Indurkhya characterizes metaphor as a description of an object or event, real or imagined, using concepts that cannot be applied to the object or event in a conventional way p. On software development metaphors, programmers and engineers. Bootstrapping is a resampling technique used to obtain estimates of summary statistics.

Bootstrapping in business means starting a business without external help or working capital. Neil ernst talks about software metaphors a bit, applicability of the home contracting metaphor, and also makes the points out that software engineering is inherently hard to explain because it is work in the abstract. But computer science metaphors also serve an important but distinct purpose for those engaged in the creative activity of hardware production and software tool development. Scrum describes a process a set of activities but its only agile when you do this activities in an agile mindset.

Use these metaphors to your advantage so that you arent stuck with a listener that has no clue, and now no more interest, in what you are talking about. Much of what we do is informed by visionaries from the manufacturing sector, taichi ono, eliyahu goldratt, even more directly folks like mary and tom poppendieck. Since there will be a lot of answers given here about coding metaphors, ill answer with the classic metaphor for the development process as a whole. The problem is immediately apparent to anyone that has been involved with getting work done. One of the most difficult questions is how much future proof you want to design your application for. The metaphor that im considering is one in which the software is an amorphous blob of children in a school. In software development the system metaphor has been adopted as a core practice by the agile community.

In a recent software development seminar, we discussed a famous analogy for agile development. Aug 11, 2015 many terms common in software development derive from the building metaphor. Software development metaphors web developmentupdates. An extreme programming system metaphor is a practice that is used by the xp developers to replace the standard project architecture used in traditional software development methodologies. Lakoff and johnson 1980 argue that we live our life by metaphors. All professions are obliged to invoke metaphors in one way or another, but in software programming i think the program is so extensive that we are not even aware of the fact that creating metaphors is our primary job. Metaphors are more than just flowery language, even though thats how theyre taught to us in gradeschool and college, said prather, ceo of tamarou, a boutique perl development shop. Entrepreneurs in the startup development phase of their company, survive through internal cash flow and are very cautious with their expenses. Building construction the most common aspect of this metaphor is that a physical architect is somewhat analogous to a software architect.

What ive arrived at for my own metaphor is a work in progress, so please bear with me and feel free to contribute your own thoughts, as i would enjoy working through this as an exercise to improve the way i think about development. Exploring farming metaphors for software development. On the web, you have less universal metaphors, but you will still often see. Ron jefferies stated that user stories included a card, conversation, and confirmation. You will, no doubt, encounter many metaphors related to programming and software development in general. I think that the most tried and true metaphor for software development, at least in terms of process, is that of building construction.

The language of computer science in general, and software development in particular, is laced with metaphor. However, we do need to have both skills to build software. Metaphor acts as a guide for the users thoughts and imaginations, whatever the writers purpose. Metaphor in software development europlop 2006 crashing suggests an object in motion, typically a machine. The thought experiments and allegories about resourcesharing or agreement between nodes played a vital role in the development of. The vertical challenge metaphors are equally apt for software development.

Software engineering metaphors involving building a skyscraper and planting a garden. Pete mcbreen argues in his book software craftsmanship that craft is a better metaphor for software development than is engineering or science. Understanding the power of metaphor in software development. Neil links to an essay by jim waldo, software engineering and the. Dec 19, 2015 the agile mindset differs in 2 distinct beliefs from the traditional mindset, both require their own metaphor. Feb 04, 2011 so what metaphors can we find that are relevant for software development. In software development the system metaphor has been adopted as a core practice by the. Mountain climbing involves ascent into open, airy space, followed by descent to ground level. Software development takes time and it cannot be rushed. Magnifying glasses to zoom in folder icons to show containers of documents binoculars to find things web catalogs that turn pages. Like fish in water, software developers often do not perceive the medium that surrounds us.

The good news is that there are people who prefer every option out there. Jun 26, 2017 in the software development field, manufacturing metaphors abound for what we do. Dec 17, 2015 be careful with software metaphors over the years, there have been any number of popular software metaphors that help people radically misunderstand the realities of software development. On the face of it, there are a lot of similarities between the two. In particular, they are useful for describing the basic principles of agile development and the lifecycle of a typical agile project.

The next few sections explore the most essential software metaphors. Feb 06, 2020 the give and take of conversation is core to software development. Metaphors in software development are ubiquitous, as in the computer world in general. This terminology has remained with us in spite of significant shifts in how programs are perceived by both programmers and users.

The metaphor that im considering is one in which the software is an amorphous blob of children in a school system, the software engineers are teachers, the software architect is, perhaps a principal, the project managers are deans or the equivalent, and marketing people are the political school board types that set the curriculum. The most common aspect of this metaphor is that a physical architect is somewhat analogous to a software architect. The primary purpose of metaphor is to assist the understanding of the audience, whether of the written word or in discussion. We can get a clue about the right choices for us by looking at the metaphors we use and by finding ways to improve or create empowering alternatives for the metaphors we use. Use software metaphors to your advantage the curious. The goal of this chapter is to discuss a few common metaphors in order to better understand their application to the software development process. A metaphor, even an imperfect one, works a lot better than when you dont have one at all. There are only one million articles about this, so lets add a new one.

That is to say, a good metaphor for the process of software engineering is. The term refers to a process in which the teams fight for the ball after a minor rule violation. A fundamental aspect of software development is to perfect things, to get rid of the bugs, and that will be our primary focus, because the emphasis in this paper is on software development as a metaphor for character development. Jul 25, 2010 people use metaphors to understand or to explain something better. This can be a way for an organization to test its products in realworld usage. The simplest environment will be, perhaps, a very basic text editor e. People use metaphors to understand or to explain something better. Often in the software business, youll deal with people that dont really know a great deal about software. Mcconnell discusses software metaphors and their importance. As the demand of technology is on a high and day by day lots of improvement is going on the development serve better in a better way to the customers and to make the information technology. Agile software development today mostly means scrum. Equally vivid metaphors describe broader phenomena, and you can use them to improve your understanding of the software development process.

Software development is not yet mature enough to have a set of standard metaphors. The focus group participants split into two groups to brainstorm different metaphors and look at their positive and negative entailments. As steve mcconnell notes in code complete 2, theres no shortage of software development metaphors. Metaphor in software development curbralan limited. Jul 17, 2010 the presentation slides from a talk i gave at xp2010 in trondheim, norway. The perversion of agile metaphors why terms matter innoq. What are good examples of metaphors in software design. Use software metaphors to your advantage the curious programmer.

The idea of system metaphor in extreme programming is quite simple. Especially people who are in the business of software development, but arent experienced in actual software development, often use various metaphors to better grasp what theyre dealing with. For them, it is about creating a story for the product. Modeling is a term used to describe the use of metaphors to improve our understanding.

A software project involves many people with many different responsibilities. And this is not so unlike what we have to do when we solve problems in software development. Here are some metaphors that i find useful when describing software product development. Widespread universal conventional conceptual metaphors develop from common. An architect, together with an engineering company, technical. Software development is such a diverse field that it really requires a range of skills. Metaphors are determined to produce an impression in the memories of users. David gries says writing software is a science 1981.

Executives revert to the triedandnotsotrue method of asking for too much, managers revert to command and control, and the industry apes. Software developers, disillusioned with the promises of agile development notably the scrum framework combined with executives not truly buying in to the change, have decided to become postagile. What is the easiest metaphor to use to explain to a layman. I am so glad you left out the software as construction metaphor and instead focused on the source code as a form of detailed design. What is metaphor to understand what is software metaphor, we must understand the word metaphor. These graphic metaphors describe specific software phenomena. On software development metaphors, programmers and. Many terms common in software development derive from the building metaphor. The view of a software development process described here fits well with the leading metaphors and design metaphors described earlier see chapter 3. You can easily be agile without using scrum, and its definitely possible to do scrum in a way that is not agile. I am a big believer in the power of metaphor and analogy in software development. House building as a metaphor for software development blog.

Plauger and kent beck say its like driving a car, although they draw nearly opposite conclusions plauger 1993, beck 2000. I think that the most tried and true metaphor for software development, at least in. In this paper, we identify the root metaphors underlying current perspectives on human develoment, and present evidence for their role in. The focus group sought to explore the use of specific metaphors in software development as well as the general benefits or liabilities of using metaphor, and the properties of a successful metaphor. However, there are many other spiritual meanings in the work of the software developer. Consequently, it has profusion of complementary and conflicting. The software is like engineering metaphor did more harm than good years ago. Essentially, system metaphor is all about communication. Over the years, there have been any number of popular metaphors that help people radically misunderstand the realities of software development.

Conclusions there was a general consensus in the focus group that metaphors could be. Metaphors in software engineering universiteit twente. They complement each other in that they see the same phenomenon software development of course with very different eyes remember thats where the beauty is. Software development metaphors web developmentupdates web. While these things can certainly be misused, they are also a useful way of viewing a design from different perspectives to gain fresh insight. A longlasting love of programming metaphors dev community. Magnifying glasses to zoom in folder icons to show containers of documents binoculars to find things web catalogs that turn pages like a book trash cans to delete files, as well as where to find deleted files to get them back on. The agile mindset differs in 2 distinct beliefs from the traditional mindset, both require their own metaphor. What is a good analogy to explain how software development. October 18, 2006 james ashley but the greatest thing by far is to have a mastery of metaphor. House building as a metaphor for software development. Metaphors to explain software development matt fisher. The importance of metaphors in programming, philosophy.

365 1426 1 998 115 701 1357 190 492 1409 1220 362 250 1237 1332 1234 257 1542 1086 571 1173 1428 417 1436 354 508 327 739 1298 226 887 1281 946 702 613 451 812