Ensimmäisessä osassa sarjaamme näytimme, että ohjelmoijan työ on paljon muutakin kuin pelkkää koodin kirjoittamista.
Keskustelimme ensimmäisistä päivistä ohjelmistotalossa, eroista yliopiston ja todellisten projektien välillä sekä siitä, miksi kokemusta kertyy ennen kaikkea tekemällä.
Tänään siirrymme kysymykseen, jonka lähes jokainen junior esittää itselleen. Mitä minun siis pitäisi opiskella?
Internet tarjoaa vastauksia joka lähtöön. Jotkut sanovat, että React on pakollinen. Toiset väittävät, että tulevaisuus on Rustissa. Jotkut taas vakuuttavat, ettei kannata lähettää CV:tä ilman Dockeria, Kubernetesia ja viittä sertifikaattia.
Totuus on paljon rauhallisempi...
Älä opiskele kehyksiä. Opiskele ohjelmointia.
Tämä lause saattaa kuulostaa oudolta.
Yritykset julistavat rekrytointeja React Developerille, Java Developerille tai PHP Developerille.
Miksi siis sanomme, ettei kannata aloittaa kehyksistä? – Koska kehys on työkalu. Ja työkalut vaihtuvat nopeasti.
Vielä muutama vuosi sitten monet olivat varmoja, että AngularJS tulisi hallitsemaan vuosikymmeniä. Nykyään tilanne näyttää täysin erilaiselta.
Kehyksiä opit läpi urasi. Sen sijaan ohjelmoijan ajattelutapa pysyy kanssasi aina.
Siksi opettele ensin:
- ratkaisemaan ongelmia,
- analysoimaan vaatimuksia,
- suunnittelemaan ratkaisuja,
- lukemaan muiden koodia,
- kirjoittamaan selkeää koodia.
Teknologia on vain väline tavoitteen saavuttamiseen.
Ota yksi kieli hallintaan kunnolla
Tämä on ehkä yleisin aloittelijoiden virhe.
Tänään JavaScript. Huomenna Python. Ylihuomenna Go. Viikon päästä Rust. Kuukauden päästä C#...
Kahden kuukauden jälkeen huomaat, ettei mikään niistä ole hallussa hyvällä tasolla. Paljon parempi on valita yksi kieli ja todella oppia se.
Ymmärtää:
- miten muisti toimii,
- mitä viitteet ovat,
- miten poikkeuksia käsitellään,
- miten kokoelmat toimivat,
- mikä ero on synkronisella ja asynkronisella ohjelmoinnilla,
- miten virheenkorjaus (debuggaus) toimii.
Kun hallitset yhden kielen todella hyvin, seuraavien opettelu on paljon nopeampaa.
Opettele lukemaan dokumentaatiota
Eikö ole näyttävää? Ei lainkaan.
Erittäin hyödyllistä? Ehdottomasti.
Hyvä kehittäjä ei muista kaikkea. Hyvä kehittäjä tietää, mistä löytää luotettavan vastauksen.
Kehyksen tai kirjaston valmistajan dokumentaatio on lähes aina parempi tietolähde kuin satunnainen keskustelupalstan viesti kuuden vuoden takaa.
Tietojen hakemisen taito erottaa ne, jotka kehittyvät, niistä jotka kopioivat ja liittävät ratkaisuja loputtomasti internetistä.
Git ei ole "Lähetä"-painike
Jos pitäisi nimetä yksi taito, jonka kannattaa oppia mahdollisimman aikaisin, se olisi Git. Ei siksi, että se olisi muodikasta. Siksi, että lähes jokainen kehitystiimi käyttää sitä.
Git ei ole vain muutosten tallentamista. Se on yhteistyötapa. Branchaus. Pull request. Merge. Konfliktien ratkaiseminen. Muutoshistoria.
Ilman sitä on vaikea kuvitella työtä ammatillisessa tiimissä.
Ja vielä yksi neuvo. Älä koskaan lähetä projektia ZIP-tiedostona. Todella älä.
SQL – vaikka et haluaisi tulla tietokanta-adminiksi
Monet juniorit välttelevät SQL:ää. Se on virhe.
Suurin osa liiketoimintasovelluksista käyttää tietokantoja. Sinun ei tarvitse olla kyselyjen optimoinnin asiantuntija.
Mutta sinun pitäisi ymmärtää:
- mitä relaatiotietokanta on,
- miten relaatiot toimivat,
- mikä indeksi on,
- mikä ero on LEFT JOINin ja INNER JOINin välillä,
- miksi huonosti kirjoitettu kysely voi hidastaa koko sovellusta.
Nämä tiedot ovat hyödyllisiä lähes jokaisessa projektissa.
Linux ei pure
Sinun ei tarvitse heti luopua Windowsista. Mutta kannattaa oppia perusteet terminaalissa työskentelystä.
Suurin osa palvelimista pyörii Linuxin päällä.
Peruskäskyjen tuntemus:
- ls,
- cd,
- grep,
- cat,
- chmod,
- ssh,
voi säästää paljon aikaa.
Aluksi se tuntuu oudolta. Muutaman kuukauden jälkeen on vaikea kuvitella työskentelyä ilman terminaalia.
Docker – miksi kaikki puhuvat siitä?
Vielä muutama vuosi sitten ympäristön konfigurointi saattoi viedä koko päivän.
Jokaisella oli eri PHP-versio. Eri tietokanta. Eri kirjastot.
Docker yksinkertaisti tätä ongelmaa merkittävästi. Se mahdollistaa sovellusten ajamisen identtisessä ympäristössä riippumatta koneesta.
Pitäisikö juniorin heti tulla konttiasiantuntijaksi? – Ei.
Mutta on hyvä ymmärtää, mitä kontti on ja miksi lähes jokaisessa modernissa projektissa käytetään Dockeria.
AI on erinomainen mentori. Ei paras ohjelmoija.
Tämä on aihe, jota ei voi nykyään sivuuttaa.
ChatGPT, GitHub Copilot ja muut AI-työkalut voivat nopeuttaa oppimista valtavasti. Yhdellä ehdolla. Älä kopioi koodia ymmärtämättä sitä.
On paljon parempi kysyä:
- Miksi tämä ratkaisu on parempi?
- Miten tämä algoritmi toimii?
- Miten tätä voi optimoida?
- Mitkä ovat tämän lähestymistavan haitat?
AI selittää asioita erittäin hyvin.
Sen ei kuitenkaan pitäisi korvata omaa ajattelua.
Virheenkorjain on ystäväsi
Alussa useimmat meistä tekevät jotain tällaista: var_dump($zmienna);
Sitten: echo $zmienna;
Ja hetken kuluttua: console.log(dane);
console.log(dane2);
console.log(dane3);
console.log(dane4);
Me kaikki aloitimme näin. Mutta on hyvä oppia käyttämään debuggaajaa mahdollisimman pian.
Se antaa mahdollisuuden pysäyttää ohjelma missä tahansa, tarkastella muuttujien arvoja ja ymmärtää, mitä koodin suorittamisen aikana todella tapahtuu.
Tämä on yksi taidoista, jotka nopeuttavat kehitystä merkittävästi.
Minkä laitteen valitsen?
Tässä moni odottaa listaa kalliista tietokoneista useiden tuhansien hintalapuilla. Tarpeetonta.
Aluksi tärkeämpää kuin uusin prosessori ovat:
- mukava näppäimistö,
- nopea SSD-levy,
- riittävästi RAM-muistia,
- vakaa työympäristö.
RGB-valaistus ei nopeuta käännöstä. Kolme näyttöäkaan ei tee koodista parempaa.
Hyvän laitteen pitää helpottaa työskentelyä. Sen ei tarvitse tehdä vaikutusta somekuvissa (vaikka ulkonäöllä onkin merkitystä ;) )
Sanasto
Kehys
Valmis joukko työkaluja ja kirjastoja, jotka helpottavat sovellusten rakentamista tiettyjen sääntöjen mukaisesti.
Git
Versiohallintajärjestelmä, joka seuraa koodin muutoksia ja mahdollistaa monen kehittäjän yhteistyön samassa projektissa.
Docker
Alusta, joka mahdollistaa sovellusten ajamisen eristetyissä konteissa, jolloin ympäristö toimii identtisesti eri koneilla.
Virheenkorjain
Työkalu, jolla analysoidaan ohjelman toimintaa askel kerrallaan ja etsitään virheitä.
SQL
Kieli, jota käytetään relaatiotietokantojen kanssa kommunikoimiseen.
Yhteenveto
Hyvä kehittäjä ei tunne kaikkia teknologioita. Hän ei tunne kaikkia kehyksiä. Hän ei muista koko dokumentaatiota.
Hyvällä kehittäjällä on vankat perusteet.
Hän osaa analysoida ongelmia.
Hän osaa löytää tiedon.
Hän ymmärtää teknologioiden toimintaperiaatteet.
Ja juuri siksi hän oppii nopeasti uusia työkaluja.
Kehykset tulevat ja menevät.
Ohjelmointikielet kehittyvät.
Ajattelutapa pysyy arvokkaimpana taitona koko uran ajan.
Seuraavassa osassa näytämme, mitä senior-kehittäjän arki käytännössä on, miksi koodin tarkistukset (Code Review) ovat paras koulu ohjelmoinnille, mitä Clean Code todella tarkoittaa ja miksi lause "minulla toimii" saa monien kehittäjien hermostuneen hymyn.
