Kokemuksia ohjelmistokehityksestä Kai Kulju & Heikki Naski
Esityksen runko Keitä me olemme Mitä ohjelmistokehitys on Mitä kykyjä tarvitaan
Naski Gee Technology Kahden hengen firma PHP, MySQL Edita Digitaalimurros: 800 hlöä vuonna 2006 ja 400 hlöä 2011 PHP, Oracle (DB), Zend Framework Codemate Bangladesh PHP, Oracle (DB)
Naski Soprano Brain Alliance henkilöstön vaihtuvuus 2012-2013 n. 90% PHP, JS, Ext, Yii, Zend Framework 1 ja 2 Fraktio porukkaa nyt 400% siitä mitä 2012 PHP, Silex, JS, Angular, Node.js Sytyke verkostoitumisyhdistys
Kulju - datanomi, tradenomi - Soprano Brain Alliance (2010-2014) - Reaktor (2014) - Fraktio (2015-) JavaScript, Node.js, PHP,
Fraktio - Perustettu 2012-19 vakituista työntekijää - Asiakasprojekteja - Kaikki samaa itsenäistä tiimiä - Paljon valtaa, paljon vastuuta - Erittäin avoin kulttuuri
Mitä ohjelmistokehitys on
Esimerkki päivästä Rakenna uutta toimintoa Optimoi täysin tuntemattoman koodipohjan suorituskykyä Tiimipalaveri Super urgent bugi havaittu eli korjaa Arvioi tarjousta
Muuta touhua Firman kehittämisen työpaja Teknologiatyöpaja (React, Scala + Play) Rekrytoitavien haastatteluja Esitelmien kuuntelua Tapahtumissa käymisiä (Reaktor DevDay, MySQL User Group, Scalar, HelsinkiJS)
Väärinymmärryksiä Joku alalla oikeasti osaa Projekteissa on selvät ja harkitut prosessit Projekteissa tehdään lähinnä uutta kehitystä Duuni on vaan duunia eli helppoa ja tylsää
Väärinymmärryksiä Alan duunit on pelkkää koodaamista Koodaaminen vie eniten aikaa Testaaminen on ikävää Työpaikan saaminen on helppoa ja firma kyllä opettaa Projekteissa on selvät tavoitteet
Väärinymmärryksiä Pelkällä hyvällä koodilla voi ratkaista liiketoiminnallisia ongelmia Erinomaisuus pelastaa projektin Ongelmat ratkeaa oikean dogman avulla (Scrum, Kanban, TDD, CI,...) Asiakkaat osaavat kyllä ostaa softaa
Miten softaa ostetaan Ei haluta ylläpidettävyyttä vaan kehitysnopeutta (mutta projekti elää 10 vuotta, ylläpitäjinä 10 erillistä tiimiä) Asiakas ei ole mukana omassa projektissaan Sopimuksia tulkitaan eri tavoin
Mitä tuloksia halutaan Toiminnallisuudet Nopea kehitys Virheiden vähyys eräässä projektissa laatua varmistettiin rankasti ja virheistä tuli heti huutoa toisessa projektissa äkkiä tuotantoon vaikka miten tulisi virheitä Suorituskyky
Mitä tuloksia halutaan Akateemisuus promiset funktionaalisuus oliot Käytännöllislaadullisuus TDD/BDD koodausstandardit uudet kirjastot
Olet tyhmä jos et käytä Nyt Automaattinen testaus Agile, Lean Funktionaalinen tyyli Feature branch Aiemmin Design patternit (erityisesti singletonit) Olio-ohjelmointi
Kaikkea ei voi tietää Ala on jatkuvaa opiskelua Jatkuvasti uusia liiketoimintaan liittyviä ongelmia ratkaistavana
Mitä kykyjä tarvitaan
Kunnioitus Ala on laaja Mielipiteitä on monia Tyhmät kysymykset ovat usein hyviä Linux, Git ja BSD koodausstandardit Fowler vs feature branch
Työkaluja Editori Versionhallinta Tehtävänhallinta Wikit
Työkaluja web-koodaajalle Profiloija Debuggeri Verkkoliikenteen analysointi DOMin tutkiminen Tietokantatyökalut
Toimintatapoja Arvioiminen Ongelman selvitys Toiminnon valmistuttua ollaan puolivälissä ansojen poistaminen dokumentointi Tee jotain
Toimintatapoja Varmistaminen tuleeko suoritus oikeasti tiettyyn kohtaan toimiiko korjaus eihän varmasti toimi ilman korjausta Kuolleen koodin hallinta Epädogmaattisuus mieti seurauksia äläkä sitä mitä tuhat bloggaajaa julistaa
Toimintatapoja Asioiden selvittäminen Oma-aloitteisuus Ajatusten lukeminen
Vian korjaaminen Toista Korjaa Etsi onko vastaavia ongelmia muualla Ehkäise muuta toimintatapoja niin ettei vastaavaa tapahdu
Vinkkejä Tee omia projekteja Lue Käytännöllisiä asioita Tieteellisiä asioita Opettele metodeja (XP, Agile, Lean yms.) mutta muista kohtuus
Vinkkejä Avoin lähdekoodi Laaja osaaminen eri asioista Jostain asiasta syvä osaaminen Kokemus asiakkaista on erityisen kysyttyä
Mihin tulisi pyrkiä? Ymmärrys eri ohjelmointikielistä ja paradigmoista yleisellä tasolla ohjelmointikielissä valtavasti yhteistä opitut asiat siirrettävissä kielistä toisiin helpottaa siirtymistä eri teknologioista toisiin Hyvä aiheeseen liittyvä kirja: Code Complete (Steve McConnell)
Arvon tuottaminen Loppukäyttäjän kokeman arvon tuottaminen todelliset käyttötilanteet tekemisen pohjana Maalaisjärkeä mukaan laadunvarmistus oikeissa paikoissa kehitysnopeus ylläpidettävyys
http://heikki-naski.blogspot.fi/ http://www.sytyke.org/ https://fraktio.fi