2
IBM Research Division 2 BEGIN Computers were designed and built to solve user problems Weaving Ballistics Code making/breaking Tabulating and Sorting data (cards) Programming languages were designed for end users FORTRAN - Scientists and Engineers COBOL - Accountants LISP, ALGOL, APL - Mathematicians To use the new power of computers, you needed to be able to program

3
IBM Research Division 3 The rise of the cult of computing Initially programmers focused on solving their own non- programming problems using computers The business success of computing created a large demand for computers and programmers Large numbers of people were trained to be general-purpose programmers Programming and later Software Engineering became a discipline and community of its own…

4
IBM Research Division 4 And the acolytes of ALGOL began meditating… Isolated from their users in raised floor IT temples and ivy- covered academic monasteries, the navel-gazing began

5
IBM Research Division 5 Computing became an end in itself True Believers took sides and the Wars began The Language War (aka, the 100 years War) 1000s of programming languages (<5% user oriented) Currently in Détente, or at least M.A.D (Mutually Assured Distribution) The Database War Truce declared (mostly) - SQL The Methodology Wars I & II (pre/post Objects) The (Open) Source Wars The Browser War Etc.

6
IBM Research Division 6 WHILE (sweng.navel_gazing) Compelled to learn what they could of computing to solve their own problems, end users continued to adapt computing and programming to suit their own needs Mainframe Multiple Terminal desktops and retyping BASIC and REXX Textual PCs Spreadsheets BASIC dBase GUI PCs HyperCard 4GLs (Access, et.al.) A few drank from the fountain of Computer Science and got hooked, but most gargled their way to relatively primitive but good enough solutions….because….

7
IBM Research Division 7 HERESY! THEY DIDNT REALLY CARE ABOUT COMPUTERS OR PROGRAMMING OR ALL THE MARVELOUS COMPLEXITY! They just wanted the computer to help them with what they really cared about!

8
IBM Research Division 8 #if ICSE_Attendee define End_User_Programmer So what is an End User Programmer? Someone who programs computers for their own use Someone more interested in the running program than the process of making it Someone who doesnt wake up in the morning thinking how cool programming is! Common assumptions about EUPs Baby programmers Everything needs to be predigested Cant handle complexity, abstraction, specification…. Cant be trusted with powerful and dangerous tools Need to be fixed to become REAL Programmers

10
IBM Research Division 10 Grandmothers as Real Programmers? American Flag Socks One adult size fits all - leg and foot length can be adjusted as needed. Materials: One skein each (220-yd) red, white and blue. One set each size 4 and 6 (3.5 and 4 mm) double-pointed needles, or size to obtain correct gauge. Gauge: In Stockinette stitch, 5 sts = 1" Cuff: With larger needles and blue, cast on 52 sts loosely. Divide sts evenly on smaller needles and place a yarn marker at the beginning of round. Work around in k1, k1 rib for 1". Leg: Change to larger needles, then knit around with blue, inc 2 sts in round - 54 sts. Divide sts by putting 18 sts on each needle. Continue knitting every round following Star Chart from round 1 to 24. Next round, knit with red dec 3 sts evenly around-51 sts remain. Knit 3 more rounds red. Next round, knit with white dec 2 sts evenly around-49 sts remain. Work 3 more rounds white. Work for 4 more rounds red, and 4 more rounds white (stripe pattern). Divide sts as follows for heel: place first 12 sts and last 11 sts on one needle for heel, place remaining 26 sts on holder for instep. Heel: Working on these 23 sts only, with red, work as follows: Row 1 (wrong side): Slip first st, purl across. Row 2: Slip first st, knit across. Repeat these 2 rows until you have worked 18 rows. Place marker on this row. Turn heel as follows: With wrong side facing, slip 1, p 13, p 2 tog, p 1, turn work; slip 1, k 6, k2 tog left, k 1, turn; slip 1, p 7, p 2 tog, p 1, turn; slip 1, k 8 sts, k2 tog left, k 1, turn; slip 1, p 9, p 2 tog, p 1, turn. Continue in this manner, working toward sides of heel and having 1 st more between the decreases on each row until 15 sts remain. Gusset and Foot: With right side facing and red, start at the center of the 15 heel sts and knit across last 7 sts from heel, pick up and knit 10 sts on side of heel, work across 26 sts from instep holder, pick up and k 10 sts on side of heel, and work across 8 remaining sts from heel. Place yarn marker at beginning of row - you should have 17 sts on first needle, 26 sts on second needle, and 18 sts on third needle (61 sts total). Knit 1 round red. Decrease Round: Knit with red to within last 3 sts on first needle, k2 tog, k 1; k across sts on second needle; on third needle, k 1, k2 tog left, k to end of row. While keeping stripe pattern as established, repeat these last 2 rounds 5 more times - 49 sts remain. Work even until foot length is 7" to 9" from heel marker, as desired. Place 12 sts on first and third needles, 25 sts on second needle. Toe: Work with next color (either red or white). Round 1: Knit to within 3 sts from end of first needle, k2 tog, k 1; on second needle, k 1, k2 tog left, knit to last 3 sts, k 2 tog, k 1; on third needle, k 1, k2 tog left, knit to end. Round 2: Knit. Repeat these 2 rounds 5 more times, then repeat Round 1 every round until 13 sts remain. Close toe using Kitchener stitch (also known as grafting or weaving - see how-to at left).

11
IBM Research Division 11 End User Progs Compared to Professionals Able to work with formal notations (especially if related to domain of interest) Prefer concrete and tangible to abstract and general Less tolerant when assumptions are violated Not helped by things like simplistic metaphors Not helped by visual programming, at least not visual spaghetti Still need to test, debug, and manage change Could benefit from many of the same sorts of tools as professionals (e.g.,source debuggers, program visualization) but need them in situ, not in a large general purpose tool box NEEDED: End User Software Engineering!

12
IBM Research Division 12 Time.is_now? Why should the ICSE community care more about End User Programmers today than they have in the past? Because the software world is changing in big ways Much of your relevancy depends on it Its the largest opportunity you have to change the future for the better

13
IBM Research Division 13 Megatrends Generational change and expectations The evolution of abstraction and infrastructure Web 2.0 and the real Open Source Movement The Really, Really Long Tail of Software Technology evolution and End User Programming waves The coming massively multicore software (r)evolution

16
IBM Research Division 16 Evolution of Programmers –The BASIC Generation 1980 1985 1990 1995 2000 2005 2010 2020 Household Appliance Prices Death of PC Internet Boom PC Clones $1000 $3000 $6000 $250 Dell Price Wars PC Fully Commoditized C-64 30M Sold Apple II & III Mac II Mac $9000 IBM PC PCXT PCAT Atari 600 Atari Mega ST Atari 1200XL VIC20 Sources: www.old-computers.com, May 2005 Computing Research News 1% 2% 3% 5% 4% % of Freshmen selecting CS Major at UCLA BASIC Generation HTML/JS Generation LAMP/PHP Generation PCs drove the first wave of CS Majors in the 80s, the Internet boom drove the wave in the 90s. But at the same time, more than 10 times as many people began programming for themselves as end users. Implication, the drop in CS Majors will persist as programming becomes a more common skill among the masses as the power of systems and the simplicity of tools and languages increases. My first class in computer programming was an elective course in BASIC back in sixth grade.

20
IBM Research Division 20 Megatrends Generational change and expectations The evolution of abstraction and infrastructure Web 2.0 and the real Open Source Movement The Really, Really Long Tail of Software Technology evolution and End User Programming waves The coming massively multicore software (r)evolution

21
IBM Research Division 21 A little perspective: In the Beginning… Service Requestor Service Broker Service Provider Find Bind Publish Bind Find Adams/Graham, November 1998 Steve: So does that mean we have, service oriented programming? Sam: Nope, Thats an architecture, a service oriented architecture

24
IBM Research Division 24 Megatrends Generational change and expectations The evolution of abstraction and infrastructure Web 2.0 and the real Open Source Movement The Really, Really Long Tail of Software Technology evolution and End User Programming waves The coming massively multicore software (r)evolution

25
IBM Research Division 25 Web 2.0 Is less about systems and more about people Less about pages/documents and more about fragments Less about apps and more about services Less about portals and more about feeds Less about windows and more about widgets And is fundamentally about end user creation of content and function

27
IBM Research Division 27 World Wide Widgets The emerging post-windows, post-browser interface metaphor Limited widget size and few function points support end user assembly Requires micro mindset (microcontexts, microtemplates, microformats) 512 342 Icon/Folder metaphor worked well for early low-rez displays 1900 1200 Icons become useless unreadable clutter on modern hi-rez displays Early applications assumed they owned the entire display Until recently, users routinely maximized their current application to use the full screen With the advent of 2 megapixel displays, users no longer routinely maximize apps Extra screen area is now used for persistent mini-apps, a.k.a., desktop widgets Major Players

28
IBM Research Division 28 World Wide Widgets A truly cross device graphical interface metaphor A typical widget is just the right size for a cell phone display and simple for a kiosk or touchscreen

29
IBM Research Division 29 SW Eng issues for the widget world Issues How can users develop their own? How to manage groups of widgets? How to share them collaboratively? How to mashup desktop widgets? How to update them? Feeds? What about standards? Interroperability? Single sign-on? Security? Portal infrastructure requirements dont go away

30
IBM Research Division 30 The real Open Source Movement The real Open Source Movement did not begin with Stallman and Raymond Its started in the large with End Users sharing BASIC and Spreadsheets What is the most powerful invention for Open Source (and End User Programming) in the past decade?

31
IBM Research Division 31 Megatrends Generational change and expectations The evolution of abstraction and infrastructure Web 2.0 and the real Open Source Movement The Really, Really Long Tail of Software Technology evolution and End User Programming waves The coming massively multicore software (r)evolution

32
IBM Research Division 32 Understanding the Long Tail of Software Development Source: http://salesforce.breezecentral.com/longtail/

33
IBM Research Division 33 The Three Forces of the Long Tail Source: http://salesforce.breezecentral.com/longtail/

34
IBM Research Division 34 Applying these forces to software development Source: http://salesforce.breezecentral.com/longtail/

35
IBM Research Division 35 And you get the Long Tail of Software But, this model still assumes some level of professional dev skill Source: http://salesforce.breezecentral.com/longtail/

36
IBM Research Division 36 Inverting the marketplace for software Past Dozens of markets (software product categories) of millions (users) Mass market offerings, boxed $oftware, bricks-n-mortar stores, PC preloads 10s to 1000s of professional developers per product Present Millions of markets of dozens – Joe Kraus, CEO JotSpot, now Google Current Web model, niche offerings, downloaded, $oftware as $ervice 1s to 100s of professional developers, some end user customization Future Billions of markets of 1 Large applications/suites dissolve into dashboards of widgets, extreme customization and personalization No professional developers required, assembled from widgets by users for personal use

38
IBM Research Division 38 Megatrends Generational change and expectations The evolution of abstraction and infrastructure Web 2.0 and the real Open Source Movement The Really, Really Long Tail of Software Technology evolution and End User Programming waves The coming massively multicore software (r)evolution

39
IBM Research Division 39 Megatrends Generational change and expectations The evolution of abstraction and infrastructure Web 2.0 and the real Open Source Movement The Really, Really Long Tail of Software Technology evolution and End User Programming waves The coming massively multicore software (r)evolution

40
IBM Research Division 40 DO What can the Software Engineering community do to help?

41
IBM Research Division 41 Implicit Software Engineering for EUP Unburden the End User Programmer In fact, PLEASE unburden the Professional Programmer! We dont all have to think like CPUs At ICSE 2028, do we really still want to be struggling with loop index and other of by one errors? A huge proportion of professional programming errors are still boundary issues partially arising from primitive numeric types Can we get integers (ala Pythagoras) right this time?

43
IBM Research Division 43 Include More programmers means more women programmers Fascinating work on gender differences in programming OLPC is a good step How about empowering them all to be end user programmers?

44
IBM Research Division 44 HERESY! WASTE something to benefit End User Programmers Alan Kays vision of Personal Computing assumed 1M cycles per second 1M bytes of RAM 1M pixels Remember WIMP attitude? What happens in a single processor is beginning to matter about as much as what happens in a single biological cell. Multicellular Computing, evolutionofcomputing.org What will you waste to empower future end users? A terraflop? 1M cores?