Martin Fowler’s Design Stamina Speculation expresses a broadly held perception amongst working towards software program engineers and different technical professionals that can also be taught in pc science curricula. Mainly, the concept is that “good software program design,” a vaguely outlined idea, pretty rapidly pays for itself via quicker, higher, cheaper software program growth in the long term.
Martin Fowler, Chief Scientist for ThoughtWorks and a famous author on agile software program growth, software program design and refactoring, encapsulates this idea on this “pseudo-graph”:
The exceptional factor about this graph is that it’s primarily based on no knowledge as Martin Fowler candidly admits in his weblog put up and displays (see for instance the third mini-talk, about 45:00, in Software program Growth within the twenty first Century by Martin Fowler). Sure, that’s proper: no knowledge. 🙂 It’s a speculation, a conjecture, however one held by Martin Fowler and strongly, even fanatically held by many software program engineers and different technical professionals.
It’s exhausting to outline the phrases within the design stamina speculation. Specifically, what’s “good design?” This typically refers to a stupendous, modular system of software program that’s allegedly “scalable and maintainable”. Additionally the modules are allegedly reusable. I’ve definitely had the expertise of making an attempt to work with modular software program that was neither scalable nor maintainable nor reusable and but appeared to observe the widespread tenets of “good design.”
The speculation additionally units up a straw man. True “no design” is definitely fairly uncommon in skilled software program growth. Relatively the true debates are between “good design” (my design) and “much less good design” (your design, also referred to as [email protected]#$%). Or between “extra time spent on design” (product ship date is one yr away) and “much less time spent on design” (product ship date is 2 weeks away).
Precise Knowledge
Martin Fowler begs off on producing precise knowledge to again up his pseudo-graph. In extremely technical, extremely mathematical areas of software program growth, it’s typically attainable to outline goal efficiency metrics that correspond carefully to the enterprise worth of the services or products.
In speech recognition a superb goal efficiency metric is the phrase recognition accuracy of the speech recognition engine; a speech recognition engine that acknowledges ninety-five % of spoken phrases is healthier than one which acknowledges ninety %.
In video compression, one of many key goal efficiency metrics is the compression ratio which is just the scale of the video earlier than it’s compressed divided by the scale of the video after it’s compressed. This interprets straight into decrease storage prices, extra channels of video for a cable system or YouTube, and so forth. It’s not exhausting to narrate it on to the greenback enterprise worth that monetary analysts (bean-counters) care about.
Here’s a graph of the compression ratio, the efficiency, of the perfect video compression applied sciences on the planet versus time:
Video compression improved little or no between 1995 and 2003. This was truly a interval of wide-open competitors in video codecs (codec stands for encoder/decoder or compressor/decompressor) as a result of Microsoft, regardless of its fame, supplied an open structure via Video for Home windows and MCI (Media Management Interface) that enabled third celebration builders to quickly combine any video or audio compression algorithm into the then common Home windows working system. In actual fact, a whole bunch of video codecs proliferated throughout this era. However the bit charge for minimal usable video remained caught at about 1 Megabit per second.
Instantly, video compression leaped ahead throughout 2003, in only a matter of months. The brand new advances had been rapidly copied by many video codecs. The bit charge for minimal usable video dropped from one megabit per second to round 275 kilobits per second — decrease for some “speaking heads” video that’s simpler to compress.
This dramatic technical advance stays largely unnoticed by most people! It the truth is enabled YouTube, Skype, and the proliferation of video on the Web since 2003.
Then, the compression ratio went flat once more. In actual fact, there was negligible progress till 2008. The early “excessive efficiency” video codecs equivalent to H.264/AVC (Superior Video Coding) had some issues correctly reproducing pores and skin tone, which is noticeable since folks usually take a look at faces. In my graph, I exploit a distinct coloration from 2008 onwards to indicate the advance in pores and skin tone and perceived high quality though the compression ratio didn’t change considerably.
What does this inform us concerning the design stamina speculation? Had been the video codecs the product of “no design” from 1995 (truly earlier) to 2003? Did they abruptly change over to “good software program design” for just a few transient months in 2003? Then the crazed cowboy coders took over once more in 2004, inflicting “no design” till a quick shining second in 2008 when the agile software program designers took over once more earlier than being ousted in a violent coup by the cowboy coders?
Clearly, the precise efficiency curves bear little resemblance to the attractive “good design” and “no design” curves within the design stamina speculation pseudo-graph. In actual fact, they resemble the well-known “know-how S-curve” postulated by college students of the historical past of know-how, invention and discovery.
The essential concept behind the Know-how S Curve is that applied sciences are inclined to undergo a interval of sluggish growth throughout their early levels, a interval of speedy growth when the brand new know-how will get previous the proof of idea stage, after which decelerate and infrequently plateau when technical limits, typically from elementary physics or arithmetic are encountered.
In aviation, propeller planes ultimately topped out in pace. Jets had been wanted to go quicker, break the sound barrier. Chemical rockets are quicker however prime out at a number of miles per second as a result of constraints of the rocket equation and identified supplies. In principal, nuclear rockets may go quicker. Fusion propulsion even quicker. Antimatter rockets may be capable of attain close to the pace of sunshine and journey to the closest stars.
NOTE: Above graph added to put up on July 18, 2014 — after first publication. The information is the flight airspeed report knowledge from Wikipedia (accessed on July 18, 2014). See the appendix for the GNU Octave Code and cleaned knowledge from the Wikipedia web page used to generate the graph. The sharp climb within the 1950’s is as a result of introduction of jet engines. Observe additionally that the highest pace of propeller planes is roughly linear with yr — not an idealized S-curve. The ultimate prime pace report is for the SR-71 Blackbird spy airplane — nonetheless formally the highest report pace for a jet plane.
Every know-how plateaus sooner or later and one thing new, generally a brand new part, generally a radical new structure is required. This offers rise to the know-how S curve in lots of instances — not in all.
Closely mathematical algorithms and software program, like video compression, typically appear to behave like this. Progress happens in matches and begins, intervals of no progress and sudden jumps, occasional intervals of regular incremental progress. It typically doesn’t resemble the curves within the design stamina speculation pseudo-graph.
Leprechauns within the Measurement Free Zone
Software program engineering and software program design is a remarkably evidence-free area. One researcher has described it as “The Measurement Free Zone.” That is all of the extra exceptional given the excessive intelligence and technical backgrounds of the software program design theorists and practitioners.
A couple of years in the past Agile software program growth fanatic Laurent Bossavit wrote a web based guide The Leprechauns of Software program Engineering: How folklore turns into truth and what to do about it detailing his analysis into the idea for a lot of widespread, closely cited beliefs in software program engineering, beliefs which he had held. He has additionally written an article on his expertise for Mannequin View Tradition web page: The Making of Myths. The beliefs typically grow to be primarily based on very restricted proof, open to various interpretation, and even pseudo-graphs like Fowler’s Design Stamina Speculation that illustrate not knowledge however merely a private perception, maybe primarily based on some undocumented private expertise.
Undocumented private expertise is also referred to as “anecdotal proof” and anathema, with some justification, within the mainstream scientific {and professional} engineering literature. I don’t completely agree with this mainstream taboo, however one ought to definitely be cautious with “anecdotal proof.”
After I investigated the epidemic of autism in the USA (see The Arithmetic of Autism), I discovered many accounts by mother and father of autism or not less than behavioral issues identified as autism occurring at the side of vaccinations. These are sometimes very particular. My child obtained the MMR (Measles-Mumps-Rubella) vaccine at about 18 months, had a response to the vaccine, after which stopped talking and commenced to exhibit odd conduct resulting in a prognosis of autism. These are direct, particular private expertise and plenty of mother and father are fairly sure that the vaccines in some way induced the autism.
The “you learn Andrew Wakefield’s articles and are simply imagining it after the very fact” explanations by the CDC and medical-scientific institution, adamantly and financially dedicated to vaccines, aren’t significantly convincing or credible. However is it true? Do vaccines trigger autism or is there another rationalization for these experiences?
Within the know-how S-curve, in the event you occur to be concerned in a mission in the course of the center rapid-progress interval, it would look precisely like Martin Fowler’s “good design” curve. However, if you’re concerned later within the mission, beginning close to or after the top of the speedy progress interval, it would look precisely just like the “no design” curve.
Typically as applied sciences attain the plateau, they turn out to be very difficult. This complexity nonetheless buys very small or no enhancements in efficiency. The know-how is just reaching its limits and it takes an terrible lot to squeeze somewhat extra out of it. At this level, a know-how that’s changing into difficult on this means could genuinely resembles “no design,” spaghetti code, inexplicably difficult to a newcomer.
In actual fact, a excessive efficiency video codec just like the free open-source x264 is extraordinarily complicated.
Joel Spolsky wrote a widely-read, broadly ignored weblog put up Issues You Ought to By no means Do concerning the weird and infrequently disastrous tendency of software program engineers to attempt to rewrite delivery, profitable software program — from scratch in lots of instances. Software program advertising and marketing skilled Merrill R. (Rick) Chapman describes a number of instances of this at firms he labored for within the 1980’s in his guide In Search of Stupidity: Over Twenty Years of Excessive Tech Advertising Disasters. Not sometimes the try to rewrite the “unhealthy code” takes a particularly very long time or fails outright, by which period a competitor has overtaken the corporate with new options in a competing product that was not rewritten or refactored in fashionable parlance.
In most of those instances, the rewriters or refactorers encounter a particularly complicated complicated code base presumably written by extremely paid skilled software program builders who’ve both cashed of their inventory choices and at the moment are taking part in golf in Maui or have been downsized with out reward by their heartless employer in favor of youthful, presumably smarter builders educated within the newest software program design methodology. 🙂 The plain conclusion is that the working software program was constructed with “no design.” Might Martin Fowler and the Design Stamina Speculation be unsuitable?
A Name for Knowledge
The Design Stamina Speculation is admittedly not primarily based on knowledge. It’s a speculation, a conjecture. Martin Fowler clearly admits this — to his credit score. Martin Fowler didn’t actually invent this idea. I’ve heard some variant of it for over twenty years (the weblog put up is dated 2007) particularly from advocates of varied software program design methodologies (structured design within the 1980’s, object-oriented design within the 1990’s, Agile and Lean and XP and so forth within the 00’s).
The place is the info?
It’s attainable to assemble goal efficiency metrics just like the compression ratio that correspond carefully to enterprise worth, definitely in extremely technical, mathematical software program like video compression or speech recognition.
There are in all probability comparable goal efficiency metrics in enterprise software program. For instance, the variety of transactions per second {that a} enterprise software program system — payroll, order entry, and so forth. — can course of. These may be plotted towards effort and time. One can definitely measure roughly the period of time spent on design versus coding, testing, or different actions. Does the info truly present the curves within the Design Stamina Speculation, know-how S-curves, one thing else, or numerous confusion?
The advantages of such evidence-based resolution making could effectively embody avoiding making the costly and infrequently deadly mistake of trying to rewrite or refactor a particularly complicated product or system that’s extraordinarily complicated for good causes such because the plateau on the finish of the know-how S-curve.
© 2014 John F. McGowan
In regards to the Creator
John F. McGowan, Ph.D. solves issues utilizing arithmetic and mathematical software program, together with creating video compression and speech recognition applied sciences. He has in depth expertise creating software program in C, C++, Visible Fundamental, Mathematica, MATLAB, and plenty of different programming languages. He’s in all probability finest identified for his AVI Overview, an Web FAQ (Regularly Requested Questions) on the Microsoft AVI (Audio Video Interleave) file format. He has labored as a contractor at NASA Ames Analysis Middle concerned within the analysis and growth of picture and video processing algorithms and know-how. He has revealed articles on the origin and evolution of life, the exploration of Mars (anticipating the invention of methane on Mars), and low-cost entry to area. He has a Ph.D. in physics from the College of Illinois at Urbana-Champaign and a B.S. in physics from the California Institute of Know-how (Caltech). He may be reached at [email protected]rthlink.internet.
Appendix: Octave Code for Figures
% % (C) 2014 by John F. McGowan, Ph.D. % % tough plot of enhancements in video compression efficiency over time % % examine to: https://martinfowler.com/bliki/DesignStaminaHypothesis.html % % -- https://martinfowler.com/bliki/photos/designStaminaGraph.gif % plateau's or close to plateaus in video compression efficiency % period1 = 1995:2002; % THE MPEG ERA period2 = 2003:2007; % THE BREAKTHROUGH IN 2003 (H.264 and so forth.) period3 = 2008:2014; % ADVANCES IN REPRODUCING SKIN TONES 2008/2009 frame_rate = 30; % frames per second (NTSC is technically 29.97 frames/second) bits_per_byte = 8; color_channels_per_pixel = 3; % often YCrCb (Y is black/white sign, Cr and Cb carry coloration) width = 720; peak = 480; uncompressed_rate = width*peak*color_channels_per_pixel*bits_per_byte*frame_rate; mpeg1_rate = 1000000; % one megabit per second h264_rate = 275000; % 275 kilobits per second (additionally Ogg Theora, Home windows Media, Silverlight) % perceived high quality is near outdated analog NTSC tv % underneath glorious broadcast situations (decrease than DVD or BluRay playback) % DVD is MPEG-2 with bit charge of 4-8 Megabits per second (identical core know-how as MPEG-1) % % compute compression ratio for intervals cr1 = (uncompressed_rate / mpeg1_rate)*ones(dimension(period1)); cr2 = (uncompressed_rate / h264_rate)*ones(dimension(period2)); cr3 = (uncompressed_rate / h264_rate)*ones(dimension(period3)); % plot compression ratio over time % determine(1); plot(period1, cr1, "1", "linewidth", 3, period2, cr2, "2", "linewidth", 3, period3, cr3, "3", "linewidth", 3); title('VIDEO COMPRESSION PERFORMANCE'); xlabel('YEAR'); ylabel('COMPRESSION RATIO'); legend('MPEG-1 ERA', 'H.264 ERA', 'BETTER SKIN TONE', 'location', 'southeast'); % make plot for know-how S-CURVE % determine(2); x = -1.0:0.02:1.0; y = 1.0 ./ (1.0 + exp(-1.0*10.0*x)); plot(x,y, "linewidth", 3); title('TECHNOLOGY S-CURVE'); xlabel('TIME'); ylabel('PERFORMANCE'); % THE END
airspeed_scurve.m
% % make plot for max airspeed know-how S-curve % % knowledge from Wikipedia % https://en.wikipedia.org/wiki/Flight_airspeed_record % % knowledge = dlmread('airspeed_cleaned.txt', 't'); yr = knowledge(3:finish, 1); % date/yr mph = knowledge(3:finish, 3); % miles per hour of report kph = knowledge(3:finish, 4); % kilometers per hour of report plot(yr, mph); xlabel('YEAR'); ylabel('MILES/HOUR'); title('FLIGHT AIRSPEED RECORD');
airspeed_cleaned.txt
Date Pilot Airspeed Plane Location Notes mph km/h 1903 Wilbur Wright 6.82 10.98 Wright Flyer Kitty Hawk, North Carolina, USA 1905 Wilbur Wright 37.85 60.23 Wright Flyer III 1906 Alberto Santos-Dumont 25.65 41.292 Santos-Dumont 14-bis Bagatelle Fort, Paris, France First formally acknowledged airspeed report. [2] [3] 1907 Henry Farman 32.73 52.700 Voisin-Farman I Issy-les-Moulineaux, France [2] [4] 1909 Paul Tissandier 34.04 54.810 Wright Mannequin A Pau, France [2] [5] 1909 Glenn Curtiss 43.367 69.821 Curtiss No. 2 Reims, France 1909 Gordon Bennett Cup. [2] [6] 1909 Louis Blériot 46.160 74.318 Blériot XI Reims, France [2] [7] 1909 Louis Blériot 47.823 76.995 Blériot XI Reims, France [2] [7] 1910 Hubert Latham 48.186 77.579 Antoinette VII Good, France [2] [8] 1910 Léon Morane 66.154 106.508 Blériot Reims, France [2] [7] 1910 Alfred Leblanc 68.171 109.756 Blériot XI New York, New York, USA [2] [7] 1911 Alfred Leblanc 69.442 111.801 Blériot Blériot Pau, France [2] [9] 1911 Édouard Nieuport 73.385 119.760 Nieuport IIN Châlons, France [2] [10] 1911 Alfred Leblanc 77.640 125.000 Blériot [2] 1911 Édouard Nieuport 80.781 130.057 Nieuport IIN Châlons, France [2] [10] 1911 Édouard Nieuport 82.693 133.136 Nieuport IIN Châlons, France [2] [10] 1912 Jules Védrines 87.68 145.161 Deperdussin Monocoque (1912) Pau, France [2] [11] 1912 Jules Védrines 100.18 161.290 Deperdussin monoplane Pau, France [2] [11] 1912 Jules Védrines 100.90 162.454 Deperdussin Monocoque Pau, France [2] [11] 1912 Jules Védrines 103.62 166.821 Deperdussin Monocoque Pau, France [2] [11] 1912 Jules Védrines 104.29 167.910 Deperdussin Monocoque Pau, France [2] [11] 1912 Jules Védrines 106.07 170.777 Deperdussin Monocoque Reims, France [2] [11] 1912 Jules Védrines 108.14 174.100 Deperdussin Monocoque (1912) Chicago, Illinois, USA [2] [11] 1913 Maurice Prévost 111.69 179.820 Deperdussin Monocoque (1913) Reims, France [2] [12] 1913 Maurice Prévost 119.19 191.897 Deperdussin Monocoque (1913) Reims, France [2] [12] 1913 Maurice Prévost 126.61 203.850 Deperdussin Monocoque (1913) Reims, France [2] [12] 1914 Norman Spratt 134.5 216.5 Royal Plane Manufacturing facility S.E.4 Unofficial 1918 Roland Rohlfs 163 262.3 Curtiss Wasp Not formally recognised.[13] 1919 Joseph Sadi-Lecointe 191.1 307.5 Nieuport-Delage NiD 29V Not formally recognised. 1920 Joseph Sadi-Lecointe 171.0 275.264 Nieuport-Delage NiD 29V Villacoublay, France. [14] First official report put up World Warfare 1. [2] [15] 1920 Jean Casale 176.1 283.464 Spad-Herbemont 20 bis Villacoublay, France [2] [16] [17] 1920 Bernard de Romanet 181.8 292.682 Spad-Herbemont 20 bis Buc, France [2] [18] [17] 1920 Joseph Sadi-Lecointe 184.3 296.694 Nieuport-Delage NiD 29V Buc, France [2] [15] 1920 Joseph Sadi-Lecointe 187.9 302.529 Nieuport-Delage NiD 29V Villacoublay, France [2] [15] 1920 Bernard de Romanet 191.9 309.012 SPAD S.XX Buc, France [2][19] 1920 Joseph Sadi-Lecointe 194.4 313.043 Nieuport-Delage NiD 29V Villacoublay, France [2] [15] 1921 Joseph Sadi-Lecointe 205.2 330.275 Nieuport-Delage Sesquiplane Ville Sauvage, France [20] [21] 1922 Billy Mitchell 222.88 358.836 Curtiss R Detroit, Michigan, USA [2] [22] 1922 Billy Mitchell 224.28 360.93 Curtiss R-6 Selfridge Area, Detroit, Michigan, USA [23] [24] [25] 1923 Joseph Sadi-Lecointe 232.91 375.00 Nieuport-Delage Istres [22] 1923 1st Lt. Russell L. Maughan 236.587 380.74 Curtiss R-6 Wright Area, Dayton, Ohio, USA [26] [27] [25] 1923 Lt. Harold J. Forehead 259.16 417.07 Curtiss R2C-1 Mineola, New York, USA [28] [29] 1923 Lt. Alford J. Williams 266.59 429.02 Curtiss R2C-1 Mineola, New York, USA [28][30] [29] 1924 Florentin Bonnet 278.37 448.171 Bernard-Ferbois V.2 [2] 1927 Mario de Bernardi 297.70 479.290 Macchi M.52 seaplane Venice Database ID 11828 [1][2] 1928 Mario de Bernardi 318.620 512.776 Macchi M.52bis seaplane Venice Database ID 11827 [1][31] 1929 Giuseppe Motta 362.0 582.6 Macchi M.67 seaplane Unofficial 1929 George H. Stainforth 336.3 541.4 Gloster VI seaplane Calshot Database ID 11829[1][32] 1929 Augustus Orlebar 357.7 575.5 Supermarine S.6 seaplane Calshot Database ID 11830 [1][33] 1931 George H. Stainforth 407.5 655.8 Supermarine S.6B seaplane Lee-on-the-Solent Database ID 11831 [1][34] 1933 Francesco Agello 423.6 682.078 Macchi M.C.72 seaplane Desenzano del Garda Database ID 11836 [1][2] 1934 Francesco Agello 440.5 709.209 Macchi M.C.72 seaplane Desenzano del Garda Database ID 4497 [1][2] 1935 Howard Hughes 352 566 Hughes H-1 Racer landplane Not an Official FAI report 1939 Fritz Wendel 469.220 755.138 Me 209 V1 Augsburg Piston-engined report till 1969[35] 1941 Heini Dittmar 623.65 1003.67 Messerschmitt Me 163A V4 Peenemünde Rocket powered – Not an Official FAI report however over the three km FAI distance[36] [37][38] 1944 Heinz Herlitzius 624 1004 Messerschmitt Me 262 S2 Leipheim Not an Official FAI report [39] 1944 Heini Dittmar 702 1130 Messerschmitt Me 163B V18 Lagerlechfeld Rocket powered – Not an Official FAI report [39] 1945 H. J. Wilson 606.4 975.9 Gloster Meteor F Mk 4 Herne Bay, UK EE455 Britannia, a Mk 3 transformed on manufacturing line to a long-span Mk 4.[41] 1946 Edward Mortlock Donaldson 615.78 990.79 Gloster Meteor F Mk 4 Littlehampton, UK EE530, a long-span Mk 4.[41] 1947 Col. Albert Boyd 623.74 1003.60 Lockheed P-80R Taking pictures Star Muroc, California, US [42] 1947 Cmdr. Turner Caldwell 640.663 1031.049 Douglas Skystreak Muroc, California, US [43] 1947 Main Marion Eugene Carl USMC 650.796 1047.356 Douglas Skystreak Muroc, California, US [43] 1947 Chuck Yeager 670.0 1078 Bell X-1 Muroc, California, US Rocket powered – Not an official FAI C-1 report 1948 Maj. Richard L. Johnson, USAF 670.84 1079.6 North American F-86A-3 Sabre Cleveland, US [2] [44] 1952 J. Slade Nash 698.505 1124.13 North American F-86D Sabre Salton Sea, US [45] 1953 William Barnes 715.745 1151.88 North American F-86D Sabre Salton Sea, US [46] 1953 Neville Duke 727.6 1171 Hawker Hunter Mk.3 Littlehampton, UK [47] 1953 Mike Lithgow 735.7 1184 Supermarine Swift F4 Castel Idris, Tripoli, Libya [48] 1953 James B. Verdin, US Navy 752.9 1211.5 Douglas F4D Skyray Salton Sea, US [49] 1953 Frank Okay. Everest USAF 755.1 1215.3 North American F-100 Tremendous Sabre Salton Sea, US 1955 Horace A. Hanes 822.1 1323 North American F-100C Tremendous Sabre Palmdale, US 1956 Peter Twiss 1132 1822 Fairey Delta 2 Chichester, UK [50] 1957 USAF 1207.6 1943.5 McDonnell F-101A Voodoo Edwards Air Pressure Base, US [51] 1958 Cap. WW Irwin, USAF 1404 2259.5 Lockheed YF-104A Starfighter Edwards Air Pressure Base, US [52] 1959 Col. Georgii Mosolov 1484 2388 Ye-66 (Mikoyan-Gurevich MiG-21) USSR [53] 1959 Maj. Joseph Rogers, USAF 1525.9 2455.7 Convair F-106 Delta Dart Edwards Air Pressure Base, US 1961 Robert G. Robinson, US Navy 1606.3 2585.1 McDonnell-Douglas F4H-1F Phantom II Edwards Air Pressure Base, US [54] [55] 1962 Lt. Col. Georgii Mosolov 1665.9 2681 Mikoyan Gurevich Ye-166 – title adopted for the report try, initially a model of a Ye-152 USSR [35] [56] a.okay.a. E-166.[57] 1965 Robert L. Stephens and Daniel Andre 2070.1 3331.5 Lockheed YF-12A Edwards AFB, US [58] 1976 Capt. Eldon W. Joersz and Maj. George T. Morgan 2193.2 3529.6 Lockheed SR-71 Blackbird #61-7958 Beale AFB, US [59]