Janne Mäki

Pidän tärkeänä pysyä kehityksessä ajan hermolla ja opiskella uusia asioita ja teknologioita. Oman osaamiseni kehittäminen onkin minulle myös tärkeä harrastus polkupyöräilyn ohella. Teknologiat eivät kuitenkaan ole hopealuoti ohjelmistokehityksen ongelmiin, koska kaikki alkaa tarpeiden syvällisestä ymmärtämisestä ja selkeän ylläpidettävän koodin tuottamisesta.

Työkokemus

Evident Solutions Oy

Ohjelmistokehittäjä
2011–

Evident Solutions Oy: Sisäinen kehitys

Ohjelmistokehittäjä, Ylläpitäjä

2011–
Vastaan yrityksemme verkkolaite- ja palvelininfrastruktuurista. Suunnittelen, toteutan ja ylläpidän sisäisiä tietojärjestelmiä.

Kotlin, Typescript, Java, Gradle, Amazon AWS, Angular, DevOps, GIT, PostgreSQL, JPA, Hibernate, Linux, VMware, Scala, Javascript, Google Appengine, Maven, SBT, Mercurial, C#, Android, OpenGL, Spring, Spring MVC, Spring Boot, HTML, CSS, Sass, IntelliJ IDEA, ElasticSearch, OAuth, Gulp, Webpack, Node.js, Continuous Integration, Jenkins, SQL, GitHub Actions, Google-integraatio, Rest, Apache Web Server, Docker, Kubernetes, Dalesbred, Bootstrap, Apache Tomcat, VirtualBox

Digi- ja väestötietovirasto: Suomi.fi-verkkopalvelu

Ohjelmistokehittäjä

2018–

Toimin n. 10 hengen tiimissä, joka kehitti Suomi.fi-verkkopalvelua. Tiimi toimi tiiviissä yhteistyössä verkkotoimituksen kanssa, joka tuottaa palveluun sisältöä ja tilaa tiimiltä sisällönhallinnalliset työkalut. Olin mukana määrittelytyössä, jalostamassa määrittelyä konkreettisiksi suunnitelmiksi ja lopulta toteutustehtävissä.

Oma työnkuvani oli läpileikkaava eli olin suunnittelemassa tietokannan kuvauksia, toteuttamassa backend palveluita ja käyttöliittymäkerrosta. Aluksi palvelu oli toteutettu käyttäen Java ja Javascript -ohjelmointikieliä. Osa työnkuvaani olikin näiden muuntaminen tyyppiturvallisemmille Kotlin ja Typescript -ohjelmointikielille.

Yksi vastuullani olleissa kokonaisuuksista oli räätälöidyn React-pohjaisen sovelluksen muuttaminen toimimaan Server Side Rendering -tekniikalla. Olin myös mukana tekemässä perusparannustyötä, jonka seurauksena järjestelmän muuttamisen virheherkkyyttä saatiin laskettua.

Palvelun muita käyttötarkoituksia verkkotoimituksen tarjoaman sisällön lisäksi ovat erilaiset integraatiot ulkoisiin järjestelmiin. Tälläisiä ovat mm. väestötietojärjestelmä, palvelutietovaranto ja X-Road-palveluväylä. Integraatiot on toteutettu käyttäen SOAP- ja REST-tekniikoita. Olen osallistunut kaikkien näiden integraatioiden kehittämiseen.

Yksi palvelun kulmakivistä on ElasticSearch sovelluksen päälle toteutettu hakutoiminnallisuus, jonka parissa olen työskennellyt mm. suomen kielen perusmuotoistuksen tuen kanssa ja muiden haun tuloksien parantaneiden tekniikkojen parissa.

Tiimillä oli myös täysi DevSecOps vastuu AWS:ssa pyörivästä sovelluksesta. Osallistuin myös tähän työhön täysipainoisesti.

Kotlin, Typescript, Java, React, ElasticSearch, Amazon AWS, Amazon CloudWatch, Amazon EKS, Amazon S3, Amazon RDS, Amazon Route 53, DevOps, Kubernetes, Docker, Terraform, Ansible, Webpack, Gradle, Maven, Spring, Spring Boot, Spring Security, Node.js, Jersey, Jackson, GIT, SAML, Microservices, JMS, SQL, PostgreSQL, JPA, Hibernate, Rest, Javascript, Continuous Integration, Jenkins, Jira, Confluence, Prometheus, NGINX, Apache Fuseki, IntelliJ IDEA, OWASP, SonarQube, Python, Grafana, Shell script, Bootstrap, EAI, JUnit, HTML, CSS, Sass, Scrum, Sematic Web, Single-Sign-On, Turtle, XML, JSON, AngularJS, Linux, Ansible, Dalesbred, JDBC, PL/SQL, Flyway

Väestörekisterikeskus: Yhteentoimivuuden työkalut

Ohjelmistokehittäjä

2015–2018

Yhteentoimivuuden työkaluissa kehitettiin avoimeen lähdekoodiin perustuva työkaluperhe (http://yhteentoimiva.suomi.fi) vastaamaan julkishallinnon tarpeisiin mahdollistamaan käsitteistöjen, koodistojen ja tietomallien tuottaminen ja julkaisu. Vastuullani oli merkittävä osa järjestelmän arkkitehtuurista ja toteutuksesta, sekä käyttöliittymien toteutus kokonaisuudessaan. Suunnittelin ja toteutin järjestelmään keskitetyn käyttäjä- ja roolihallinnan, sekä SAML-pohjaisen SSO-kirjautumisen integraation.

Käyttöliittyvät toteutettiin käyttäen AngularJS ja myöhemmin Angular sovelluskehyksiä. Taustapalvelut rakennettiin Java-ohjelmointikielellä Spring Boot -sovelluskehyksen päälle. Tietokantoina käytettiin Fuseki ja PostgreSQL tuotteita.

Angular, AngularJS, Typescript, Java, Apache Jena, Apache Fuseki, JointJS, Bootstrap, GIT, Sematic Web, OWL, Webpack, Gradle, SAML, Rdf, JSON-LD, Turtle, Spring, Spring Boot, Spring Security, Jersey, Jackson, DevOps, SPARQL, gettext, IntelliJ IDEA, Maven, Node.js, JUnit, HTML, CSS, Sass, Scrum, Jasmine, Karma, Rest, XML, JSON, Apache Web Server, Linux, jQuery, Continuous Integration, Jenkins, Ansible, Dalesbred, Docker, ElasticSearch, JDBC, Flyway, PostgreSQL, Protractor

Elisa: OmaElisa

Ohjelmistokehittäjä

2011–2015

Toimin yli 10 hengen tiimissä, joka kehitti Elisan yritysasiakkaille suunnattua palvelua. Työtehtäviini kuului käyttäjätarpeen jalostaminen suunnitelmaksi ja suunnitelmien varsinainen toteuttaminen. Käyttöliittymät toteutettiin Wicket-sovelluskehyksellä käyttäen Java ja Scala ohjelmointikieliä. Taustaprosessoinnissa oli käytössä Elisalla itse rakennettu Java-pohjainen automaatiojärjestelmä, jonka jatkokehitykseen myös osallistuin.

Automaation virhetilanteista luotiin integraation kautta työtehtäviä manuaalikäsittelijöille. Muita integraation kohteena olleita järjestelmiä olivat laskutus- ja televerkkojärjestelmät. Integraatiotekniikkana käytettiin mm. SOAP:a.

Java, Scala, Wicket, Javascript, Maven, Spring, Jersey, Jackson, Oracle 10g, SQL, JPA, Hibernate, GIT, SOA, SOAP, Kanban, TDD, BDD, JDave, Jetty, Guice, Handlebars, Continuous Integration, Jenkins, Spring Remoting, IntelliJ IDEA, Quartz, JUnit, Java RMI, HTML, CSS, Sass, JMX, JDBC, Rest, Single-Sign-On, Apache POI, PL/SQL, Ajax, XML, JSON, ElasticSearch, AngularJS, GIT, EAI, Apache Web Server, Gulp, Linux, VMware, jQuery

Solita Oy

Ohjelmistosuunnittelija
2008–2011

Työsuhteeni Solitalla ohjelmistosuunnittelijana alkoi 2008 aluksi kesätyöntekijänä. Työsuhde jatkui opiskelujen ohessa osa-aikaisena työntekijänä ja lopulta tehden täyttä työviikkoa. Solitalla opin paljon teknologoista, asiakaskontakteista, tiimityöskentelystä ja projektimenelmistä. Asiakasprojektien lisäksi tutoroin uusia työntekijöitä ja olin mukana koodikatselmoinneissa.

Oikeusministeriö - Tietohallintokeskus: Edvard edunvalvontajärjestelmä

Ohjelmistosuunnittelija

2010–2011
Edvard on järjestelmä, jolla edunvalvojat hoitavat päämiestensä päivittäisiä asioita, kirjanpitoa ja muuta omaisuuden hallintaa. Vastasin järjestelmän käyttöliittymäkomponenttien rakentamisesta, autorisoinnista ja kirjanpitoon sekä palkkiolaskentaan liittyvistä käyttötapauksista.

Java, Wicket, Javascript, Spring, JPA, Hibernate, Scala, jQuery, Apache Tomcat, Jetty, Maven, SVN, Scrum, TDD, Eclipse, Hudson

Teollisuuden hajautetun tiedonhallinnan yhdistys: Sefram jatkokehitys

Ohjelmistosuunnittelija

2008–2010

Sefram on teollisuuden hajautetun tiedonhallinnan yhdistykselle sekä useille teollisuuden toimijoille tehty järjestelmä, joka hallitsee ja jakaa laitossuunnittelutietoa monitoimittajaympäristössä.

Jatkokehitysvaiheessa järjestelmään touteutettiin mallinnustyökalu ja järjestelmäintegraatioita. Vastasin järjestelmän seuraavien asioiden suunnittelusta ja toteutuksesta: RESTful (XML) rajapinta, Java ja C# API-kirjastot REST-rajapinnan päälle, Eclipse RCP/SWT teknologiaan perustuva mallinnustyökalu, integraatioita operatiivisiin järjestelmiin.

Java, C#, Eclipse RCP, Hibernate, Spring, Jetty, Maven, XML, XSD, Rest, Apache Tomcat, SVN, Javascript, Design Patterns, Eclipse, Quartz

Rengasvalmistaja: Oppimisympäristö

Ohjelmistosuunnittelija

2008–2011
Projektissa toteutettiin SCORM 2004 -standradin mukainen oppimisalusta. Alustaa varten toteutettiin myös LDAP-käyttäjäintegraatio. Vastuualueinani oli järjestelmän määrittely ja toteutus.

Java, JDBC, SQL, Hibernate, LDAP, Spring, Maven, Jetty, Apache Tomcat, SVN, Javascript, Eclipse, Quartz

Koulutus

Tampereen Teknillinen Yliopisto

Diplomi-insinööri

2003–
Tutkintoni koostuu ohjelmistotekniikan, hypermedian ja hajautettujen järjestelmien aineopinnoista sekä ohjelmistotuotannon syventävistä opinnoissta. Opinnoistani puuttuvat enää opinnäytetyöt.

Ilmajoen lukio

Ylioppilas

1999–2002
Valmistuin ylioppilaaksi Ilmajoen lukiosta 2002.

Osaaminen

Ohjelmointikielet

Työssäni olen käyttänyt Java, Kotlin, Javascript, Typescript, Scala ja C# ohjelmointikieliä. Tulen hyvin toimeen myös seuraavien ohjelmointikielten kanssa: Ruby, C/C++, Tcl. Suurena kiinnostuksen kohteenani on myös oppia lisää funktionaalisista kielistä kuten F# ja Haskell.

Ympäristöt ja sovelluskehykset

  • Web
    • Javascript: React, Angular
    • Java: Spring MVC, Wicket
    • .NET: ASP.NET MVC
  • Työpöytä
    • Java: Eclipse RCP
    • .NET: WinForms

Avainsanat

.NET, Agile, Ajax, Amazon AWS, Amazon CloudWatch, Amazon EKS, Amazon RDS, Amazon Route 53, Amazon S3, Android, Angular, AngularJS, Ansible, Ant, Apache Fuseki, Apache Jena, Apache POI, Apache Tomcat, Apache Web Server, BDD, Bootstrap, C#, CSS, CVS, Confluence, Continuous Integration, Dalesbred, Design Patterns, DevOps, Docker, EAI, Eclipse, Eclipse RCP, ElasticSearch, Flyway, GIT, GitHub Actions, Google Appengine, Google-integraatio, Gradle, Grafana, Guice, Gulp, HTML, Handlebars, Hibernate, Hudson, IntelliJ IDEA, IoC, JDBC, JDave, JEE, JMS, JMX, JPA, JSON, JSON-LD, JUnit, Jackson, Jasmine, Java, Java RMI, Javascript, Jenkins, Jersey, Jetty, Jira, JointJS, Kanban, Karma, Kotlin, Kubernetes, LDAP, Linux, Maven, Max OS X, Mercurial, Microservices, Mockito, MySQL, NGINX, Node.js, OAuth, OWASP, OWL, Open Source, OpenGL, Oracle 10g, PL/SQL, PostgreSQL, Prometheus, Protractor, Python, Quartz, Rdf, React, Rest, Ruby on Rails, SAML, SBT, SOA, SOAP, SPARQL, SQL, SVN, Sass, Scala, Scrum, Sematic Web, Shell script, Single-Sign-On, Sitemesh, SonarQube, Spring, Spring Boot, Spring MVC, Spring Remoting, Spring Security, TDD, Tcl, Tcl/Tk, Terraform, Turtle, Typescript, VMware, VirtualBox, Webpack, Wicket, Windows, XML, XPath, XSD, gettext, jQuery

Kielet

suomi äidinkieli
englanti erinomainen
ruotsi perusteet
saksa perusteet

Suosittelijat

Tuuli Krekelä, Johtava asiantuntija, palveluomistaja, Digi- ja väestötietovirasto, +358504356057, tuuli.krekela@dvv.fi

Risto Ollikainen, Project Advisory Senior Manager, KPMG, +358405073479, risto.ollikainen@kpmg.fi