The Joel Test 12 Steps to Better Code. Readings The Joel Test (by Joel Spolsky) 043.html.

Slides:



Advertisements
Similar presentations
Agile Software Distribution
Advertisements

Software Testing How has agile changed the game? Karen Greaves.
Test process essentials Riitta Viitamäki,
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Test Case Management and Results Tracking System October 2008 D E L I V E R I N G Q U A L I T Y (Short Version)
Trnsport Test Suite Project Tony Compton, Texas DOT Charles Engelke, Info Tech.
HP Quality Center Overview.
SSA 2013 Software Development Lifecycle (and how to make the best of it) Mono d.o.o.
The Joel Test: 12 Steps to Better Code By Tim Denton.
Software Delivery. Software Delivery Management  Managing Requirements and Changes  Managing Resources  Managing Configuration  Managing Defects 
Validata Release Coordinator Accelerated application delivery through automated end-to-end release management.
Concepts of Version Control A Technology-Independent View.
Chapter 15 Design, Coding, and Testing. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Design Document The next step in the Software.
VisIt Software Engineering Infrastructure and Release Process LLNL-PRES Lawrence Livermore National Laboratory, P. O. Box 808, Livermore,
15 Jul 2005CSE403, Summer'05, Lecture 10 Lecture 10: Incremental Releases Valentin Razmov.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
1 The Joel Test Q1 Do you use source control? –Use it for your CS682-3 project. –Submit all of your CS680 programming assignments to a Subversion repository.
12-February-2003cse Construction © 2003 University of Washington1 Construction CSE 403, Winter 2003 Software Engineering
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
High Level: Generic Test Process (from chapter 6 of your text and earlier lesson) Test Planning & Preparation Test Execution Goals met? Analysis & Follow-up.
 What is Software Testing  Terminologies used in Software testing  Types of Testing  What is Manual Testing  Types of Manual Testing  Process that.
PopMedNet Software Development Life Cycle Chayim Herzig-Marx Harvard Pilgrim Health Care Institute Daniel Dee Lincoln Peak Partners.
Overview of JSP Technology. The need of JSP With servlets, it is easy to – Read form data – Read HTTP request headers – Set HTTP status codes and response.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
Estimation Wrap-up CSE 403, Spring 2008, Alverson Spolsky.
SmartLog X 3 TEAM Basic SmartLog X 3 TEAM Basic DescoEMIT.com USER STATUS USER EDIT TEST LOG ADMIN TEST MACHINE SCHEDULE INSTALL System Requirements:
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
1 Design and Integration: Part 1 Nuggets about Design vs Project Management.
© 2012 IBM Corporation Rational Insight | Back to Basis Series SCM introduction Chu Shu June 2012.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Pragmatic Projects Prepared by Doug Glidden. Pragmatic Projects Pragmatic Teams Ubiquitous Automation Ruthless Testing It’s All Writing Great Expectations.
Software Testing Life Cycle
Software Project Planning CS470. What is Planning? Phases of a project can be mostly predicted Planning is the process of estimating the time and resources.
Incell Phonium Processor Project Plan Document Dale Mansholt Aaron Drake Jon Scruggs Travis Svehla.
1 ©equinox limited 2005 What the hell is Configuration Management anyway? Martin White Equinox Software Architects August 2005.
1 Copyright ©2004 TAC. 2 T-WorMS Adding Sanity to Your Process Jamie L. Mitchell CTO TAC.
1 Lecture 19 Configuration Management Software Engineering.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
Software Development Software Testing. Testing Definitions There are many tests going under various names. The following is a general list to get a feel.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
Rational Unified Process Mr Hisham AlKhawar. Iterative versus Waterfall  We need to use a life cycle model in order to approach developing a system easily,
What is Testing? Testing is the process of exercising or evaluating a system or system component by manual or automated means to verify that it satisfies.
Has Agent Scripting Got You FRUSTRATED?. Agent Scripting Simplified!
Chair of Software Engineering Exercise Session 6: V & V Software Engineering Prof. Dr. Bertrand Meyer March–June 2007.
Reduce Development and Testing Time on Embedded Space Programs With Auto- Generated Code Software Engineer Northrop Grumman Electronic Systems Matthew.
1 MSTE Visual SourceSafe For more information, see:
UHCS 2005, slide 1 About Continuous Integration. UHCS 2005, slide 2 Why do you write Unit Test ? Improve quality/robustness of your code Quick feedback.
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
Week 7-10 MondayTuesdayWednesdayThursdayFriday Joel test & interviewing No reading GroupsReviewsSectionProgress report due Readings out Reading dueGroups.
Software Testing Process
Biological Model Engineering Peter Saffrey, Department of Medicine Cakes Talk Monday, October 20, 2008.
Integrating the Code during the Development Alexander Vakrilov Telerik Corporation
Connect with life Tejasvi Kumar Developer Technology Specialist | Microsoft India
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
1 Punishment Through Continuous Delivery If it hurts, do it more often…
OPeNDAP Development and Security Policies. Development Policies All of our software uses LGPL or GPL –LGPL is used by most of the code –We want it to.
Guanyu Chu, Scott Clifford, Kansu Dincer, Andy Hou, Kenneth Kuan, Sarah Tachibana, Chris Schlechty.
Continuous Delivery and Quality Monitoring 1 iCSC2016, Kamil Henryk Król, CERN Continuous Delivery and Quality Monitoring Kamil Henryk Król CERN Inverted.
Development Environment
Constructing Deploying and Maintaining Enterprise Systems
Software Engineering (CSI 321)
Managing the Project Lifecycle
Use Cases Discuss the what and how of use cases: Basics Benefits
Chapter 18 Maintaining Information Systems
Maintaining software solutions
Applied Software Implementation & Testing
Design and Programming
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Presentation transcript:

The Joel Test 12 Steps to Better Code

Readings The Joel Test (by Joel Spolsky) html

The Joel Test 1. Do you use source control? 2. Can you make a build in one step? 3. Do you make daily builds? 4. Do you have a bug database? 5. Do you fix bugs before writing new code? 6. Do you have an up-to-date schedule? 7. Do you have a spec? 8. Do you have quiet working conditions? 9. Do you use the best tools money can buy? 10. Do you have testers as part of the team? 11. Do you have interview candidates write code? 12. Do you do hallway usability testing? In general, a score of <= 10 means you’re in trouble.

Do you use source control? What are the benefits? o Allows multiple developers o Keep project in consistent state o Track changes and enable roll-back o Manage multiple versions o Save data in case of a disaster o Authoritative source for “daily build” For the ZFR, we’d like to see an artifact showing the state of your repository.

Do you have a one step build? A single script that o [does a full checkout from scratch] o rebuilds every line of code o makes the binary executable files in all versions, languages and #ifdef combinations o [creates the installation package] o [creates the final media - CDROM, web site, …] All steps are automated and exercised regularly So, why is this valuable?

Do you do a daily build and test? Build the entire product every day and run a good test suite against the new version o build from checked in sources o automatic and frequent o find out early that you’ve got problems and fix them before disaster strikes Benefits o Minimizes integration risk o Reduces risk of low quality o Supports easier defect diagnosis o Improves morale - developers, managers, customers For the ZFR, we’d like to see your build script/sequence and the output of a run.

Do you use a bug database? You can’t keep the bug list in your head o Especially with multiple developers and multiple customers Moreover, looking at the history of bugs can be insightful! To characterize a bug consider: o how to reproduce it o expected behavior, actual behavior o responsible party, status, priority Examples: Trac, Bugzilla, text file For the beta, we’ll be asking to see a log of your bugs.

Do you fix bugs before writing new code Why not fix them later? Familiar with the code now Harder to find (and fix) later Later code may depend on this code (try building on quicksand…) Bugs may reveal fundamental problems Leaving all bugs to the end will make it harder to understand and keep the schedule

Do you have an up-to-date schedule? Keeps expectations realistic o For the team, customers, stakeholders Allows for more accuracy o Use experience to improve estimates Helps prevent feature creep o Don’t take on anything without checking the schedule first Keeping all your specs/plans up to date is important. For the SDS, we ask for a schedule. For later releases, we’ll ask you to highlight any changes

Do you have a spec? Easier to fix problems at the design stage You know what you are trying to build o So do your teammates and customer More likely that you build the right thing o Pieces fit together o Customer is satisfied Conceptual integrity for your project Undocumented code has no commercial value o Joel’s example: Netscape Navigator

Joel’s Disclaimer These are not the only factors that determine success or failure o A great team will not help if you are building a product noone wants o An incredibly talented team might produce an incredible product without these guidelines But all things being equal, these factors indicate a disciplined team that can consistently deliver