T SEPA diary. Santtu Järvi (57729J), Matti Lehtomäki (55065D) 2. maaliskuuta 2008
|
|
- Anneli Saaristo
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 T Santtu Järvi (57729J), Matti Lehtomäki (55065D) 2. maaliskuuta
2 Sisältö 1 Johdanto 3 2 Käytännön toteutussuunnitelma Yleiskuvaus Tekniset tarkastelukohteet Tehokkaat ja tehottomat pariohjelmoinnin kohteet Erilaisten työpisteiden vaikutus tehokkuuteen Päätelaitteiden vaikutukset ja mahdolliset ongelmat Psykologiset tarkastelukohteet Ohjelmointivuoron pituus Taukojen määrä ja niiden pituus Palautteen määrän vaikutus Yleisen keskustelun määrä ja häiriötekijät Huumorin vaikutus Parien vaihtaminen ja mahdolliset ongelmatilanteet Havainnot ja muutokset Suunnitteluvaihe Toteutusvaihe Yleiskuva Muutokset toteutussuunnitelmaan Havainnot Toteutusvaihe Yleiskuva Muutokset toteutussuunnitelmaan Havainnot Yhteenveto /11
3 1 Johdanto Sovellusohjelmointi on tyypillisesti taito, jota tuskin kukaan pystyy soveltamaan ilman jatkuvaa virheiden tekemistä. Koska ihmiset ovat vain ihmisiä, inhimillisten virheiden todennäköisyys ohjelmoitaessa on sitä suurempi, mitä monimutkaisempia ja suurempia ongelmia pyritään ratkomaan ohjelmallisesti. Ihminen on tyypillisesti myös helposti taipuvainen soveltamaan heti ensimmäisenä mieleensä tullutta ratkaisua tiettyyn ongelmaan ajattelematta välttämättä sen kummemmin sen järkevyyttä. Toisaalta joku saattaa taas jäädä tunneiksi miettimään ongelmanratkaisua pääsemättä asiassa juurikaan eteenpäin. Usein ratkaisuvaihtoehtojen määrä jää vähäiseksi ja ongelmaa lähestytään vain yhdestä tai parista eri näkökulmasta. Myös tietotaito on ohjelmoitaessa valttia ja monesti lahjakkaan ohjelmoijan kyvykkyydestä ei ole muille ohjelmoijille muuta hyötyä kuin laadukas koodi, mikäli hän harrastaa ohjelmointia täysin itsenäisesti. Jokainen vähän tai hieman enemmänkin ohjelmoinut on varmasti kohdannut edellä mainittuja ongelmatilanteita ja miettinyt miten ne saisi ratkaistua. Yksi hyväksi todettu ja tehokas ratkaisu on hyödyntää ohjelmistoprojekteissa pariohjelmointia. Pariohjelmoinnilla tarkoitetaan lyhykäisyydessään kahden ihmisen tiivistä yhteistyötä ohjelmakoodin tuottamisessa saman näyttöpäätteen ääressä. Toinen ohjelmoijista toimii vuorollaan ajajana ja toinen vieressä navigaattorina. Ajajan tehtävänä on tuottaa koodia mahdollisimman tehokkaasti ja nopeasti kiinnittämättä enempää huomiota yksityiskohtiin. Navigaattorin tehtävänä taas on linjata suoritettavaa ohjelmointitehtävää ja tarkkailla aktiivisesti ajajan tuottamia koodirivejä virheitä etsien sekä antaa palautetta puutteista ohjelmakoodissa. Laurie Williams ja Robert Kessler ovat kiteyttäneet onnistuneesti pariohjelmoinnin mentaliteetin ja periaatteet artikkelissaan All I Really Need to Know about Pair Programming I Learned In Kindergarten [1]. Siinä on kuvattu erittäin selkeällä ja helposti omaksuttavalla tavalla pariohjelmointi psykologisesta näkökulmasta ja keskitytty käytännön ongelmiin, joita kahden ihmisen välisessä kanssakäymisessä saattaa ilmaantua ohjelmoinnin merkeissä. 2 Käytännön toteutussuunnitelma 2.1 Yleiskuvaus Useassa projektissa on tullut vastaan koodin sekavuus useamman ohjelmoijan työskennellessä saman koodin parissa yhtäaikaa. Projektin edetessä huomataankin usein, että jokainen ymmärtää vain oman alueensa, mikä tekee ohjelmoinnin koordinoinnista hyvin hankalaa. Tähän ongelmaan on jo aiemmin kokeiltu ratkaisua, jossa ohjelmoidaan yhdessä internet-puhelun mahdollistaman keskustelun tukemana. Vaikeimmissa kohdissa on tullut myös testattua muita etätyökaluja, joilla esimerkiksi jokainen ohjelmoija voi muokata samanaikaisesti tiedostoja, koska kaikki näkevät reaaliajassa toistenkin tekemät muokkaukset. Tulos näissä ohjelmointitesteissä on ollut hyvin positiivinen ja tämän takia pariohjelmointi kiinnostaa käytännössä hyvin paljon. Pariohjelmointia tullaan projektin aikana käyttämään jatkuvasti alkaen ensimmäisestä iteraatiosta. Koska pariohjelmointi vaatii kaksi ohjelmoijaa, keskitytään erityisesti asioihin, jotka olennaisesti vaikuttavat tehokkaan pariohjelmoinnin toteuttamiseen sekä teknisessä 3/11
4 että psykologisessa mielessä. 2.2 Tekniset tarkastelukohteet Tehokkaat ja tehottomat pariohjelmoinnin kohteet Koodin kommentointi ja täysin triviaalit muokkaukset eivät voi mitenkään olla parhaita pariohjelmoinnin kohteita, joten nämä asiat sivuutetaan tekniikkaa testatessa. Olennainen asia pariohjelmoinnissa on löytää ohjelmoinnin osa-alueet, joissa tekniikan soveltaminen on järkevää. Tämän takia pyritäänkin järjestämään eri suuruisia ja vaikeusasteisia ohjelmointitehtäviä, jotta pariohjelmoinnin todellinen hyötyalue tulisi esiin Erilaisten työpisteiden vaikutus tehokkuuteen Pariohjelmoinnissa on erittäin tärkeää, että työpiste olisi mahdollisimman ergonominen. On tärkeää huomioida, että vuoron vaihtaminen tapahtuu näppärästi vain näppäimistöä ja hiirtä liikuttamalla. Mikäli jokaisen vuoron vaihdon yhteydessä tuoleja ruvetaan siirtelemään, tähän kuluu turhaa aikaa ja vaivaa varsinkin mikäli vuoron pituus on lyhyt. Erilaisten työtuolien lisäksi myös erimuotoisia pöytiä tullaan kokeilemaan niiden aikaansaamien vaikutusten esiintuomiseksi Päätelaitteiden vaikutukset ja mahdolliset ongelmat Kun kaksi ihmistä tuijottaa yhtä näyttöpäätettä samanaikaisesti, näyttöpäätteen laatu ja katselukulmat ovat erityisen tärkeässä asemassa. Eri tekniikalla toteuttuja ja erikokoisia näyttöpäätteitä tullaankin kokeilemaan mahdollisuuksien mukaan. 2.3 Psykologiset tarkastelukohteet Ohjelmointivuoron pituus Koska aikaisempaa kokemusta varsinaisesta pariohjelmoinnista ei juurikaan ole, tullaan sitä testaamaan erilaisilla aikajaksoilla. Jokaisella viikolla pyritään testaamaan eri mittaisia vuoroja ajajan ja navigaattorin rooleissa. Aluksi testaan ainakin 15, 30 ja 45 minuutin mittaisia jaksoja, ja tämän jälkeen pyritään vielä hakemaan hienosäätöä kaikista parhaimman jakson pituuden löytämiseksi. Yleisesti parhaimmaksi vuoron pituudeksi on todettu noin puoli tuntia, jota pidetään lahtökohtaisena parhaana arvona Taukojen määrä ja niiden pituus Tauot ovat olennainen osa kaikkea työtä ja varsinkin tiivistä yhteistyötä tehdessä niiden merkitys varmasti korostuu. Tämän takia onkin mielenkiintoista kokeilla, kuinka yhteistyö sujuu pitämättä tuskin yhtään taukoa. Toisaalta on varsin mielekästä kokeilla myös usein toistuvia parin minuutin mittaisia taukoja työskentelytehokkuuden kannalta. 4/11
5 2.3.3 Palautteen määrän vaikutus Palautteen antaminen on hyvin olennainen osa pariohjelmointia. Liian nopeasti annettu palaute saattaa ruveta ärsyttämään toista ja toisaalta taas hitaasti reagoiva navigaattori saattaa aiheuttaa sekaannusta ajajan ohjelmoidessa, mikäli hän raportoi esimerkiksi ajajan tekemästä kirjoitusvirheestä turhan myöhään. Kirjoittamaton sääntö sanoo, että navigaattorin tulisi puuttua koodirivin sisältöön vasta kun ajaja on painanut rivinvaihtoa. Tätä sääntöä tullaan ehdottomasti testaamaan myös käytännössä. Kaiken kaikkiaan palautteen annon nopeutta ja määrää tullaankin testaamaan ääripäästä toiseen pyrkien löytämään optimaalinen taso Yleisen keskustelun määrä ja häiriötekijät Koska pariohjelmointi on tiivistä yhteistyötä, on sitä käytännössä mahdoton toteuttaa olemalla hiljaa. Tämän takia tullaan kiinnittämään huomiota muiden samassa huoneessa olevien ohjelmoijien antamaan palautteeseen keskustelun ja kommentoinnin häiritsevyydestä. Yleisesti ottaen tullaan myös kiinnittämään huomiota siihen, kuinka suuri vaikutus on navigaattorin pysymisellä asiassa ajajan ohjelmoidessa. On mielenkiintoista nähdä kuinka helposti ajajan ote koodinkirjoittamiseen herpaantuu, jos navigaattori ei kommentoi loogisesti ajajan työskentelyä tai hyppii ajatuksissaan epäloogisesti paikasta toiseen Huumorin vaikutus Huumorilla on melkoinen merkitys hyvän ilmapiirin luomisessa. Tämän takia tullaan pitämään ohjelmointipäiviä, jolloin lähes kaikki ohjelmointiin liittyvät asiat pyritään esittämään pilke silmäkulmassa ja sitten taas testataan myös toista ääripäätä, jolloin asiat esitetään vakavasti ja asiallisesti. Erilaisella huumorin määrällä voi olla yllättävä vaikutus ohjelmoinnin tehokkuuteen Parien vaihtaminen ja mahdolliset ongelmatilanteet Pariohjelmointia aiotaan testata aluksi vain yhdellä parilla, mutta myöhemmin mahdollisesti useammalla, mikäli vain muiden ohjelmoijien aikataulu tämän sallii. Parien vaihto tuo varmasti mukanaan psykologisia seikkoja, joita vain yhden ja saman parin työskennellessä ei välttämättä tule esiin. Jokainen ihminen on yksilö ja onkin täysin mahdollista, että henkilökemiat eivät kohtaa ollenkaan. 3 Havainnot ja muutokset 3.1 Suunnitteluvaihe Projektin suunnitteluvaiheessa pariohjelmointia ei voitu luonnollisesti soveltaa, koska ohjelmointityötä tehdään vasta toteutusvaiheissa. 3.2 Toteutusvaihe Yleiskuva Ensimmäisessä toteutusvaihessa tarkoituksena oli rakentaa viestipohjainen taustajärjestelmä käyttäen Python-ohjelmointikieltä. Python ei kielenä ollut kovin 5/11
6 tuttu kummallekaan, mutta parin päivän ohjelmoinnin jälkeen kieli alkoi sujua luontevasti ja mitään kovin monimutkaista Python-kielessä ei tullut vastaan. Pariohjelmointia ryhdyttiin soveltamaan heti kehitystyökalujen asennuksen jälkeen ja sitä käytettiin iteraation loppuun saakka. Kappaleeseen on koottu havaintoja ja kokemuksia pariohjelmoinnin soveltuvuudesta tehokkaalla ohjelmointikielellä toteutetun ohjelman luomiseen ilman olemassa olevaa pohjaa Muutokset toteutussuunnitelmaan Ainoa selkeä muutos toteutussuunnitelmaan ensimmäisessä toteutusvaihessa oli, että pariohjelmointia kokeiltiin myös erityistä tarkkaavaisuutta vaativan dokumentaation tuottamiseen. Tästä on kerrottu lisää kappalessa kohdassa Tehokkaat ja tehottomat pariohjelmoinnin kohteet Havainnot Tehokkaat ja tehottomat pariohjelmoinnin kohteet Pariohjelmoinnin huomattiin sopivan erityisen hyvin sellaiseen ohjelmointiin, jossa kaikki on suunniteltu alusta asti itse ja suunnitelma on selkeä. Alusta asti itse suunniteltu järjestelmä aikaansaa sen, että molemmilla on hyvä tietämys järjestelmästä ja sitä on mukava ohjelmoida pariohjelmoiden. Itse ohjelmointikielestä ei välttämättä molemmilla ole yhtä paljon tietämystä, mutta pariohjelmointi auttaa myös jakamaan tietoa. Erityisen hyvin pariohjelmointi sopii myös ohjelmointikieleen, jossa ei ole tyypitystä. Kun virheelliset metodikutsut huomataan tulkin toimesta ohjelmallisesti vasta ajettaessa ohjelmaa, on paljon tehokkaampaa, mikäli virheet pystytään pariohjelmoinnin avulla huomaamaan jo koodinkirjoitusvaiheessa. Tämä toimi hienosti. Toinen erittäin hyvä kohde pariohjelmoinnille on rekursiot ja for-lauseet. Näissä tulee helposti virheitä raja-arvojen kanssa, mikä pystytään valppaan navigaattorin avulla usein tehokkaasti estämään. Debuggaaminen on hieman kaksijakoinen kohde pariohjelmoitaessa. Mikäli sekä ajajalla että navigaattorilla on yhtä hyvä tuntemus järjestelmään, debuggaaminen on usein tehokkaampaa kahden silmäpärin voimin. Toisaalta taas vaikeasti paikannettaviin ongelmiin ja tuntemattoman järjestelmän debuggamiseen pariohjelmointi ei välttämättä ole tehokkain keino, koska ongelmien ratkominen saattaa tällöin viedä kohtuuttoman paljon aikaa johtuen koodin kääntämisestä. Tällöin on usein tehokkaampaa hajauttaa pari debuggaamaan ongelmaa kahdella eri koneella, kumpikin yrittäen ratkoa ongelmaa erilaisilla lähestymistavoilla. Alkuperäisestä suunnitelmasta poiketen pariohjelmointia sovellettiin myös tarkkuutta vaativaan dokumentointiin. Tarkemmin sanoen kohteena oli järjestelmässä kulkevien viestien dokumentointi, mikä vaati hyppimistä koodissa sekä leikkaa-liimaa operaatiota eri ikkunoiden välillä. Koska viestien dokumentaation tuli olla korrektia ja vastata täysin koodia, ylimääräinen silmäpari ei todellakaan ollut pahitteeksi dokumentaatiota kirjoitettaessa. Eli tämän tyyppiseen dokumentointiin pariohjelmointi soveltui varsin hyvin. Tehottomia kohteita pariohjemoinnille paljastui olevan lähinnä täysin triviaalien container-tyyppisten luokkien tekeminen, missä luokan rajapinta vain sisältää GetXXX() ja SetXXX() -tyyppisiä metodeita. Tähänkin tosin löytyi aivan projektin loppuvaiheessa kehitystyökalun puolelta automatisoitu ratkaisu, 6/11
7 minkä hyödyntäminen heti alusta lähtien olisi säästänyt jonkin verran aikaa ja vaivaa, sekä poistanut ainoan selkeän miinuksen pariohjelmoinnin soveltuvuuslistalta ohjelmoitaessa Python-kielellä. Erilaisten työpisteiden vaikutus tehokkuuteen Työpisteillä huomattiin olevan enemmän vaikutusta kun aluperin kuviteltiinkaan. Aivan aluksi kokeiltiin nurkkatyöpistetta, joka oli kovera 90 asteen nurkka. Molemmat kokivat tämän varsin ahdistavaksi työasennoksi ja se hylättiin välittömästi. Seuraavaksi kokeiltiin toista ääripäätä, eli 90 asteen kuperaa nurkkaa. Se oli muuten melko toimiva, mutta asento ei tuntunut täysin luontevalta ja lisäksi päätä piti koko ajan kääntää näytön suuntaan korostetusti. Lisäksi näppäimistön siirtäminen toiselle ei ollut kovin helppoa vuoron vaihtuessa. Näin ollen parhaimmaksi testatuksi vaihtoehdoksi muodostui suora pöytä, jossa molemmat istuvat rinnakkain. Tällöin päätä ei juurikaan tarvinnut kääntää näytön suuntaan ja näppäimistön sai helposti liu utettua kaverille. Ideaalimaailmassa paras työpiste olisi kupera, noin 30 asteen kulma, jolloin voisi käytännössä katsoa kokoajan suoraan eteenpäin ja näppäimistön saisi silti siirrettyä pienellä vaivalla. Päätelaitteiden vaikutukset ja mahdolliset ongelmat Päätelaitteen vaikutus korostui heti ensimmäisenä testipäivänä. Kun pariohjelmoinnissa joutuu käyttämään 14 LCD näyttöä, se ei missän nimessä voi olla kovinkaan miellyttävää. Suurimmaksi ongelmaksi muodostui kehnot katselukulmat, jonka takia näyttöä joutui viemään kauemmaksi kuin olisi ollut miellyttävää. Tästä taas seurasi, että näytön tekstiä joutui kokoajan hieman tihrustamaan, eivätkä silmät saaneet levätä. Joka tapauksessa parhaaksi sijoituspaikaksi pienelle LCD-näytölle asettui noin 80 cm:n etäisyys silmistä suoraan edessä. Tällöin katselukulmat eivät juurikaan häirinneet ja teksti oli silti vielä luettavissa. Olisi ollut mielenkiintoista kokeilla myös isompaa päätelaitetta ja parempia katselukulmia, mutta tähän ei tarjoutunut mahdollisuutta. Ohjelmointivuoron pituus Kun pariohjelmointia lähdettiin soveltamaan, aluksi testattiin 30 minuutin pituista ohjelmointivuoroa. Tämä tuntui aluksi hyvältä, mutta viikon jälkeen puolen tunnin vuorot alkoivat venymään ja rupesivat osoittautumaan turhan pitkiksi. Tämän takia vuoron pituutta lyhennettiin ensin 20 minuuttiin ja sitten 15 minuuttiin, joka tuntui olevan paras vaihtoehto. Ongelmana oli kuitenkin se, että vaikka mielenkiinto säilyi pariohjelmoinnin kannalta tällä vuoronpituudella parhaana, suoritettava ohjelmointitehtävä tuntui hyvin usein jäävän kesken lyhyen vuoron takia. Ratkaisuna ongelmaan oli jyvittää ohjelmointitehtävät tarkemmin pienemmiksi kokonaisuuksiksi, minkä jälkeen lyhyt vuoroväli toimi erittäin hyvin. Myös aiemmin esiteltyyn erityistä tarkkaavaisuutta vaativaan dokumentointiin sovellettu pariohjelmointi toimi parhaiten juuri lyhyellä vuoronpituudella. Yksin tai pitkillä vuoroilla tehtynä dokumentointi olisi varmasti osoittautui varsin tylsäksi hommaksi, sillä pariohjelmoidenkin sen tekemiseen kului melkein kokonaisen työpäivän verran. 7/11
8 Taukojen määrä ja niiden pituus Aluksi tauot jäivät varsin vähäisiksi ja ohjelmointia vain jatkettiin kunnes tuli ruokatunti tai päivä loppui. Tämä oli suuri virhe, sillä taukojen merkityksen huomattiinkin olevan varsin suuri. Pienen tauon (muutama minuutti) aina yhden tavoitteen valmistumisen jälkeen todettiin olevan paljon tehokkaampaa pitemmällä tähtäimellä. Yleisen keskustelun määrä ja häiriötekijät Selvä heikkous pariohjelmoinnissa on uupuminen, joka usein näyttää osuvan navigaattorin puolelle. Tämä tapahtuu varsinkin jos navigaattorilla ei ole yksinkertaisesti mitään lisättävää, tai ohjelmoitava alue on jo valmiiksi jo liian yksinkertaista. Pieni, muttei häiritsevä, keskustelu huomattiin hyvin toimivaksi estämään tätä. Navigaattorin, ja tarvittaessa myös ajajan, kannattaa yksinkertaisesti kommentoida koodia vaikka pelkästään huumorilla. Tämä herättää yleensä toisen ja pitää mielenkiinnon yllä molemmilla. Keskustelu tuo tietenkin myös huonot asiat, kuten aiheen vaihtuminen johonkin aivan toiseen. Monesti tuli huomattua, että ohjelmointi loppui ja keskustelun aihe olikin muuttunut harrastukseen liittyväksi. Pienissä määrin tämä ei tietenkään ole ongelma, mutta usein keskustelu venyi tarpeettoman pitkäksi. Pieni korjausidea tähän on pitää keskustelutuokio työhön liittymättömistä asioista ennen ohjelmoinnin aloittamista ja sitten yrittää parhaansa keskittyä pelkkään ohjelmointiin. Usein, pahasti kesken ohjelmoinnin, joku saattaa tulla kyselemään yksinkertaisia kysymyksiä liittyen ohjelmointiin tai muihin asioihin. Tämän jälkeen on luonnollisesti todella vaikea palautua vanhaan tilaan ja jatkaa ohjelmointia kuin mitään ei olisi tapahtunutkaan. Pariohjelmoinnissa huomattiin, että palautuminen olikin paljon helpompaa kuin yleensä. Jos ulkopuolista häirintää tapahtui, niin yleensä viimeistään navigaattori muisti mihin jäätiin. Toisaalta tilanteet, joissa toinen joutui siirtymään pois auttamaan muita, vaati että toinen jäi vain odottelemaan. Tällöin auttaminen maksoikin kahden henkilön työmäärän. Keskustelua tapahtui varsin paljon pariohjelmoinnin yhteydessä ja ulkopuolisilta kysyttiin, oliko se häiritsevää. Kukaan ei ainakaan myöntänyt sen olevan häiritsevää. Huumorin ja palautteen määrän vaikutus Huumorin tärkeys nousi hyvin esille tilanteissa, joissa navigaattori huomaa jatkuvasti toistuvat tai hyvin naurettavat pikkuvirheet. Tilanteesta, jossa navigaattori jatkuvasti nalkuttaa pienistä asioista, voi nopeasti tulla ärsyttäviä molemmille. Jos nämä huomautukset tuo esille pieninä humoristisina kommentteina, on ilmapiiri paljon vapaampaa ja tällöin myös työskentely hauskempaa. Parien vaihtaminen ja mahdolliset ongelmatilanteet Parien vaihtamistamahdollisuutta ei tullut. Jokaisella oli hyvin tarkasti määrätyt työalueet ja ylimääräistä aikaa ei muilta työryhmän jäseniltä löytynyt. Parien vaihtaminen olisi varmasti parantanut koodin laatua yleisesti, sillä jälkeenpäin huomasimme koodissa valtavia tyylipoikkeuksia, jotka olisi ollut hel- 8/11
9 posti korjattavissa pariohjelmoinnilla. Jokaisen oma osa-alue oli toisaalta niin erilainen, että parien vaihtaminen olisi varmasti hidastanut työtahtia suunnattomasti. Vaihtamismahdollisuutta päätettiin kuitenkin yrittää testata seuraavassa toteutusvaiheessa. 3.3 Toteutusvaihe Yleiskuva Toisessa toteutusvaiheessa Python-ohjelmointikieli jätettiin taakse ja vaihdettiin Java-kieleen. Javalla ryhdyttiin rakentamaan web-portaalia, joka hyödyntää ensimmäisessä toteutusvaiheessa luotua taustajärjestelmää. Lähtökohta ohjelmointiteknisessä mielessä oli varsin erilainen 1. toteutusvaiheeseen nähden, sillä kummallekin itse Java-kieli oli entuudestaan varsin tuttua, mutta portaalin toteuttaminen käyttäen noin kymmentä eri Javan päälle rakennettua teknologiaa rinnakkain oli täysin uutta. Lisäksi toteutusta ei rydytty tekemään täysin tyhjästä, vaan pohjana käytettiin AppFuse-ohjelmalla generoitua valmista websivustopohjaa, josta löytyi lähinnä tuki käyttäjien hallintaan. Pariohjelmoinnin kannalta lähtökohta oli mielenkiintoinen, sillä valmiiksi generoidun pohjan päälle ohjelmointi ei aina ole puhdasta ohjelmointia, vaan konfigurointia, josta kerrotaan kappaleessa lisää Muutokset toteutussuunnitelmaan Kiireinen aikataulu aiheutti muutoksen toiseen toteutusvaiheeseen niin, että pariohjelmointi jouduttiin jättämään puolessa välissä kokonaan pois. Näin pystyttiin tekemään periaatteessa enemmän tehtäviä samassa ajassa, tosin koodin laatu kyllä kärsi tästä jonkin verran Havainnot Parien vaihtaminen ja mahdolliset ongelmatilanteet Hieman ennen toisen toteutusvaiheen puolta väliä tarjoutui hetkeksi tilaisuus soveltaa pariohjelmointia css-tyylitiedostojen ohjelmoimiseen käyttäen eri paria kuin ensimmäisessä vaiheessa. Parin vaihto tuotti heti aluksi tietynlaisen mukavuuden tunteen häviämisen, koska pari ei entuudestaan tuntenut toisiansa kovin hyvin. Tämä aikaansai tietynlaisen epämiellyttävän paineen ohjelmointiin, koska toisen koodia ei uskaltanut tai viitsinyt kommentoida yhtä herkästi ja rennosti kuin ensimmäisessä toteutusvaiheessa. Tämä tunne tosin hävisi parin päivän jälkeen ja yhteistyö alkoi sujua paremmin. Muita merkittäviä huomioita parin vaihto ei saanut aikaan. Tehokkaat ja tehottomat pariohjelmoinnin kohteet Toisessa toteutusvaiheessa ohjelmoinnin luonne tosiaan muuttui täysin, koska uuteen teknologiaan ja järjestelmään tutustuminen vei aikansa. Pariohjelmointia pyrittiin aluksi soveltamaan samalla tavalla kuin ensimmäisessä toteutusvaiheessakin, mutta viikon jälkeen havaittiin ohjelmoinnin luonteen muuttuneen enemmänkin uuden opiskeluksi ja olemassa olevan järjestelmän konfiguroinniksi 9/11
10 XML-tiedostojen avulla. Itse koodirivejä tuotettiin toisen toteutusvaiheen alussa todella vähän ja pariohjelmointi ei soveltunut tällaiseen kovinkaan hyvin. Hyvänä puolena pariohjelmointi toki toi tällaisissa olosuhteissa tiedon siirtymisen parin välillä, mutta tehokkuus oli hukassa. Lisäksi huonosti tunnetun järjestelmän debuggaaminen ei osoittautunut missään tapauksessa hyväksi kohteeksi pariohjelmoinnille varsinkin, kun järjestelmän kääntäminen ja käynnistäminen vei joka kerta minuutin verran. Pariohjelmointi ei myöskään soveltunut kovin hyvin css-tyylitiedostojen luomiseen ja muokkaamiseen, koska homma on enemmän muuta yksi arvo ja testaa -tyyppistä ohjelmointia kuin varsinaista koodin tuottamista. Yleisen keskustelun määrä ja häiriötekijät Kiireisemmässä ympäristössä häiriötekijöiden vaikutusten huomattiin tulevan paljon vahvemmin esille. Pariohjelmointi keskeytyi jatkuvasti kysymyksiin ja muuhun avuntarpeeseen. Tästä huomattiin nopeasti, että jatkuva keskeytys pariohjelmoinnissa tuhoaa koko tekniikan täysin. Vaikka pariohjelmointi tekee palautumisen helpommaksi, on se hyvin vaikeaa tilanteissa, joissa vuorotellen toinen joutuu työskentelemään aivan erilaisen ongelman parissa. Tähän on hyvin vaikea mitään ratkaisua suoraan keksiä, sillä tietenkin eteen tulleet ongelmat myös estävät muiden työskentelyä. Jos parien vaihtamista olisi pystytty harrastamaan kunnolla ja tieto olisi kiertänyt aina parien vaihtuessa, olisi häiriötekijöiden määrä varmasti ollut pienempi. 3.4 Yhteenveto Oikein hiottuna pariohjelmointi on varmasti loistava työväline, mutta se vaatii juuri oikeanlaisen työryhmän. Ryhmän olisi hyvä omata samanlainen huumorintaju ja tulla hyvin toimeen toistensa kanssa. Jos ryhmässä on edes yksi, joka ei vain tule toimeen muun ryhmän kanssa, voi se tuhota koko prosessin suoraan. Hyvän ryhmän lisäksi vaaditaan tietenkin pitkää harjoittelua. Seuraavassa on listattuna oleellisimmat havaitut plussat ja miinukset liittyen pariohjelmointiin: + Miellyttävämpää kuin yksin ohjelmoiminen + Koodi huomattavasti parempaa ja huolellisempaa + Soveltuu tarkkuutta vaativaan työhön + Oppiminen ja tiedon jakaminen + Tutustuminen toiseen - Hitaampaa - Parin pitää tulla toimeen keskenään - Ei toimi triviaaleissa ja paljon konfigurointia sisältävissä tehtävissä - Molempien tulee olla samaan aikaan motivoituneita, toisen huono päivä saattaa pilata kaiken - Hankalasti korjattavat ongelmat latistavat tunnelman 10/11
11 Viitteet [1] Williams Laurie A., Kessler Robert R. All I Really Need to Know about Pair Programming I Learned In Kindergarten, Viitattu Saatavissa: borgida/old/275/pairpgming.pdf. [2] Williams, Laurie, Robert Kessler. Pair Programming Illuminated Addison- Wesley, /11
VERSIONHALLINTA. PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D
VERSIONHALLINTA PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D Versio Päivä Tekijä Kuvaus 0.1 26.10.2005 Kaarlo Lahtela Ensimmäinen versio 0.2 10.12.2006 Lauri Kiiski Suomennettu 3 (8 ) SISÄLLYS
LisätiedotSEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus
SEPA päiväkirja BetaTeam Juho Mäkinen, 57796V, jvmakine@cc.hut.fi Jari Leppä, 42710V, jleppa@cc.hut.fi Versio Pvm Tekijä Kuvaus 0.1 10.11.2005 Juho Mäkinen Johdanto 1. 0.2 11.11.2005 J.Mäkinen, Käytäntöön
LisätiedotNäin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut www.helsinki.fi
Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut Ohjelmointikurssin järjestäminen Helsingin yliopiston Ohjelmoinnin MOOC-kurssimateriaalin avulla 15.4.2016 1 Linkki Tietojenkäsittelytieteen
LisätiedotConcurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
LisätiedotKevään 2010 fysiikan valtakunnallinen koe
120 Kevään 2010 fysiikan valtakunnallinen koe 107 114 100 87 93 Oppilasmäärä 80 60 40 20 0 3 5 7 14 20 30 20 30 36 33 56 39 67 48 69 77 76 56 65 35 25 10 9,75 9,5 9,25 9 8,75 8,5 8,25 8 7,75 7,5 7,25 7
Lisätiedot4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
Lisätiedotoppilaan kiusaamista kotitehtävillä vai oppimisen työkalu?
Oppimispäiväkirjablogi Hannu Hämäläinen oppilaan kiusaamista kotitehtävillä vai oppimisen työkalu? Parhaimmillaan oppimispäiväkirja toimii oppilaan oppimisen arvioinnin työkaluna. Pahimmillaan se tekee
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen
Lisätiedot1. JAKSO - SÄÄNNÖT Tavat, käytös, toisen kunnioittava kohtaaminen, huomaavaisuus, kohteliaisuus.
1. JAKSO - SÄÄNNÖT Tavat, käytös, toisen kunnioittava kohtaaminen, huomaavaisuus, kohteliaisuus. 1. Ympäristö a. Tässä jaksossa ympäristö rakennetaan pedagogiikkaa tukevien periaatteiden mukaisesti ja
Lisätiedot4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,
LisätiedotYleisiä kommentteja kokeesta.
Lukuvuoden fysiikan valtakunnallisen kokeen palaute.6. Palautteita yhteensä 454 oppilaan tuloksesta. Pistekeskiarvo 7,6 joka vastaa arvosanaa 6,5. Oppilaita per pistemäärä 5 5 5 5 4 6 8 4 6 8 4 6 8 4 6
Lisätiedot8/20: Luokat, oliot ja APIt
Ohjelmointi 1 / syksy 2007 8/20: Luokat, oliot ja APIt Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Kohti
LisätiedotT 76.5158 SEPA päiväkirja
T 76.5158 SEPA päiväkirja Pariohjelmointi Timo Hassinen, 60255H & Petri Palmila 60111S Versio Pvm Tekijä Kuvaus 1.0 2.12.2006 Hassinen Ensimmäinen versio 1.1 9.12.2006 Palmila Toinen versio 1.2 10.12.2006
Lisätiedot815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset
815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
LisätiedotKuka tekee arjen valinnat? Hyvää ikää kaikille seminaari Seinäjoki 18.9.2014 autismikuntoutusohjaaja Sanna Laitamaa
Kuka tekee arjen valinnat? Hyvää ikää kaikille seminaari Seinäjoki 18.9.2014 autismikuntoutusohjaaja Sanna Laitamaa Erityistarpeita vai ihan vaan perusjuttuja? Usein puhutaan autismin kirjon ihmisten kohdalla,
LisätiedotLiite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu
Liite 1: skenaariot ja PoC tulokset 1. Palvelun kehittäjän näkökulma Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Palvelun uusi versio on Palveluiden kehittäminen voitava asentaa tuotantoon vaikeutuu
LisätiedotMatopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö
Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1 Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut
LisätiedotAlkukartoitus Opiskeluvalmiudet
Alkukartoitus Opiskeluvalmiudet Päivämäärä.. Oppilaitos.. Nimi.. Tehtävä 1 Millainen kielenoppija sinä olet? Merkitse rastilla (x) lauseet, jotka kertovat sinun tyylistäsi oppia ja käyttää kieltä. 1. Muistan
LisätiedotKielellinen selviytyminen
BILBAO Kulttuurit kohtaavat Bilbaossa ollessani havaitsin täysin erilaisen päivärytmin. Päivät ovat todella pitkiä, sillä ihmiset viihtyvät myöhään ulkona viettäen aikaa perheen ja ystäviensä kanssa. Myös
LisätiedotProgram PRE. Keywords. BIM decision making, co-operation, Process, zip-process. Participants. NCC, Optiplan. RYM Oy rym.fi
Program PRE Keywords BIM decision making, co-operation, Process, zip-process Participants NCC, Optiplan RYM Oy rym.fi Valmisteluista. tiiviiseen työn touhuun. Vetoketjuprosessi Vetoketjuprosessin tausta-ajatuksena
LisätiedotOliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä
LisätiedotLefkoe Uskomus Prosessin askeleet
Lefkoe Uskomus Prosessin askeleet 1. Kysy Asiakkaalta: Tunnista elämästäsi jokin toistuva malli, jota et ole onnistunut muuttamaan tai jokin ei-haluttu käyttäytymismalli tai tunne, tai joku epämiellyttävä
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen
Lisätiedot<e.g. must, essential, conditional>
Käyttötapaukset Kurssin malli käyttötapauksille: Tila < List of users and the other systems that interacts directly with a system>
LisätiedotRAPORTTI 25.2.2011 SUORITETUISTA KÄYTETTÄVYYSTESTEISTÄ Luuppi-projekti
RAPORTTI 25.2.2011 SUORITETUISTA KÄYTETTÄVYYSTESTEISTÄ Luuppi-projekti Saila Oldén 1. JOHDANTO Tässä raportissa kuvataan perjantaina 25.2.2011 Luuppi-projektin tiimoilta suoritettujen käytettävyystestien
LisätiedotILOA JA LAATUA vaikeavammaisen ihmisen kohtaamiseen
ILOA JA LAATUA vaikeavammaisen ihmisen kohtaamiseen Kuka määrää? Kehitysvammaliiton opintopäivät 5.11.2015 Katja Burakoff Asiantuntija, puheterapeutti Tietotekniikka- ja kommunikaatiokeskus Tikoteekki
LisätiedotPalaute kirjasta: www.talentumshop.fi. Copyright 2011 Talentum Media Oy ja tekijät. Kansi: Sanna-Reeta Meilahti Taitto: NotePad Ay, www.notepad.
Talentum Helsinki 2011 Copyright 2011 Talentum Media Oy ja tekijät Kansi: Sanna-Reeta Meilahti Taitto: NotePad Ay, www.notepad.fi ISBN: 978-952-14-1723-8 ISBN: 978-952-14-1724-5 (sähkökirja) Kariston Kirjapaino
LisätiedotÄäniohjattu vilkkuvalo ledeillä toteutettuna
Ääniohjattu vilkkuvalo eillä toteutettuna Idea ei valitettavasti ole lähtöisin omasta päästäni - niin mukavaa kuin olisikin ollut riistää kunnia itselleen - vaan on keksijäperhe Ponkalalta. Olen usein
LisätiedotYhdistyspäivä
Yhdistyspäivä 7.4.2017 Esiintyminen Joissa ihmiset puhuvat toistensa kanssa ovat esiintymistilanteita (Pelias1992). Suppeammin vain teatteri-ilmaisu tai esteettisen tekstin esittäminen Tavallisimpia esiintymisiä
LisätiedotArviointi oppilaiden näkökulmasta
Arviointi oppilaiden näkökulmasta Raija Niemi Oppilaat vastasivat jakson päätteeksi seitsemään kysymykseen koskien ravintotiedon opiskelua terveystietojaksolla. Luokista 8 A oli työskennellyt melkein koko
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,
LisätiedotTiedelimsa. KOHDERYHMÄ: Työ voidaan tehdä kaikenikäisien kanssa. Teorian laajuus riippuu ryhmän tasosta/iästä.
KOHDERYHMÄ: Työ voidaan tehdä kaikenikäisien kanssa. Teorian laajuus riippuu ryhmän tasosta/iästä. KESTO: 15min 1h riippuen työn laajuudesta ja ryhmän koosta. MOTIVAATIO: Arkipäivän kemian ilmiöiden tarkastelu
LisätiedotCOTOOL dokumentaatio Riskiloki
Table of Contents 1 Johdanto.................................................................................. 1 1.1 Versiohistoria...........................................................................
LisätiedotJohdanto 1. Projektille esiteltävä versio. Kokemukset ja muutokset 3. Projektille esiteltävä versio. Iteraatio 2., suunnitelma
SEPA päiväkirja BetaTeam Juho Mäkinen, 57796V, jvmakine@cc.hut.fi Jari Leppä, 42710V, jleppa@cc.hut.fi Versio Pvm Tekijä Kuvaus 0.1 10.11.2005 Juho Mäkinen Johdanto 1. 0.2 11.11.2005 J.Mäkinen, Käytäntöön
LisätiedotT SEPA - päiväkirja: Design Patterns. ETL työkalu
T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
LisätiedotLuku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti
Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan
LisätiedotTähtitieteen käytännön menetelmiä Kevät 2009
Tähtitieteen käytännön menetelmiä Kevät 2009 2009-01-12 Yleistä Luennot Luennoija hannu.p.parviainen@helsinki.fi Aikataulu Observatoriolla Maanantaisin 10.00-12.00 Ohjattua harjoittelua maanantaisin 9.00-10.00
LisätiedotTaulukot. Jukka Harju, Jukka Juslin 2006 1
Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti
LisätiedotHarjoituksen ohjaaminen
Harjoituksen ohjaaminen 11.4.2016 1 Valmennustapahtuman johtaminen Valmentaja on valmennustapahtuman johtaja Valmentaja neuvoo, urheilija ottaa neuvot vastaan Johtamisen tarkoituksena suunnitella, ohjata
LisätiedotAlgoritmit. Ohjelman tekemisen hahmottamisessa käytetään
Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.
LisätiedotTyössäoppimassa Tanskassa
Työssäoppimassa Tanskassa Taustatietoja kohteesta: Herning- kaupunki sijaitsee Tanskassa Keski- Jyllannissa. Herningissä asukkaita on noin. 45 890. Soglimt koostuu yhteensä 50 hoitopaikasta. Soglimtissa
LisätiedotYksityisautoilijoille ABAX AJOPÄIVÄKIRJA
The difference is ABAX Yksityisautoilijoille ABAX AJOPÄIVÄKIRJA The difference is ABAX 2 The difference is ABAX ABAX SÄHKÖINEN AJOPÄIVÄKIRJA Tähän esitteeseen on koottu vastauksia kysymyksiin, jotka liittyvät
LisätiedotTarvikkeet: A5-kokoisia papereita, valmiiksi piirrettyjä yksinkertaisia kuvioita, kyniä
LUMATE-tiedekerhokerta, suunnitelma AIHE: OHJELMOINTI 1. Alkupohdinta: Mitä ohjelmointi on? Keskustellaan siitä, mitä ohjelmointi on (käskyjen antamista tietokoneelle). Miten käskyjen antaminen tietokoneelle
LisätiedotKASVATUSTIETEELLISET PERUSOPINNOT
KASVATUSTIETEELLISET PERUSOPINNOT Opiskelijan nimi Maija-Kerttu Sarvas Sähköpostiosoite maikku@iki.f Opiskelumuoto 1 vuosi Helsinki Tehtävä (merkitse myös suoritusvaihtoehto A tai B) KAS 3A osa II Tehtävän
LisätiedotOhjelmointi 1 / syksy /20: IDE
Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne
LisätiedotTik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti
Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu TESTIRAPORTTI LiKe Liiketoiminnan kehityksen tukiprojekti Versio: 1.1 Tila: hyväksytty Päivämäärä: 13.2.2001 Tekijä:
LisätiedotHYP on lyhenne sanoista Huomioivaa Yhdessäoloa Päivittäin HYP on asenne ja yhdessäolotapa:
Huomioivaa Yhdessäoloa Päivittäin ihmisille, jotka ovat vaarassa jäädä yksin HYP jakson käynnistyskokous Tutustu myös opasvihkoon Sheridan Forster: Huomioivan yhdessäolon malli HYP Mikä HYP on HYP on lyhenne
Lisätiedot+ 3 2 5 } {{ } + 2 2 2 5 2. 2 kertaa jotain
Jaollisuustestejä (matematiikan mestariluokka, 7.11.2009, ohjattujen harjoitusten lopputuloslappu) Huom! Nämä eivät tietenkään ole ainoita jaollisuussääntöjä; ovatpahan vain hyödyllisiä ja ainakin osittain
LisätiedotS-114.3812 Laskennallinen Neurotiede
S-114.381 Laskennallinen Neurotiede Projektityö 30.1.007 Heikki Hyyti 60451P Tehtävä 1: Virityskäyrästön laskeminen Luokitellaan neuroni ensin sen mukaan, miten se vastaa sinimuotoisiin syötteisiin. Syöte
LisätiedotT-76.5158 SEPA päiväkirja
T-76.5158 SEPA päiväkirja Ryhmä 14 Automatisoitu yksikkötestaus Mikko Luukkonen, 60549T Lauri Helkkula, 62820H Matti Eerola, 60686A Versiohistoria Versio Pvm Tekijä(t) Kuvaus 0.3 25.11.2007 Luukkonen,
LisätiedotKysely etäopetustuntien valvojille toukokuussa 2011 (vastauksia 13)
Kysely etäopetustuntien valvojille toukokuussa 2011 (vastauksia 1) Olen saanut riittävästi perehdytystä etätuntien valvojana toimimiseen kyllä en en tiedä 8 % Mistä asiasta/asioista olisit kaivannut lisää
LisätiedotA11-02 Infrapunasuodinautomatiikka kameralle
A11-02 Infrapunasuodinautomatiikka kameralle Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Lassi Seppälä Johan Dahl Sisällysluettelo Sisällysluettelo 1. Projektityön tavoite
LisätiedotTestaajan eettiset periaatteet
Testaajan eettiset periaatteet Eettiset periaatteet ovat nousseet esille monien ammattiryhmien toiminnan yhteydessä. Tämä kalvosarja esittelee 2010-luvun testaajan työssä sovellettavia eettisiä periaatteita.
Lisätiedot7 keinoa lisätä kirjasi myyntiä
7 keinoa lisätä kirjasi myyntiä montako tietokirjaa pitää myydä, että olisit suomessa bestseller? Bestseller-listalle Suomessa tietokirjalla on päässyt vuonna 2014 jos on myynyt yli 13500 kappaletta tai
LisätiedotYksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }
Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.
LisätiedotMiten kirjoittaa koulutusten kuvailevat sisällöt Opintopolkuun? Verkkopäätoimittaja Satu Meriluoto, OPH
Miten kirjoittaa koulutusten kuvailevat sisällöt Opintopolkuun? Verkkopäätoimittaja Satu Meriluoto, OPH Koulutuskuvauksen perustehtävä On hyvä aloittaa kuvauksen perustehtävän määrittelystä: - Opintoihin
LisätiedotTest-Driven Development
Test-Driven Development Ohjelmistotuotanto syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 14.9.2016 CS-A1111 Ohjelmoinnin peruskurssi Y1 14.9.2016 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,
LisätiedotTT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)
TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 12.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 12.9.2018 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 11.9.2019 CS-A1111 Ohjelmoinnin peruskurssi Y1 11.9.2019 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,
LisätiedotTITANIC TEMPPU, vaan ei karille
TITANIC TEMPPU, vaan ei karille Mikko Mäkelä Tuomo Rintamäki 17/10/10 Helsinki Metropolia University of Applied Sciences 1 Metropolia- ammattikorkeakoulusta Suomen suurin ammattikorkeakoulu, joka aloitti
LisätiedotKUINKA KIRJOITAT E-KIRJAN päivässä
KUINKA KIRJOITAT E-KIRJAN päivässä Valmentaja-Akatemia opettaa sinulle kuinka valmentajana pystyt kasvattamaan bisnestäsi, auttamaan useampia ihmisiä ja ansaitsemaan enemmän. www.valmentaja- akatemia.fi
LisätiedotPalautuskansio moduuli, ja sen vuorovaikutukset tehtävien annossa!
Palautuskansio moduuli, ja sen vuorovaikutukset tehtävien annossa! - Elikkä tässä ohjeessa näet kuinka voit tehdä peda.net palveluun koti/etätehtäviä tai vaikka kokeitten tekoa, tapoja on rajattomasti.
Lisätiedot5. OSITTAISINTEGROINTI
5 OSITTAISINTEGROINTI Kahden funktion f ja g tulo derivoidaan kuten muistetaan seuraavasti: D (fg) f g + f Kun tämä yhtälö integroidaan puolittain, niin saadaan fg f ()g()d + f ()()d Yhtälö saattaa erota
LisätiedotOulun seitsemäsluokkalaisten matematiikkakilpailu 18.1.2012 Tehtävät ja ratkaisut
Oulun seitsemäsluokkalaisten matematiikkakilpailu 18.1.2012 Tehtävät ja ratkaisut (1) Kolmen peräkkäisen kokonaisluvun summa on 42. Luvuista keskimmäinen on a) 13 b) 14 c) 15 d) 16. Ratkaisu. Jos luvut
LisätiedotKombinatorinen optimointi
Kombinatorinen optimointi Sallittujen pisteiden lukumäärä on äärellinen Periaatteessa ratkaisu löydetään käymällä läpi kaikki pisteet Käytännössä lukumäärä on niin suuri, että tämä on mahdotonta Usein
LisätiedotPeilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla
Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka
LisätiedotNero Juoksija hierontakaari Vaikuttavuustestaus
Nero Juoksija hierontakaari Vaikuttavuustestaus Vaikuttavuustestauksen sisältö Testaajaryhmä Tulokset Yhteenveto Tested-tunnus Vaikuttavuustestauksen sisältö Nero Juoksija hierontakaaren käytöstä saatava
Lisätiedot苏 州 (Suzhou) 30.3.-27.5.2015
苏 州 (Suzhou) 30.3.-27.5.2015 Hei kaikille lukijoille. Olen Tytti Teivonen, matkailualan opiskelija Luksiasta. Olin työssäoppimassa Suzhoussa Kiinassa hotellissa kaksi kuukautta. Hotelli, jossa olin, on
LisätiedotVerkkopokerijärjestelmä. Loppuraportti Ryhmä Kanat Ohjelmistotuotantoprojekti, syksy 2008
Verkkopokerijärjestelmä Loppuraportti Ryhmä Kanat Ohjelmistotuotantoprojekti, syksy 2008 Projektiryhmä Samuli Aalto-Setälä Jukka Kekälainen Jarno Kyykkä Mika Mielonen Mårten Smeds Otto Waltari Ohjaaja
LisätiedotOhjelmistojen mallintaminen. Luento 11, 7.12.
Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,
LisätiedotAhos-apurahan turvin tehty tutustumis/koulutusmatka Skotlannin vammaissulkapallon maajoukkue leirille
1 MATKARAPORTTI SKOTLANNIN SULKAPALLOKOULUTUKSESTA TIIVISTELMÄ Ahos-apurahan turvin tehty tutustumis/koulutusmatka Skotlannin vammaissulkapallon maajoukkue leirille Osallistujat: Tero Kallio, Kauko Oksanen,
Lisätiedot14. Hyvä ohjelmointitapa 14.1
14. Hyvä ohjelmointitapa 14.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen; ohjelmaa voidaan käyttää ja ylläpitää jopa vuosikymmeniä. Jotta koodin muuttaminen on mahdollista, sen
LisätiedotOnnistunut ohjelmistoprojekti
Onnistunut ohjelmistoprojekti 2.12.2008 Hermanni Hyytiälä Reaktor Innovations Oy Agenda Yritysesittely Keinoja onnistuneeseen ohjelmistoprojektiin Ihmiset Menetelmät Käytännöt ja työkalut Tulevaisuuden
LisätiedotTest-Driven Development
Test-Driven Development Syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole keksiä kaikkia mahdollisia
LisätiedotSynco TM 700 säätimen peruskäyttöohjeet
Synco TM 700 säätimen peruskäyttöohjeet Nämä ohjeet on tarkoitettu säätimen loppukäyttäjälle ja ne toimivat sellaisenaan säätimen mallista riippumatta. Säätimessä on kolme eri käyttäjätasoa, joista jokaisessa
LisätiedotHarjoitustyön testaus. Juha Taina
Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida
Lisätiedot5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi
5. Luento: Rinnakkaisuus ja reaaliaika Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Perusongelmat Jako prosesseihin Reaaliaika Rinnakkaisuus Rinnakkaisuus tarkoittaa tässä yhteydessä useamman kuin yhden
LisätiedotMelojan pieni solmuopas. Johdanto. Köysimateriaali. Solmun sitominen. Timo Kiravuo kiravuo@iki.fi
Melojan pieni solmuopas Timo Kiravuo kiravuo@iki.fi Johdanto Meloa voi solmuja osaamatta, mutta osaamalla muutaman perussolmun hän pärjää paremmin. Teltan saa kireäksi, pyykkinaru ei romahda, unohtunut
LisätiedotAgenda. Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali Harjoitustyöt Demoharjoitus Tentti ja arvostelu Muuta?
OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) 5op, to 12-14, 14, TB 109 Arto Salminen, arto.salminen@tut.fi Agenda Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali
LisätiedotMETEORIEN HAVAINNOINTI III VISUAALIHAVAINNOT 3.1 YLEISTÄ
23 METEORIEN HAVAINNOINTI III VISUAALIHAVAINNOT 3.1 YLEISTÄ Tässä metodissa on kyse perinteisestä. luettelomaisesta listaustyylistä, jossa meteorit kirjataan ylös. Tietoina meteorista riittää, kuuluuko
Lisätiedot13. Hyvä ohjelmointitapa (osa 1) 13.1
13. Hyvä ohjelmointitapa (osa 1) 13.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen tarvitaan ylläpitoa. Jotta koodin muuttaminen on mahdollista, on sen oltava myös muidenkin kuin
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast
LisätiedotMahtispalautteen antaminen
Opettajan vinkit Tekniset asiat 1. Luo luokkasi oman ope-tilisi kautta, täyttämällä luokan tiedot ja lisäämällä oppilaat yksitellen. Paina save and lock settings. Huomaathan, että sen ja tulosta QR-koodit.
LisätiedotYRITTÄJYYSPROJEKTI HYVÄNTEKEVÄISYYSILTA
YRITTÄJYYSPROJEKTI HYVÄNTEKEVÄISYYSILTA HANKEIDEA Hyväntekeväisyysilta, joka järjestetään jonkin paikallisen järjestön (esim. Lions clubin) kanssa Illan tuotto lahjoitetaan hyväntekeväisyyteen Illan aikana
LisätiedotTarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen
Tarjolla tänää: Ohjelmiston toteutuksesta JOT2007 CRC-kortit Testilähtöinen kehittäminen Uudelleenrakentaminen Voisiko ohjelmointi olla sittenkin suunnittelua? Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit
LisätiedotKielen hyvän osaamisen taso on 6. luokan päättyessä taitotasokuvauksen mukaan:
Luokat 3-6 A2-espanja AIHEKOKONAISUUDET luokilla 4-6 Ihmisenä kasvaminen korostuu omien asioitten hoitamisessa, ryhmässä toimimisessa ja opiskelutaitojen hankkimisessa. Kulttuuri-identiteetti ja kansainvälisyys
LisätiedotJohdatus rakenteisiin dokumentteihin
-RKGDWXVUDNHQWHLVLLQGRNXPHQWWHLKLQ 5DNHQWHLQHQGRNXPHQWWL= rakenteellinen dokumentti dokumentti, jossa erotetaan toisistaan dokumentin 1)VLVlOW, 2) UDNHQQHja 3) XONRDVX(tai esitystapa) jotakin systemaattista
Lisätiedot13/20: Kierrätys kannattaa koodaamisessakin
Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy
Lisätiedotiloq Privus - Ohjelmointiopas
iloq Privus - Ohjelmointiopas Hyvä Asiakkaamme, 1 Aloitusopas 4-5 1.1 Tässä oppaassa käytettävät symbolit 4 Kiitos, että olette valinneet tämän iloq tuotteen. Tutustu huolellisesti tähän ohjelmointioppaaseen
LisätiedotHeuristisen arvioinnin muistilista - lyhyt versio
Alla oleva kymmenkohtainen muistilista on sovellettu Jakob Nielsenin heuristisen arvioinnin muistilistasta (Nielsen, 1994), hyödyntäen Keith Instonen wwwpalveluiden arviointiin muokattua samaista listaa
Lisätiedotf(x, y) = x 2 y 2 f(0, t) = t 2 < 0 < t 2 = f(t, 0) kaikilla t 0.
Ääriarvon laatu Jatkuvasti derivoituvan funktion f lokaali ääriarvokohta (x 0, y 0 ) on aina kriittinen piste (ts. f x (x, y) = f y (x, y) = 0, kun x = x 0 ja y = y 0 ), mutta kriittinen piste ei ole aina
LisätiedotSuomen rahan arvoiset postimerkit 150 vuotta läviste auttaa määrityksessä Cyril Schwenson
Suomen rahan arvoiset postimerkit 150 vuotta läviste auttaa määrityksessä Cyril Schwenson Tänä vuonna tulee kuluneeksi 150 vuotta niiden käyttöön otosta. Tunnusomaista näille merkeille on niiden täysin
LisätiedotRobottikerhon suunnitelma syksylle 2015
Robottikerhon suunnitelma syksylle 2015 Tekijä Mika Laitila, 25.4.2015. Kerho on suunnattu yläkoululaisille. Ryhmän koko on 16 kerholaista + 2 ohjaajaa. Kerholla on käytössä 8 kappaletta LEGO Mindstorms
Lisätiedot... 5 ... 5 ... 5 ... 6 ... 7 ... 8 ... 8 ... 9 ... 11 ... 12
BILJARDI 2 3 SISÄLLYSLUETTELO 1. YLEISTÄ... 5 1.1 KOLMIO/ 9-KEHIKKO... 5 2. PELIN ALOITUS... 5 3. LYÖNTIVUORON VAIHTO... 5 4. VIRHELYÖNNIT... 6 4.1 ERILAISET VIRHEET... 6 4.2 RANGAISTUS VIRHEESTÄ... 7
LisätiedotVersio Päiväys Tekijä Kuvaus Tikkanen varsinainen versio
Testiraportti 26.2.2006 1/5 - Noheva II Testiraportti Versio Päiväys Tekijä Kuvaus 1.0 26.2.2006 Tikkanen varsinainen versio 1 Yleistä Toteutusvaiheen 2 virallinen testaus on muodostunut automaattisista
LisätiedotT SEPA - päiväkirja: Design Patterns. ETL työkalu
T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty
LisätiedotPERHEINTERVENTIO PÄIHDETYÖSSÄ. Toimiva lapsi & perhe menetelmät ammattilaisen arjen apuna 26.2.2008 Anne Ollonen
PERHEINTERVENTIO PÄIHDETYÖSSÄ Toimiva lapsi & perhe menetelmät ammattilaisen arjen apuna 26.2.2008 Anne Ollonen - Toimiva lapsi&perhe menetelmäkoulutus syksy 06 kevät 07 Beardsleen perheinterventio, lapset
Lisätiedot