Kategoria: Uncategorized

Nordic Business Forum, 1 päivä, kasvu

Nordic Business Forum, 1 päivä, kasvu

Nordic Business Forum 2019 käsitteli tänä vuonna kasvua. Ensimmäisenä päivänä tarkasteltiin kasvua lisäämällä liikevaihtoa. Keskeiseksi tekijäksi nostettiin innovaatiot. Costas Markides, tohtori Lontoon Business Schoolista, aloitti kysymyksellä: Miten teen yrityksestäni innovatiivisemman? Jos joku kysyy tätä, ampukaa hänet, Costas sanoi.

On olemassa kaksi innovaatiotyyppiä: kasvu- ja disruptio-innovaatio (incremental ja disruptive). Kasvuinnovaatioiden avulla tehostetaan olemassa olevaa liiketoimintaa. Esimerkiksi antamalla asiakkaalle pahvilappu kouraan, jossa joka 9. käynti on ilmainen. Tätäkin voi säätää, koska asiakkaan pitää kerätä kahdeksan leimaa. Innovaatio on antaa erityisille asiakkaille kymmenen leiman lista, josta jo kaksi ensimmäistä on leimattu valmiiksi.

Onko tässä mitään järkeä? Molemmissa tapauksissa asiakkaan pitää kerätä kahdeksan leimaa. Ihmisen psykologia kuitenkin yllättää, koska ihmiset haluavat saada asiat valmiiksi. Näin ollen perinteinen kahdeksan leiman kanta-asiakkuus tuo noin 17 % kasvun liikevaihtoon, mutta kymmenen leiman kortti jopa 35 % kasvun liikevaihtoon! Innovaatio!

Disruptiivinen innovaatio sen sijaan yrittää murtaa totuttuja toimintamalleja. Tutkimustiedon mukaan ihmiset käyttävät kuukaudessa 20 dollaria parranajovälineisiin. Tähän saumaan iskee Dollar Shave Club (https://www.dollarshaveclub.com/). Suosittelen katsomaan heidän mainosvideonsa. Se toimii. Se perustettiin 2011 ja myytiin 2016 miljardilla Unileverille. Aika hyvä innovaatio ja tuotto viidelle vuodelle.

Huomaa, molemmat innovaatiomallit poikkeavat toisistaan.

Kasvuinnovaatiot vaativat syntyäkseen vain innovaatiota tukevan ympäristön. Ympäristön, jossa tuetaan kokeiluja, virheiden tekemistä, kysymistä ja kyseenalaistamista, rohkaistaan katsomaan ulospäin ja viimeiseksi rohkaistaan katsomaan siilojen yli.

Disruptiiviset innovaatiot eivät kuitenkaan synny näin.

Niiden syntymiseen löytyy useita eri malleja.

Nespresson tapa. Luodaan muusta yritystoiminnasta erillinen beta, jossa saa tehdä vapaasti mitä haluaa.
Googlen tapa. Investoidaan startuppeihin ja skaalataan ylöspäin se tai ne, jotka menestyvät.
Toinen nopea tapa: Löydä innovatiiviset ihmiset ja innovaation tapauksessa ota innovaatio heiltä.
Innovation accelerator. Yrityksen sisäinen innovaatiomoottori, jossa eri tiimit kehittävät ideoita määritellyssä ajassa. Näistä parhaita kehitetään eteenpäin.

Innovaation luominen vaatii sekä innovoimisen että skaalauksen eli liiketoiminnan laajentamisen.

Seuraavan kerran, kun joku kysyy: Miten teen yrityksestäni innovatiivisemman?
Selvitä mitä hän tarkoittaa!

Päivän kuluessa kerrottiin miten saadan tuotettua innovaatioita. Alexander Osterwalder kertoi miten teet yrityksestä voittamattoman. Hän tiivisti: Innovoi tai kuole.

Kodak Moment nousee yritysmaailmassa vahvaksi esimerkiksi. Kyseinen analogista filmiä myyvä yritys innovoi itsensä ulos markkinoilta. Kodak tuli markkinoille ja tullessaan innovoi kuluttajille suunnatun kameran. Kameroiden yleistyessä Kodak työllisti 180 000 henkeä. Yrityksen tärkein tuote oli analogisen filmin myyminen. Tästä huolimatta yrityksen matka päättyi digitaalikameran tultua markkinoille. Itse asiassa Kodak kehitti ensimmäisen digitaalikameran.

Ostervalder nimesi innovoivan yrityksen voittamattomaksi yritykseksi. Hän nimesi neljä keinoa, joilla siihen päästään.

  1. Harmoonisen elämän kulttuuri, innovointi ja toteutus
    Jos haluat ymmärtää kulttuurin, se pitää kartoittaa.
    Business model canvas => Culture map.
    Miten siis siirrytään nykyisestä kulttuurista innovaatiokulttuuriin?
  2. Johtajat ymmärtävät ja tukevat innovaatioita.
    Kuinka monta projektia tarvitaan, jotta voidaan tuottaa yksi miljardin projekti?
    Innovaatiomenestys

    Miten löydetään innovaatio?
    Pienessä skaalassa,
    10 ideasta 6 epäonnistuu, 3 onnistuu jotenkuten ja 1 menestyy.

    Suuressa skaalassa, tutkimusten mukaan 1000 projektista 4 % nousee miljoonaprojektiksi.
    250 projektista 162 epäonnistuu, 87 onnistuu jossain määrin ja 1 on nespresso.

    Innovaatiokulttuurin löytäneistä yrityksistä hyvä esimerkki on PingAn ja toinen usein esiin nostettu on Amazon. Molemmissa innovoidaan laajasti, kokeillaan ja epäonnistutaan, mutta löydetään myös valtavia innovaatioprojekteja.

  3. Organisaatiosuunnittelu luo innovaatioille voimaa toimia
    Logitechin johtaja Bracken Darrell käyttää 40 % – 50 % ajastaan innovaatioiden luomiseen.Heidän maailmassaan löytyy analogia kasvien maailmasta.
    Puita, joiden varassa yritys seisoo, ovat – PC:n oheislaitteet.
    Kasveja, joista voi kasvaa jotain suurta, ovat: Bluetooth kaiuttimet, pelihiiret ym.
    Siemeniä, runsaat innovaatiot.
  4. Maailmanluokan keinot innovoida.
    Bosch antaa vuosittain rahaa innovaatiotiimeille, joista parhaat jatkavat aina seuraavaan vaiheeseen, kunnes innovaatiot jalostuvat loppuun asti.

    2 x 25 tiimiä aloittaa, niillä on 12 viikkoa aikaa löytää faktoja miksi heidän innovaationsa toimii.
    70 % tiimeistä karsitaan pois.
    30 % tiimeistä jatkaa 4-6 kk.
    70 % tiimeistä karsijaan
    jne.Vuosien aikana menestyneitä projekteja syntyi 10-20, kun aloittavia tiimejä oli 169.

    Amazon seisoo innovaatiokultturin puolella. Jeff Bezos kirjoitti 2015 osakkeenomistajille:

    One area where I think we are especially distinctive is failure. I believe we are the best place in the world to fail (we have plenty of practice!), and failure and invention are inseparable twins. To invent you have to experiment, and if you know in advance that it’s going to work, it’s not an experiment. Most large organizations embrace the idea of invention, but are not willing to suffer the string of failed experiments necessary to get there. Hardest part is to find feeling that failure is OK! Teams decide who will go on.

Vaikeinta on saada tiimeille tunne, että epäonnistuminen on OK!

Underscore js – JavaScriptin muistilista

Frontin tekeminen ja JavaScript? Underscorejs ratkaisee huolesi tarjoamalla pikaisia vastauksia tyypillisiin ongelmiin. Tavallisesti ongelmiin liittyvät vastaukset joutuu kaivamaan API:sta tai StackOverflowsta, mutta JavaScriptin puolella ratkaisukokoelma helpottaa elämää.

Näyttökuva 2017-03-26 kello 15.58.37

Underscoren kautta löytää hyviä esimerkkejä tyypillisiin funktiokutsuihin. Positiivisena puolena voi mainita funktiot. Jos osaat funktionaalista ohjelmointia, JavaScriptin opetteleminen tätä kautta käy helposti. Mikäli et vielä ymmärrä funktioita, niin esimerkkien avulla opit lisää.

Osaamistasi saat lisättyä codewarsin kautta, kuten kerroin aiemmin.

Riemullista JavaScriptailua!

Code combat – ohjelmointia nuorille

Halusin antaa maistiaisen 9-vuotiaalle pojalleni ohjelmoinnista, mutten tylsän ”Hello World!”-tekstin muodossa. Onneksi löysin Code Combat -jutun.

Kyseessä on peli, jossa hahmo liikkuu ohjelmoimalla. Oletuskielenä käytetään pythonia, mikä näyttää hyvin läheisesti puhutulta kieleltä. Toki tässä pienenä sivujuonteena olimomainen toteutus, koska tämän pelin mekaniikka vaatii sitä. Kuvakaappauksissani näkyy JavaScript-kieli, koska halusin kokeilla sitä.

Poikani tykästyi peliin. Hän kuunteli alkuun pari ohjetta ja pelasi ensimmäiset 12 kenttää ihan itsekseen. Muutamassa kohdassa ohjasin häntä, kuten muuttujien tai if-lohkojen tapauksessa.

Ensimmäisessä vaiheessa pelaajalle annetaan tavoitteet. Kun ne näkyvät selkeällä suomenkielellä, niin peruskoululainen ymmärtää mitä pitää tehdä. ”Älä koske piikkeihin. Kerää jalokivet. Älä näyttäydy jätille.”

Toisessa vaiheessa pelaaja ratkaisee kentän. Käytännössä poikani klikkaili move-komentoja ruudun keskeltä ja muokkasi niitä tarvittaessa. Tässä kentässä niitä ei tarvitse muokata, mutta joissain kentissä pitää asettaa hyökkäykselle kohde tai koordinaatit liikkumiselle.

Lopuksi ajetaan kenttä. Aikuinen ohjelmoija haluaa ensin suorittaa kentän ja uskaltaa vasta sitten napsauttaa ”Valmis”. Lapsi napsauttaa suoraan valmis.

Ongelma nouse eteen, kun suomenkielinen lokalisointi loppui. Code Combat on jaettu erilaisiin vaiheisiin: linna, metsä jne. Linna on lokalisoitu, se tarkoittaa ilmaisversiossa 12 kenttää. Sen jälkeen seikkailija pääsee metsään, missä tehtävänannot muuttuvat englanninkielisiksi. Huomasin poikani kiinnostuksen tyrehtyvän kielen vaihtuessa.

Poikani ymmärtää englannin alkeita, muttei siinä määrin, mitä pelin pelaaminen vaatisi. Jos pelin kaikki ilmaiset kentät saisi lokalisoitua, hän varmaan jaksaisi rakentaa pieniä ohjelmia pitkään.

Code combat on hyvä avaus ohjelmoinnin maailmaan. Pelillinen maailma tarjoaa timantteja kentän ratkaisemisesta ja erilaisia bonuksia, jos kentän ratkaisee siististi. Tällaisilla ratkaisuilla saa nuoren ohjelmoinnin pariin.

Emacs työvälineenä

Kirjoitin clojurea syksyn emacsilla ja se sujui hyvin. Suurin osa ajastani menee siis koodin rakenteen ja toiminnan pohtimiseen. Saan näppärästi avattua haluamani tiedostot suoraan editoriin ja se tukee kohtuullisesti kirjoittamista.

Emacsin lisäksi pidän melko usein avoinna clojuren cheat sheet -sivua tai clojurescriptin vastaavaa.

Käyttö

Tavallisesti jaan ruudun kahteen tai kolmeen osaan. Yhdellä puolella näkyy koodi ja toisella yksikkötestit. Mikäli teen rajapintaan koodia, niin yhdellä puolella on tietenkin esim. palvelimen rajapinnat näkyvissä ja toisella puolella asiakas/web-sovelluksen puoli, joka kutsuu rajapintoja. Usein testaan koodin toimintaa myös REPL-ikkunassa.

Ikkunoiden ja tiedostojen välillä liikkuminen tapahtuu todella sujuvasti. Näppäinoikopolut purevat erittäin hyvin. Koodia saa siistittyä, leikattua ja liimattua vaivattomasti. Siihen emacs on tehty, kirjoittamiseen. Sen lisäksi yksikkötestit saa pyörimään jatkuvasti tai niitä voi pyöritellä komennoilla. Sekin toimii fantastisesti. Yksikkötestien ajaminen on paljon nopeampaa ja kätevämpää kuin Visual Studiolla, jota olen käyttänyt noin 10 vuotta.

Clojurea kirjoittaessani testaan usein koodia REPL-ikkunassa. Koodin namespacen saa ladattua näppärästi käyttöön ja voin ajaa haluamiani funktioita ”livenä”. Se helpottaa debuggausta, yksikkötestien suunnittelua ja funktion toiminnan testaamista.

Nähdäkseni emacsin valtteja ovat nopeus, koko ruudun tehokas käyttäminen ja laajennettavuus.

IDEn edut

IDE voittaa emacsin helposti koodin laadun tarkkailussa. Sekä Visual Studiosta, Eclipsestä ja InteeliJ:stä löytyy paljon lisäominaisuuksia, jotka helpottavat koodaamista.

Käyttömätön koodi nostetaan esiin paljon helpommin. IDEt yleensä ehdottavat (tai ainakin niihin lisätyt plugarit) kuinka koodia voisi parantaa. Koodausta helpottavat täydennystoiminnot ovat älykkäitä, toisin kuin emacsissa. Emacs tunnistaa aiemmin käytetyt funktiot, muttei osaa ehdottaa kirjastosta löytyviä vaihtoehtoja.

Sekä emacs että IDEt osaavat yhtä hyvin etsiä ja korvata tekstiä. Funktioiden tai metodien uudelleen nimeäminen sen sijaan onnistuu kunnolla vain IDEn kautta. Nimien tai nimiavaruuksien refaktorointi on ehdottomasti IDE-juttu.

Ohjelmakoodin rakenteen näkee IDEn olio tai sovellusrakenteesta, jos rakenne on yksinkertainen. Esimerkiksi MVVM tai simppeli Reactin dispatcher, subscriber -rakenne näkyy paremmin IDEstä kuin emacsista. Tosin kumpikaan ei pelasta jos kyseeseen tulee kompleksinen rakenne, kuten Prism tai laajalle levinnyt legacy-järjestelmä.

Kipeimmin emacsissa minua pistivät puuttuvat uudelleennimeämisominaisuudet, hyvän bookmark-järjestelmän puute ja heikko tuki koodin laadun tarkkailuun. Olisin kaivannut vihjeitä miten asiat koodataan. Projektissani asia korjaantui mob-koodauksessa ja pull request -arvioinneissa.

IDEssä käytettävien useiden näppäinten oikopolkujen sijaan emacsissa kirjoitetaan usea näppäinoikopolku peräkkäin. Esimerkiksi yksikkötestit voi ajaa komennolla (ctrl+c, ctrl+t, ctrl+n) IDEssä suositaan usean näppäimen samanaikaista painamista. IDEssä komennon voi siis käynnistää ”heti”.

Huomasin myös joidenkin emacsin lisäosien käytön vaativan järjettömiä näppäinoikopolkuja eli komennot menivät neljän tai useamman komennon syvyyteen. Se ei tuntunut käytettävältä. Niin pitkiä komentosarjoja ei edes pysty helposti muistamaan.

Lopuksi

Tuntui mukavalta kokeilla emacsia, mutta projektin laajentuessa jäin kaipaamaan useamman tiedoston refaktorointiin liittyviä ominaisuuksia. Halusin myös käyttää lyhyempiä näppäinoikopolkuja, mutta olenko valmis uhraamaan nopeuden käyttömukavuuden alttarille?