ohjelmistokehityksestä kokemuksiamyy.haaga-helia.fi/~ict2tn007/materiaalit/haagahelia_k... ·...
TRANSCRIPT
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 opis-kelua
● Jatkuvasti uusialiiketoimintaan liitty-viä ongelmia ratkais-tavana
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ä
● 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)
Mihin tulisi pyrkiä?
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