# Kehitysympäristö ## Kurssin opintojen omaa pohdintaa Kehitysympäristöt ovat itselle aiemmista opinnoista tuttuja. Ketteräkehitys projekti ja ICT-Toimeksiantoprojekti oppinoista olen oppinut sen verran, aiheeseen liittyen eri näkökulmia joiden perusteella uskon opiskeluun voin antaa omaa näkemystäni. Toki kaikki näkemykset ei vastaa täysin kaikkien lunastamaa mielipidettä. Pitkälti mielipiteeni perustuu omaan työkokeumukseen projektityöstä sekä Avoimen AMK opinnoista. ### Scrum Scrumin perusidean ymmärrän, kyllä täysin. Scrumin ymmärtäminen sen osalta että osaisin soveltaa viitekehyksen etuja on vielä lapsen kengissä. Scrumin toiminta edyllyttää vahvasti tiimin tuntemista, siten että ryhmä kykenee tekemään toimintansa suunnitelmallisesti sekä toisiaan tukia. Tämä on omalta osaltani vahvinta osaamista, että aikataulut pysyvät kurissa ja on tekemistä kaikilla. Ikävä kyllä täysin en oppinut tunnistamaan tiimin tehokkuutta, jotta saisin Scrumin avulla tiimistä irti kaiken hyödyn. Osaksi tähän liittyy, se kuinka meidän projekti ryhmä sopi kirjaamaan Jiraan tehtävät työt. Kirjausten kohdalla meidän olisi pitänyt tarkemmin sopia myös se mitä ja miten tätä puretaan teknisesti. Oma osaamiseni Jirassa on hallussa, muttei täysin. ### DevOps Ymmärrän DevOpsin idean siten, että lanseerataan sovellus esim. 31.12.2019. Toiminta sitä ennen tähtää sovelluksen kehittämiseen esim Scrumin avulla. DevOps kierrättää julkaistavia osia lopullisesta tuotteesta siten, että Deploy on käytännössä julkaisu prosessi jonka perusteella osa on valmis ominaisuus. Sitä vasten osia tehdään, kunnes ollaan loppullisesti päivämäärässä jolloin sovellus on valmis. Toiminta jatkuu edelleen samaa rataa julkaisun jälkeenkin kehitetään uusia päivityksiä. DevOPs on työkalu jonka avulla tiimi voi kommentoida ennen julkaisua sovelluksen osia ja saada kehitystä aikaiseksi ennen julkaisua. Julkaisun jälkeen käsitellään taas koko sovellusta tai sen osia näkökulmasta missä tiedetään olevan eniten kehittämistä tai jos on tuotu esiin uusia näkökulmia. Käyttöliittymä, uusia kenttiä, uusia autoja. Esimerkkinä nyt pelikehitys ideani. DevOps sisältää rakenteellisesti monipuolisesti kommentointi, versionhallinnan työkaluja joiden perusteella koko tiimi voi poimia sovellukseen itseä kiinnostavia osia joihin riittää osaamista tai ideoita. DevOps on elinkaari mallin taustalla ylläpitävä rakenteellinen kehitys ketju. Ketjun ideana on lanseerata tuote ja kehittää tuotetta elinkaaren aikana julkaisten päivityksiä valmiiseen sovellukseen tai luoda uusia ominaisuuksia. DevOps alustana voidaan ylläpitää Azuren Devops, joka niputtaa Windows ympäristön käyttöjärjestelmän sovellukset. DevOps palveluun on sisällytetty Kanban tai Scrum viitekehys malleja minkä avulla voidaan ylläpitää tehtävien hallintaa yhdestä paikasta. Sovelluskehitys, ylläpito, jakelu, päivitys yms on mahdollista hoitaa samasta paikasta. Toki lopullinen jakelu käyttöönottoon asti edellyttää käyttäjien itsensä tehtävää työtä. Esimerkkinä jakelukanava on kytketty SCCM järjestelmään yhdeksi päivitys lähteeksi. Kun uusin versio jaetaan se mainostetaan päivitettäväksi sovellukseksi SCCM välityksellä kohdennettulle käyttäjäryhmälle. ### ClockiFy Clokify on omalla kohdalla haasteellisin työkalu, kun pitäisi muistaa täydentää sovellukseen tunteja mitä tässä on tullut tehtyä. Jotenkin sen vain unohtaa vaikka se olisi kuinka helppoa. Eipä silti osaan kyllä ylläpitää vastaanlaisia sovelluksia. Kun mennään pidemmälle sovelluksen ideassa miten se oikeassa maailmassa menee sovellus antaa kyllä suuntaviivaa kouluprojekteissa paljo menis rahaa ja miten sitä pitää budjetoida. ![](https://i.imgur.com/9p8BM95.png) ### Slack Slackin kautta olen oppinut add-on liitokset ja Planning poker idean. Osaan liittää sovellukseen esim Trello :n ideaa jota pyrin demoamaan aiemmin kurssin alussa, jotta muutkin kokeilisivat Slack :n toimintaa. ### Office sovellukset ja ryhmätyöskentely ICT-toimeksiantoprojekti kurssin aikana huomasin kuinka tärkeää on sopia projektin alussa viestintään liittyvät reunaehdot ja arvioida niitä ja noudattaa tarvittaessa kehittää niitä. Ryhmässä työskentelty on haastavaa jos. Keskustelu ei tuota tulosta oikeaan suuntaan tuotteen tai julkaisun ulkoasun viimeistelyssä. Meidän ryhmällä oli paljon ideoita, mutta monesti kehitys työ junnaa paikoillaan ei ole näkemystä miten Python koodilla saa sensorin liikennöimään alustalle. Office ominaisuudet on rajattava ja ohjeistettava site, että jos hyödynnetään esim Word dokumentissa kommentointia. Miten kommentointia on tarkoitus tulkita ja hyväksyä tehdy muutokset. Version hallinta on Word sovelluksessa myös hyvä, mutta jos hyväksytään kaikki muutokset menetetään edellinen versio ja se voi olla jonkun mielestä väärä versio. Siksi on hyvä olla ennen versiota tehty backup tiedostosta ja jos tiedostossa on lukuja tai kaappaleita joiden kohdalla täytyy tulkita pilkun tai lauseiden paikkaa. Nämä voidaan vertailla Wordin Vertaa toiminnolla rivi-riviltä. Käyttäjien tehdyt muutokset voidaan tarkastella myös per rivi, jos niitä ei ole hyväskytty dokumentista. ### Versionhallinta Githubilla on olen jonkin verran tehnyt juttuja aiemmin opintojen aikana. Lähinnä kehitin Uipath sovellukselle Windows 2019 Active Directory RPA automaatiota, jonka oli tarkoitus saada kirjattua automaattisesti käyttäjiä Active Directory :n. Ohjelmisto jota kehitin ei lopta täysin toiminut, mutta opin silti monelta eri kantilta hyvin. Uipath sovelluksesta jäi vähän nälkä tutustua lisää. Github versiointi, projekti, To-Do käyttö Uipath sovelluksesta suoraan. Powershell scritin testaaminen varmuuskopiointi. # Kehitysprojekti harjoitus ## DevOps perehtyminen Olen osallistunut Kehitysympäristö opintoihin kahden syyn takia, että oppisin tiettyjä uusia näkökulmia jo opittuihin asioihin. Scrum opintoja on jo takana, mutta ne on Jiralla käyty. DevOps malliin en ole vielä perehtynyt tämän tuntien projekteja lukuunottamatta. Opiskelu on ollut antoisaa, koska on voinut opetella sitä asiaa mikä tuntuu ns tutulta viime syksyltä tai keväältä. Kehitin omaa Kehitysympäristön Agile projektia sen takia, että oppisin teoriaa miten saan opittua mahdollisimman paljon taas Scrumista ja DevOps rakenteesta. Planning Poker idean opettaminen projekti ryhmälle ja samalla oppia kuinka ideaa voisi käytännössä paremmin. Tämä tieto saada DevOps :lle ja kuinka vielä tämän tiedon hyödyntäminen käytännössä myöhemmässä vaiheessa projektia. Mutta myös se, että projektin aikana projektista joku sattuisi poistumaan. - Miten tämä pitää ottaa huomioon. - Tehdäänkö pisteytys pienemmän "Capacityn" perustella. Työmäärä ei vähene vaikka porukka vähenee. - Syy miksi haluan tätä hieroa, liittyy siihen että olen oppinut Scrum projektien aikana tuntemaan Velocityn, mutten ole osannut sitä hyödyntää käytännössä. - Velocity on tärkein asia minkä haluan saada projektissa opittua. ## DevOps Kehitysympäristö kurssille osallistuin DevOps näkökulmaa hakien. Sain siitä perehtymistä itselleni haettua. En ole koodari tuskin koskaan, mutta periaatteet pitää ymmärtää. Siksi halusin lähteä tutustumaan kuinka Ketterä kehitys menee DevOps ympäristössä. Sain ideoita, mutta toteutus tosin varmasti voisi osaltani olla laajempikin mitä tulee koodaamiseen. Java koodaus ei ole lähellä osaamistani, mutta luovuus voisi olla sitäkin lähempänä. Ymmärsin DevOps :n mobiili sovellusten kautta. Kehitä -> Testaa -> Kehitä -> Julkaise -> Kehitä -> Testaa Tämä idea oli mitä halusin nähdä sen perusteella kuinka sovellus taipuu. Sikäli osallisuuteni tällä kurssilla pohjautui pelkästään DevOps määrittelyyn. Ryhmän toiminta periaatteessa voisi Scrum periaatteiden perusteella mennä eritavalla todellisuudessa. Ainakin pitäisi mennä. Kukin tietäisi oman roolinsa ja mitä on tekemässä. DevOps rakenne täysin Scrumin periaatteiden mukaisesti ei toteutunut, koska ryhmällä ei ollut aikaa pitää Daily Scrumeja joten päivittäinen Scrumin rakenne Sprintissä ei toteutunut. Silti opin siitä kuinka se periaatteessa toimii. ## Henkilökohtainen arvio **Huom! Lisätkää kehittäjäblogin viimeiseksi kohdaksi kokonaisarvio omasta suorituksesta opintojaksolla: numeroarvosana 0-5 ja lyhyt sanallinen perustelu arviolle.** Lähtökohtaisesti oma suoritukseni jäi osin omien tai ryhmän aikataulujen jalkoihin. Ilmeisesti ryhmässä opiskelijoiden aikataulu vei ison osan ajasta viedä projektissa ylläpidetyn Scrumin noudattamisesta. Aloitin itse Scrumin periaatteellisen noudattamisen ja siksi kävimme Planning Pokeria läpi, mutta muiden ryhmän jäsenten toiminta keskittyi enemmän kehitystyöhön ja itse keskityin pelkästään Scrumin ylläpitämiseen. Joka alkuunsa sujui ihan hyvin, mutta pidemmälle edetessä kehitystyö olisi vaatinut aktiivista kommunikaatiota Daily Scrumin tai Retrojen pitämiseen. Tähän ei ryhmässä ollut aikaa. Jatkoin kuitenkin ryhmässä ja tutustuin DevOps :n periaatteisiin, jotta ymmärtäisin kuinka kehitystyö rakentuu siihen. Ymmärrän DevOps periaatteen, ja teoriassa voisin osata sen paremminkin tulevaisuudessa. Sain kurssista juuri sen mitä aloin hakemaan alunperin. Opin kurssilla muidenkin järjestelmien käyttöä ohjelmistoprojektissa. Scrumiin olisin halunnut saada enemmän projektin ylläpitämiseen otetta itseltäni sekä ryhmän jäseniltä. Kokonaisuus oman aktiivisuuden valossa antaisin itselle arvosanaksi H3 tai H4. Osallistuminseni kehitystyö verottaa arvosanasta jonkin verran, joten H3 voisi olla oikeampi arvosana koko kurssista.