{"id":1974,"date":"2009-04-07T09:18:20","date_gmt":"2009-04-07T16:18:20","guid":{"rendered":"https:\/\/svapm.org\/?p=1974"},"modified":"2019-08-07T14:31:46","modified_gmt":"2019-08-07T21:31:46","slug":"practical-software-practices","status":"publish","type":"post","link":"https:\/\/svapm.org\/?p=1974","title":{"rendered":"Practical Software Practices"},"content":{"rendered":"<p>At my last company we took pride in the amount of work we were able to accomplish with a very small team \u2013 software of high quality and releases on tight schedules.  The high quality and the responsiveness to customers\u2019 demand for new features kept our customer support expenses low and gave us good customer references.<br \/>\n<!--more--><br \/>\nWe were fortunate to have, as our senior technical staff, individuals who had been exposed to both the heaviest of software processes (in the Aerospace industry) as well as the chaos that can accompany a lack of any software process at all.  So we worked well together, putting in place those practices that made sense, modifying those that were needed but too heavy, and eliminating those that had a low cost\/benefit ratio.<\/p>\n<p>Our stable of mandatory practices included:<br \/>\n1.\tWritten, reviewed, approved requirements<br \/>\n2.\tA requirements baseline, implemented with a requirements management (RM) tool<br \/>\n3.\tStrict change management (using a feature-rich tool)<br \/>\n4.\tTesting of every requirement (using the RM tool to track progress)<br \/>\n5.\tEvery task needed for a release is recorded and assigned an owner (whether a coding task, testing task, or other) and every task tracked to completion<\/p>\n<p>I tell my students that a practice will not work unless every software engineer buys into it.  If one engineer allows a Sales person to whisper a good idea into his\/her ear and agrees to sneak it into the next release, then the whole process will be subverted.  Every practice must be selected for its benefit, must be structured to be easy to follow, and engineers must see the benefit to themselves.  If practices are perceived to be a pain in the neck and of little ultimate benefit, they will be abandoned.  You will see a quiet mutiny, little acts of forgetfulness and uncooperative behavior, excuses related to deadlines, until you finally abandon your plan and chaos reigns.<\/p>\n<p>Getting engineers to buy into selected practices usually involves some sort of training, but it also often involves learning a lesson.  An undocumented requirement requested by marketing, making a change without going through the process, an untested requirement getting into a release \u2013 sometimes it takes a lapse, a bad outcome, followed by a \u201cwhat have we learned from this\u201d for the engineer to appreciate the benefit to themselves.<\/p>\n<p>Management, too, must respect every rule put in place to implement the practices, and upper management must not just respect the rules but enforce them, and never allow them to be circumvented, by anyone.  Even by themselves.  Without this management commitment, engineer buy-in is impossible.<\/p>\n<p>It\u2019s a constant cycle of benefit analysis, buy-in, adoption, listening.  What\u2019s \u201clistening\u201d got to do with it?  You have to be willing to discard or modify what doesn\u2019t work or what wastes time.  So you must listen to the complaints and suggestions and understand what isn\u2019t working.  And then adapt.  Analyze, adopt, adapt.  That\u2019s how you get to <em>Practical<\/em><em>. <\/p>\n<p>Anita Wotiz<br \/>\nwww.duckpondsoftware.com (see the Consulting tab)<br \/>\nInstructor, UCSC Extension in Silicon Valley<br \/>\nSoftware Requirements Engineering and Management (next class Aug 2009)<br \/>\nSoftware Project Planning, Monitoring, and Management (next class Oct\/Nov 2009)<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>At my last company we took pride in the amount of work we were able to accomplish with a very [&hellip;]<\/p>\n","protected":false},"author":18,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"give_campaign_id":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[2,1],"tags":[39,204,11,50],"class_list":["post-1974","post","type-post","status-publish","format-standard","hentry","category-leadership","category-miscellaneous","tag-best-practices","tag-change","tag-implementing-project-management","tag-requirements"],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/posts\/1974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/svapm.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1974"}],"version-history":[{"count":1,"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/posts\/1974\/revisions"}],"predecessor-version":[{"id":14220,"href":"https:\/\/svapm.org\/index.php?rest_route=\/wp\/v2\/posts\/1974\/revisions\/14220"}],"wp:attachment":[{"href":"https:\/\/svapm.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/svapm.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/svapm.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}