Happy Are The Software Engineers.. (artikkeli)

Ensimmäinen koskaan kirjoittamani julkaisu on nimeltään "Happy Are The Software Engineers.." ("Onnellisia ovat ohjelmistosuunnittelijat..") ja se ilmestyi Better Software-lehdessä joulukuussa 2006. Artikkeli kuvaa kaikessa lyhykäisyydessään, kuinka täydellinen keskittyminen voi luoda onnellisuuden tunteen, erityisesti jos tehtävä on mielekäs. Halusin osoittaa, että ohjelmistolaatutyö on mielekästä ja että Tick-the-Code -menetelmällä on mahdollista uppoutua täydelliseen keskittymisen tilaan.

Tiivistettynä: onnea on Tick-the-Code.

Tick-the-Code Inspection: Theory and Practice

Ensimmäinen tieteellinen artikkelini on nimeltään "Tick-the-Code Inspection: Theory and Practice" (Tick-the-Code -katselmointi: teoria ja käytäntö) ja se ilmestyi vertaistarkistetussa ASQ (American Society for Quality, Amerikan Laatuliitto) lehdessä nimeltä Software Quality Professional.

Kuten nimi kertoo, artikkelini paljastaa kaikki Tick-the-Code -menetelmän yksityiskohdat aina 24 koodaussääntöön asti. Artikkeli on kattavin kirjoitettu lähde Tick-the-Code -menetelmästä.

Tick-the-Code Inspection: Empirical Evidence (on Effectiveness)

Toinen tieteellinen artikkeli on nimeltään Tick-the-Code Inspection: Empirical Evidence (on Effectiveness) (Tick-the-Code -katselmointi: empiirisiä todisteita (tehokkuudesta)). Kirjoitettuani artikkelin esitin sen ensimmäisen kerran Pacific Northwest Software Quality Conference (PNSQC)-konferenssissa lokakuussa 2007, Portlandissa, Oregonin osavaltiossa, USA:ssa. Artikkeli esittelee Tick-the-Code-koulutuksista kerättyjä mittauksia (noin 50 koulutuksen yhteensä yli 300 osallistujaa osallistuivat tutkimukseen.) Tulokset ovat paljastavia. Artikkelin päähuomio on, että ohjelmistosuunnittelijat voisivat pitää koodinsa paljon yksinkertaisempana ja välttää tekemästä monia niistä virheistä, joista ohjelmistoprojektit ovat tulleet niin pahamaineisiksi.

Artikkelin lisäosassa on lista Tick-the-Code -menetelmän säännöistä artikkelin kirjoitushetkellä (kesä 2007).

Tick-the-Code - uusvanha tekniikka taistelussa bugeja vastaan

Pirkanmaan Tietojenkäsittely-yhdistys (Pitky ry) julkaisi artikkelini jäsenlehdessään Pitkyn Piiri 1/2008. Se on nimeltään "Tick-the-Code - uusvanha tekniikka taistelussa bugeja vastaan".

Tulossa

Tick-the-Code -katselmointi: kirja

Vuodesta 2006 olen kirjoittanut kirjaa Tick-the-Code -menetelmästä. Siitä tulee yksityiskohtaisin ja täydellisin lähde menetelmään. Olen jo luonnostellut lähes kaikki luvut. Joihinkin niistä olen jo saanut asiantuntijoilta palautetta, jonka olen ottanut huomioon. Olen lähestynyt muutamaa kustantajaa ja saanut lisää palautetta (en vielä hyväksyntää). O'Reilly-toimittaja Andy Oram mainitsi menetelmän Beautiful Code-kirjan blogissa, mikä aiheutti melkoisen ryntäyksen näillekin sivuille. Seuraavaksi täytyy saada syntymään asiasta kiinnostunut yhteisö ja lähestyä kustantajia uudestaan.

Ote kirjasta

Ote vaihtuu viikottain. Kukin ote on vielä luonnos ja voi muuttua ennen päätymistään kirjaan. Otteet ovat englanniksi.

Who is Responsible for Quality?

The concept of responsibility fits another root cause for quality problems, too. Responsibility works best when it is accepted or assumed even if it hasn't explicitly been given. In most troubled organizations nobody has assumed responsibility for quality. Sometimes a quality manager seems to be the only one struggling with quality issues, often reduced to the role of a quality accountant more than anything else. Keeping track of metrics without them having any influence on the busy schedule isn't doing much for the quality of the product. Quality isn't a one-man job. It isn't a management job, either. Software quality is the responsibility of the people who have a chance of influencing the development of software. Everybody able to change the software, should consider improving it his or her duty.

Idealistic thoughts aside, one root cause hampering quality is simply the lack of skill. If the developers don't know how to create simple and maintainable software, they aren't going to. Their code will be terribly complex, and it will contain errors. It will contain errors that are hard to detect in testing, it will contain errors that a blind chicken would notice, it will contain errors that are difficult or impossible to fix, and it will contain errors a blind chicken could fix, assuming you pointed the keyboard to it. The developers will try their best to reach good quality levels but won't succeed very well. Many beginners fit this description. They will be enthusiastic about the new functionality they get to implement, but have no idea about quality. And the results will be messy.

If the organization has no safeguards for dangerous beginners, the situation becomes even nastier. If the novice developer doesn't get too bad feedback on his code, he might assume it to have been quite good, at least of average quality. He might even be satisfied with himself. If the organization offers no training or requires no improvement from the developers, the developer might be stuck at his beginner level for good. He'd assume a careless attitude towards quality, which explains the multitude of quality problems with seemingly experienced developers. Such developers with many years of coding under their belts are actually just old beginners. Their level of coding is bad, unimaginative but good enough for the organization they are in. They don't care about quality, they have never had to and they aren't going to change their ways after all these years. As if they could learn.

The developers aren't really to blame. The organization has conditioned them to respond to functionality and deadlines, and to ignore quality. As always, the management is to blame. When quality is just a buzzword, unsupported by the software development processes, it is virtually impossible for the developers to do anything for quality. If the deadlines just get tighter with every project success, the projects soon learn not to succeed. If the developers do not have time for quality, they cannot produce quality. If they don't get the necessary training, they won't learn. If they only "get to taste their own medicine", i.e. always just see their own code, they won't be able to expand their imagination. If the developers aren't allowed or encouraged to read books or work on experimental projects, they won't evolve. If they cannot try out new languages and tools and methods, they are going to stay on their current level of development, which means getting left behind in the real world.

Systemic support of quality is important. After the developers have gained the necessary skills, they need to feel that they are allowed to use those skills for good. That feeling comes from the management's reactions to quality work. If the management only pays lip service to quality, the developers will notice it in a crisis. Suddenly there is no time for quality, suddenly it is all about adding more functionality and getting it done quickly.

If product quality isn't taken seriously by everyone, if it isn't an explicit goal, if the people involved don't have the necessary skills, knowledge and attitude, if the systems of the organization don't support quality work, if the necessary tools and methods aren't available and if the people involved aren't striving to improve, there will be quality problems. It won't be easy to pinpoint a specific root cause in each individual problem case, but there is always a reason. It is absolutely vital to understand the root causes, otherwise the decisions and improvement attempts will be chaotic and have chaotic outcomes. It is important to understand whether a tired developer makes an error, or the management moving the arbitrary deadline a few weeks earlier causes havoc, or the developer staff works as best it can still causing problems. In one case you need to cut the developers some slack, on another you need to work on commitment and motivation on all levels of the organization and in one case you'd better find a learning solution.

Quality is everybody's responsibility. The developers need to keep their skills and tools up to date, the managers need to support the necessary changes in their planning. The whole organization must be behind continuous improvement for quality.

Another well-pondered question in Chapter 3. "Root Causes".

Kiinnostaisiko koeajo?

Olet nyt tässä:

sivustokartta

Klikkaamalla sivustokarttaan.

Osanottajien sanomaa:

Todellista koulutuspalautetta

Klikkaamalla kurssitietoihin.