A Day In The Life Of A Developer: A Day In The Life Of A Developer Grady Booch
Chief Scientist
In The Early Days Of Rational: In The Early Days Of Rational
In The Early Days Of Rational: In The Early Days Of Rational We sought to build a software development environment that supported modern software engineering practices
We built our own products
We built our own tools
We built our own hardware
In The Early Days Of Rational: In The Early Days Of Rational The state of the practice of software engineering was subtly yet materially different
Domain
Before the Web
Before most contemporary programming languages
Best practices
Before object-orientation
Tools
Before most team-oriented tools
Culture
Before open source and agile programming
The World Of The Developer Has Changed: The World Of The Developer Has Changed
The World of the Developer Has Changed: The World of the Developer Has Changed
The World Of The Developer Has Changed: The World Of The Developer Has Changed
The World Of The Developer Has Changed : The World Of The Developer Has Changed
The World Of The Developer Has Changed: The World Of The Developer Has Changed
Forces In Software: Forces In Software
The Development Team: The Development Team
The Development Team: The Development Team Team Size 1 2 4 8 16 32 64 128 256
The Development Continuum: The Development Continuum Development is a team sport
Teams typically deliver systems, not just applications
Such systems are rarely self-contained
Services, infrastructures, and platforms serve as the dark matter of the development continuum
Systems represent critical masses in the fabric of the development continuum
The Development Continuum: The Development Continuum
In The Current Days Of Rational: In The Current Days Of Rational Domain
The presence of the Web impacts virtually all development
Programming languages, services, infrastructures, and platforms continue to evolve
Best practices
We better understand what works and what doesn’t
Tools
We better understand how to automate those practices
Culture
Peopleware issues are growing
Culture: Culture All meaningful development is formed by the resonance of activities that beat at different rhythms
The activities of the individual developer
Social dynamics among small sets of developers
Dynamics among teams of teams
What Do Developers Really Do?: What Do Developers Really Do? There exist some soft studies
The Psychology of Computer Programming
Gerry Weinberg
Peopleware: Productive Projects and Teams
Tom DeMarco and Tim Lister
The Peopleware Papers
Larry Constantine
What Do Developers Really Do?: What Do Developers Really Do? There exist a few empirical studies
By The Way, Has Anyone Studied Real Programmers Yet?
Larry Votta
Empirical Studies of Software Engineering: a Roadmap in The Future of Software Engineering (forthcoming)
Dewayne Perry, Adam Porter and Lawrence Votta
Designing the Working Process: What Programmers Do Besides Programming
Jorg Strubing
A Day In The Life
Grady Booch
What Do Developers Really Do?: What Do Developers Really Do? There are secondary sources that infer what developers do
Communication and Design with the Internet: A Guide for Architects, Planners, and Building Professionals
Jonathan Cohen
Collaborative Development Environments (CDEs)
Has Anyone Studied Real Programmers Yet?: Has Anyone Studied Real Programmers Yet? Larry Votta in the Proceedings of the Ninth International Software Process Workshop (ISPW9)
'We should study what [developers] do, and then build productive theories … to explain why they are doing what we observe. Finally, we should refine these theories by demonstrating and confirming our hypotheses through sequences of experiments.'
Designing The Working Process: Designing The Working Process Jorg Strubing in the NATO Advanced Research Workshop for User-Centered Requirements For Software Engineering Environments, 1991
'Being a sociologist, I have found that designing software is a highly cooperative social process.'
5 year investigation
First series of experiments with 10 open-ended interviews and one group discussion
Second series of experiments with 25 interviews with programmers and a couple of expert interviews
What Programmers Do: What Programmers Do Organizing the working steps
Representation of design decisions and ideas
Communication and negotiation
Programming is a task requiring
Very heterogeneous activities and requirements
Management of ambiguity
Significant 'negotiativeness'
A Day In The Life: A Day In The Life Grady Booch, experiment conducted on Tuesday, March 27, 2001 involving 50 developers from around the world
Artifacts generated include
Photo
Pre-day survey
Desktop snapshot
Timesheets
Photos: Photos
Timesheet: Timesheet
Timesheet: Timesheet
Desktop Snapshots: Desktop Snapshots
Analysis: Analysis Gender
81% male, 19% female
Location
Austria, Germany, Canada, United States, India, Australia, New Zealand, Venezuela, Russian Federation
Job title
Software engineer, chief architect, tool smith, analyst, programmer, chief technologist
Experience
9 years average
1 year minimum, 43 years maximum
Coworkers
1,325 average
1 minimum, 17,000 maximum
Analysis: Analysis Domain
GUI for technical users
Posting system for TV advertising
Telecommunication networks
Banking and financial applications
Order processing
Managing fishing quotas
Embedded military
Web portals
'Anything our customer desires'
Analysis: Analysis Platform
46% Unix
41% Windows
7% Linux
5% pure Web
Language
37% Java
35% C/C++
28% other (Perl, Visual Basic, Ada, assembler)
Tools
Most use Visual Studio, Visual Age, or JBuilder (some use several)
10% use open source development tools
Most use Microsoft Office
Analysis: Analysis Analysis
16% average
5% minimum, 40% maximum
Design
14% average
1% minimum, 40% maximum
Coding
16% average
0% minimum, 60% maximum
Testing
10% average
0% minimum, 50% maximum
Analysis: Analysis On the phone
3% average
0% minimum, 20% maximum
Reading
7% average
0% minimum, 31% maximum
Productive meetings
10% average
0% minimum, 30% maximum
Useless meetings
7% average
0% minimum, 15% maximum
A Forthcoming State Change: A Forthcoming State Change The importance of team productivity will supercede the importance of individual programmer productivity
Tools such as Visual Café, JBuilder, and Visual Studio are important in making the individual programmer more productive
Success is defined by the ability to manage the creative, engineering, and production teams
Development as a team sport
Collaborative Development Environments: Collaborative Development Environments Using the Web to change the nature of software development
Web-based
Artifact-centric
Individual tools are invisible
Provides different views to different stakeholders
By The Web: Practice: By The Web: Practice DoD systems
Construction and manufacturing
Open source
By The Web: Foundations: By The Web: Foundations ICSE 98 Workshop on Software Engineering Over the Internet Frank Maurer
Agile Software Engineering Environment Over The Internet Aoyama
The Spearmint Approach To Process Definition And Process Guidance Becker-Kornstaedt, et al
A Proposal Of An Internet-based Software Development Process Model For COTS-Based Systems Development Hirai, et al
An Internet Based Software Process Management Environment Maurer, et al
Using The Internet To Combine And Analyze Distributed Software Engineering Data Tesoriero, et al
A Web-based Synchronous Cooperative Editor For Software Development Yang, et al
A Web-based Document Review System Konno, et al
Providing An Experience Base In A Research Context Via The Internet Feldmann, et al
By The Web: Foundations: By The Web: Foundations ICSE 99 Workshop on Software Engineering Over the Internet Frank Maurer
A Web-based Virtual Room For Small Team Collaboration Penedo
Distributed Software Development With CHIME Dossick
MILOS: A Model Of Interleaved Planning, Scheduling, And Enactment Holz
Approaching Process Support For Virtual Software Corporations Maurer
Implementing An Internet-Enabled Software Experience Factory: Work In Progress Seaman
A Process Web Center Purper
Exploiting The web To Manage Software Development Artifacts: The Labyrinth Project Cattaneo
DISC: A Distributed Web Based Software Configuration Management System Hoang
Integrity, Authentication, Privacy, And Delegation: Security Goals In Automated Software Configuration Management Over The Internet Devanu
Enterprise Software Deployment: It's The Control, Stupid Hall
An Architecture For Supporting 'Pay-per-use' Downloadable Systems Based On Java 2 And JavaSpaces Wong
Web-site Quality Evaluation Method: A Case Study On Museums Olsina
Open-Source Software Development Cubranic
By The Web: Foundations: By The Web: Foundations ICSE 00 Workshop on Software Engineering Over the Internet Frank Maurer
Sophisticated Hypertext Functionalities For Software Engineering Bompani, et al
Internet-based Software Engineering Enables And Requires Event-Based Management Tools Cook
Global Problem Management System - Development Experience And Lessons Gao, et al
Distributed Component Engineering Using A Decentralized, Internet-based Environment Grundy
Virtual Software Inspections Over The Internet Harjumaa, et al
Configuration Management And Open Source Projects van der Hoek
Synchronized Multimedia For Internet-Wide Process-Centered Software Engineering Environments Kaiser, et al
Building A Virtual Marketplace For Software Development Tasks Kotting, et al
A Strategy For The Integration Of Software Process Support Technology Into Organizations Becker-Konrstaedt
Establishment Of A Distributed Software Center Of Excellence Through Intel Ireland Melody
Ontology-based Retrieval Of Software Process Experiences Nour, et al
A Review-Report-Oriented Knowledge-Management System Kudo, et al
By The Web: Foundations: By The Web: Foundations ICSE 01 Workshop on Software Engineering Over the Internet Frank Maurer
Points Of Friction: Points Of Friction Start up
Work product collaboration
Communication
Knowledge and experience
Status
Project memory
Time starvation
Stakeholder cooperation
Stuff that doesn’t work
Creating A Frictionless Surface: Creating A Frictionless Surface Start up
Making the virtual project environment just an URL away
Work product collaboration
Artifact storage with change management, meta-knowledge, and semantically rich tools
Communication
Discussions, virtual meetings, and project dashboard
Time starvation
Virtual agents
Stakeholder cooperation
Process automation
Stuff that doesn’t work
Return On Investment: Return On Investment Economic
Cost of startup
Cost of using/administering
Business
Support for nomadic developers
Support dynamically created teams
Technology
Gives in house and dispersed employees a single point of access that includes all the development tools, techniques, and collaborative functions they need
A Survey Of CDE Sites: A Survey Of CDE Sites Other domains
Asset management
www.componentsource.com
Information services
www.rational.net
Infrastructure
www.webex.com
Netmeeting, Webex
Community
www.groove.com
Software
www.sourcecast.com
Other Domains: Manufacturing: Other Domains: Manufacturing Design Engineering, February 2000 ConceptWorks Pivotal Envision-i OnsSpace E-Vis
Other Domains: Construction: Other Domains: Construction
Asset Management: Asset Management
Information Services: Information Services
Information Services: Information Services
Information Services: Information Services
Information Services: Information Services
Information Services: Information Services
Community: Community Lotus Notes
Created by Ray Ozzie, bought by IBM
Basically an electronic bulletin board
Newsgroups
Adobe groupware
Community: Community
Community: Community
Community: Community
Community: Community
Community: Community Groove features
Visual indicators
Awareness (of users and content)
Text/voice chat within/outside spaces
Message history
File viewers
Microsoft Office integration
File management
Role-based access control
Sketchpad and calendar tools
User reporting
Community: Community Sharepoint
Search engine
Data access and indexing
Subscription
Microsoft Office integration
Version control
Workflow
Document profiling
Dashboard
Microsoft VisualStudio integration
Software: Software
Software: Software
The Focus of a CDE: The Focus of a CDE
Artifact Management: SCM Continuum: File Management Heavy CM Simple Versioning Moderate CM Artifact Management: SCM Continuum No shared components Hierarchies of shared Components Not Parallel Highly Parallel Shared Storage
Software: Software Methodologies and Developer Resources Internet A Preview of Rational Hosted Tools and Services
Daniel Wedge and Rich Hillebrecht
Session#RTL08
Collaborative Development Environment: Collaborative Development Environment Project Workspace 4Project Assignment
4Access Rights 4Team Management 4Collaboration
Collaborative Development Environment: 4Change Management 4Document Management 4Requirements Management Collaborative Development Environment Team Tools Project Workspace
Collaborative Development Environment: Collaborative Development Environment Methodologies and Developer Resources Team Tools Project Workspace Development Resources 4Reusable Assets 4Web-based Training 4Best Practices
Forms Of Collaboration: Forms Of Collaboration Mailing lists are great for
Small groups with a common purpose; conversations that wax and wane over time; communities that are just getting started; newsletters and announcements
Message boards are great for
Asking and answering questions; encouraging in-depth conversations; managing high-volume conversations; providing context, history, and a sense of place
Chat rooms are great for
Holding scheduled events; preparing for – and debriefing after – live events; discussing offline events as they’re happening; hanging out– relaxing, flirting, gossiping, visiting
Whiteboards are great for
Brainstorming, communicating, and discussing
Netmeetings are great for
One on one discussions
Webex meetings are great for
Group presentations and distributed discussions
Virtual Team Management: Virtual Team Management Instant messaging
Virtual meeting room
Application sharing
Centralized document storage management
Searching and indexing
Document check in/out
Co-browsing
Electronic document workflow
Calendaring and scheduling
Online event notification
Project resource profiling
Whiteboards
Online voting and polling Roger Fournier, Infoworld, March 5, 2001
Virtual Team Management: Virtual Team Management Tools, for both connected and disconnected use
Discussion groups
Project dashboards/metrics
Self-publication of content
Collaboration must be in context
Security
Backup
Personalization
Virtual agents for daily hygiene
Meeting automation
One Hundred Small Things: One Hundred Small Things Basic hygiene
Integration with Outlook, Project, Palm
Webification of all artifacts
Rethink the concept of a project and a subproject
Creature comforts
Publish and subscribe mechanism
Picking up crumbs
Workflow assistance
Status assistance
Stages Of Maturity: Stages Of Maturity Stage 0
Simple artifact storage and navigation
Stage 1
Basic mechanisms for collaboration
Stage 2
Advanced mechanisms; basic tools for manipulating artifacts
Stage 3
Advanced tools; creation of virtual presences
Engineering Software: Engineering Software There is a time and a place for coding in the zone
Yet, development is indeed a team sport
Individuals and teams must cope with high degrees of uncertainty, ambiguity, and chaos
While at the same time, demanding creativity, predictability, and repeatability
We can only hope to engineer the illusion of simplicity
Reducing the friction of development frees developers to build great software