Opiskelen ohjelmistoalaa ja olen harrastepohjalta tehnyt vähän vaikka mitä, kuitenkin pyrkimys olisi syventää osaamista tulevien opiskeluvuosien aikana, muutenkin kuin tekemällä ne koulun pakolliset harjoitukset. Vaikka olenkin ohjelmointia harrastanut monta vuotta, en koe olevani edes ns. keskitason koodari, vaikka olen rahaakin joistakin tekemistäni jutuista jo saanut. Kokemusta puuttuu mielestäni varsinkin isommista projekteista, kaikki tähän astiset ovat olleet varsin pieniä juttuja.
Kysyn siis teiltä vanhemmilta jo mahdollisesti työelämässä olevilta nörteiltä, mitä ohjelmointiaiheisia kirjoja olette lukeneet ja voisitte suositella luettavaksi? Ja toinen kysymys; mihin asioihin kannattaisi opiskelua painottaa jos haluaisi olla mahdollisimman "hyvillä eväillä" liikenteessä työelämässä noin 3-4 vuoden päästä? Voit myös lyhyesti kertoa omasta työllistymisestäsi koulun jälkeen, mitkä asiat mielestäsi vaikuttivat ratkaisevasti paikan saamiseen jne.
Minun mielestä kirjoista oppii perusasiat mutta spesiaaleihin ongelmiin niistä ei löydy aina vastauksia. Hyödyllisimpiä kirjoja ovat olleet yleistä teoriaa opettavat kirjat. Luulisin, että aika pitkälle pääsee jos valitsee jonkun yliopiston tietojenkäsittelytieteen koulutusohjelman oppikirjat. Itselläni ei ole palkkatyötä, mutta muutama tuttava on työllistynyt erikoistumalla sellaisen kapean alan asiantuntijaksi, jollaista osaamista ei ole monellakaan maailmassa. Itsekin yritän samaa.
Jaska kirjoitti:
Minun mielestä kirjoista oppii perusasiat mutta spesiaaleihin ongelmiin niistä ei löydy aina vastauksia. Hyödyllisimpiä kirjoja ovat olleet yleistä teoriaa opettavat kirjat. Luulisin, että aika pitkälle pääsee jos valitsee jonkun yliopiston tietojenkäsittelytieteen koulutusohjelman oppikirjat.
Meillä ei ainakaan mitään kirjoja ollut. Ohjelmoinnin alkeiskurssilla vedettiin jollain kirjakaupasta saatavalla java-kirjalla, joka oli varmaan sama kirja, jota yritin itsenäisesti lukea lukioaikana mutta kesken jäi. Samoin kävi c++:n kanssa kirjaa lukiessa.
Microsoftilla on sellainen opus kuin Code Complete, joka on kehuttu yleisohjelmoinnillinen opus. Minäkin ostin sen itselleni, mutta lukeminen jäi taas kerran kesken. En ole kirjojen ystävä. Aion kuitenkin vielä joskus kokeilla Code Completen läpäisyä.
Jaska kirjoitti:
Minun mielestä kirjoista oppii perusasiat mutta spesiaaleihin ongelmiin niistä ei löydy aina vastauksia.
..
muutama tuttava on työllistynyt erikoistumalla sellaisen kapean alan asiantuntijaksi, jollaista osaamista ei ole monellakaan maailmassa. Itsekin yritän samaa.
Mitä siis ovat nämä perusasiat ja kapean alan asiantuntemus? Lähinnä sitä termistöä haen, mitkä ovat ne taikasanat joita lähteä opiskelemaan ja joidenka osaamisesta voisi kuvitella olevan kysyntää lähitulevaisuudessa. Siksi kyselen, koska monet täältäkin varmasti työkseen tekevät näitä juttuja ja tietävät mihinpäin ala on kehittymässä.
The Alchemist kirjoitti:
Meillä ei ainakaan mitään kirjoja ollut. Ohjelmoinnin alkeiskurssilla vedettiin jollain kirjakaupasta saatavalla java-kirjalla, joka oli varmaan sama kirja, jota yritin itsenäisesti lukea lukioaikana mutta kesken jäi. Samoin kävi c++:n kanssa kirjaa lukiessa.
Microsoftilla on sellainen opus kuin Code Complete, joka on kehuttu yleisohjelmoinnillinen opus. Minäkin ostin sen itselleni, mutta lukeminen jäi taas kerran kesken. En ole kirjojen ystävä. Aion kuitenkin vielä joskus kokeilla Code Completen läpäisyä.
Ei meilläkään näillä ensimmäisillä kursseilla mitään kirjoja ollut, kaikki materiaali löytyy verkosta ja loput googlesta. Enkä tarkoita näillä kirjoilla mitään raamatun paksuisia C++ oppaita, vaan semmoisia jotka opettaisivat kehittymään ohjelmoijana, opettamaan hyviä ohjelmointitapoja ym. En tiedä onko sellaisia (siksi kyselen) ja jos on, niin onko niiden lukemisesta hyötyä vai kannattaako mieluummin keskittyä tekemään silläkin ajalla jotakin ihan muuta.
Tuon Code Completen olen kuullut mainittavan moneen kertaan monessa eri paikassa, sen varmaankin tulen hankkimaan.
On muuten aika vaikea ja moniulotteinen kysymys. Itselläni, kuten varmasti monella muullakin, ohjelmointiharrastus alkoi mielenkiinnosta jotain tiettyä asiaa kohtaan. Olkoon se sitten web, desktop tai pelikehitys.
Tästä seuraava askel oli sen ohjelmointikielen valinta, joka tuntui sillä hetkellä loogisimmalta ajatusmaailmaan nähden. Itse hain kirjastosta C++ kirjoja sitä mukaa kun niitä sinne tuli, ja yritin sanakirjojen avulla selvittää ammattisanaston merkitystä. BBS -piireistä löysin ihmisiä jotka osasivat noissa asioissa ammoinaan auttaa.
Jos itse aloittelisin nyt, ehkä vähän tutustuisin eri ohjelmointikielien syntaksiin ja perusteisiin, ja valitsisin sen joka omaan päähän parhaiten sopii (ja josta löytyy myös laajempaa osaamista ja verkostoa netin syövereistä ,kuten esim. python, C#, java, VB.Net, C++) ja tilaisin aiheesta kirjan. Siitä seuraavana askeleena ottaisin pienehkön tavoitteen (vaikka taskulaskimen), ja alkaisin pänttäämään.
Mitä tulee referensseihin (ja referenssikirjoihin), ne usein vain sekoittavat päätä kunnes perusasiat on kunnossa. Termit ja käsitteet aukeavat usein vasta harjoitustöiden kautta, kun ymmärtää mihin asiaa a tai b tulee oikeaoppisesti käyttää.
Näin nyt esimerkkinä, eräs tuttavani aloitti RoR -ohjelmoinnin aikuisiässä kolmekymppisenä, tällä kirjalla. Tuon tukena käytti Lynda.comin rails essentials tutoriaaleja, ja vuoden päästä aloittamisesta, sai ensimmäisen tilauksen verkkosivustosta. Eli aika hyvin mielestäni, eikä se sivustokaan huonoimmasta päästä ollut. Oma-aloitteisuus ja mielenkiinto aihetta kohtaan on tässäkin kaiken a ja o.
Phoenx kirjoitti:
Jaska kirjoitti:
Minun mielestä kirjoista oppii perusasiat mutta spesiaaleihin ongelmiin niistä ei löydy aina vastauksia.
..
muutama tuttava on työllistynyt erikoistumalla sellaisen kapean alan asiantuntijaksi, jollaista osaamista ei ole monellakaan maailmassa. Itsekin yritän samaa.Mitä siis ovat nämä perusasiat ja kapean alan asiantuntemus?
Perusasioilla tarkoitan sitä tietämystä, mitä IT-alan koulutusohjelma antaa kaikille. Kapean alan osaamisella taas pärjäät sellaisissa haastatteluissa, joissa firma hakee kyseisen alan asiantuntijaa. Esimerkiksi eräs sukulaisen hankki ohjelmointiosaamisen lisäksi hyvät tiedot mallinnuksesta, tilastotieteestä ja biologiasta ja mallintaa nykyään populaatioita tietokoneella. Toinen kaverini erikoistui tietoverkkoihin ja on toiminut sillä alalla.
Olen lukenut aika kasan kirjoja, jotkut niistä ihan hyviäkin. Uskon kuitenkin, että olisi ollut vähintään yhtä hyödyllistä käyttää sama aika ohjelmointiin.
Tuon Code Completenkin olen lukenut, ja olihan se ihan mielenkiintoinen, mutta ei sitä kannata väkisin kahlata läpi jos ei nappaa.
Phoenx kirjoitti:
Kokemusta puuttuu mielestäni varsinkin isommista projekteista
Ainoa ratkaisu tähän on toteuttaa isompia projekteja. Ja sitten vielä isompia.
Avoimen lähdekoodin projekteihin osallistuminen on yksi vaihtoehto ja varmasti hyödyllinen oppimisen ja CV:n kannalta, mutta se ei ole välttämätöntä jos työskentelee mieluummin yksin omien projektien kanssa.
Phoenx kirjoitti:
Ja toinen kysymys; mihin asioihin kannattaisi opiskelua painottaa jos haluaisi olla mahdollisimman "hyvillä eväillä" liikenteessä työelämässä noin 3-4 vuoden päästä?
Kyky ja motivaatio oppia itsenäisesti ovat välttämättömiä ja niistä on hyvä olla näyttöä. Jos hallitset vain yliopistossa käyttämäsi ohjelmointikielet ja jos isoimmat toteuttamasi projektit olivat kurssitöitä, et erotu joukosta.
Kielten ja teknologioiden valinta ei sitten ole niin tärkeää, tee mitä vain mikä kiinnostaa. On täysin normaalia saada työpaikka firmasta, jossa käytetään pääasiassa kieltä X, vaikket olisi koskaan aiemmin tehnyt sillä edes hello worldiä.
Jaskan mainitsema erikoistuminen on ehkä joillekin varteenotettava vaihtoehto, mutta varsinkin uran alkuvaiheessa suosittelisin ennemmin hyvän yleistiedon hankkimista ohjelmointialasta ja moniosaamista. Hyvällä ohjelmointitaidolla saa kyllä töitä.
Minulla on ennakkoluuloja ihmisiä kohtaan, jotka kertovat oppineensa ohjelmointikielen X lukemalla kirjat Y ja Z. IT-alalla käytännöt, tekniikat ja jopa ohjelmointikielet itsessään kehittyvät niin nopeasti, että kirja on todennäköisesti vanhentunut jo saadessasi sen käteesi tai viimeistään muutaman vuoden kuluttua. Esimerkiksi C++:n opetteleminen C++03-standardiin perustuvasta kirjasta voi olla jopa haitallista, koska se opettaa tänäpäivänä huonoina pidetteviä vanhentuneita tapoja. PS. käyttäkää sitä vitun autoa.
On toki olemassa myös hyviä kirjoja, jotka ei vanhene, mutta nämä ovat harvassa ja keskittyvät yleensä ohjelmointikielten käyttämisen sijasta ohjelmoinnin tietojenkäsittelyteoreettiseen puoleen (esim. SICP, dragon book, knuthin kirjat ja käytännönläheisenä poikkeuksena aina relevantti K&R C). Silti luettujen kirjojen listaaminen CV:ssä antaa mielestäni arveluttavan vaikutelman, koska kirjan lukemisesta ei seuraa aiheen hallitseminen. Kannattaa ennemmin soveltaa niitä kirjoista tai muualta opittuja taitoja omissa projekteissa, jotka voi sitten mainita CV:ssä.
Suosittelisin siis pänttäämisen sijasta keksimään jonkin itseäsi kiinnostavan projektin ja tekemään sen nykyisellä taitotasolla Googlea apuna käyttäen. Työkaluiksi voit valita vaikkapa tämän hetken hipstereimmät kielet ja kirjastot, jos tuntemasi työkalut eivät tunnu projektiin sopivilta. Työnhaun kannalta projektin on kuitenkin syytä olla mahdollisimman pieni tai sellainen, että sitä voi esitellä keskeneräisenä. Ohjelmoijia kun vaivaa sellainen kirous, ettei mikään (oma) projekti tule koskaan valmiiksi, kun projektin edetessä oppii jatkuvasti kantapään kautta mikä toimii ja mikä ei ja minkä olisi voinut suunnitella paremmin. Avoimen lähdekoodin projekteihin osallistuminen on myös kultaa, koska se osoittaa ohjelmointikielten osaamisen lisäksi ohjelmistotuotannossa vaadittavia versionhallinta- ja ryhmätyöskentelytaitoja.
Terveisin,
Kirjoja lukematon juntti, joka ei ole ollut päivääkään oikeissa töissä.
Deffi kirjoitti:
Minulla on ennakkoluuloja ihmisiä kohtaan, jotka kertovat oppineensa ohjelmointikielen X lukemalla kirjat Y ja Z. IT-alalla käytännöt, tekniikat ja jopa ohjelmointikielet itsessään kehittyvät niin nopeasti, että kirja on todennäköisesti vanhentunut jo saadessasi sen käteesi tai viimeistään muutaman vuoden kuluttua. Esimerkiksi C++:n opetteleminen C++03-standardiin perustuvasta kirjasta voi olla jopa haitallista, koska se opettaa tänäpäivänä huonoina pidetteviä vanhentuneita tapoja.
Eihän tuo liity mitenkään kirjoihin. Hyvin moni web-koodari on opetellut html:n, css:n ja php:n jostain IE6:n aikaisesta nettioppaasta. Hyvin moni koodari yleensäkin opettelee asioita vanhentuneista lähteistä, koska joka vuosi nettiin kirjoitetaan uutta asiaa mutta hyvin harvoin sitä päivitetään enää myöhemmin. Vanha jäte jää roikkumaan, eivätkä aloittelijat voi tietää, mikä on vanhentunutta ja mikä ajantasaista. Kirjasta sentään näkee nopeasti sen, milloin (1. painoksen) teos on kirjoitettu ja milloin sitä on mahdollisesti päivitetty. Minä tapasin itse jättää vanhat kirjat hyllyyn, koska tiesin että niillä voi ampua itseään jalkaan.
Deffi kirjoitti:
Suosittelisin siis pänttäämisen sijasta keksimään jonkin itseäsi kiinnostavan projektin ja tekemään sen nykyisellä taitotasolla Googlea apuna käyttäen.
Ei tuo oikein toimi ensimmäistä kieltä opetellessa, kun ohjelmoinnin konseptit eivät ole hallussa.
Kirjat harjoitustöineen ja projekteineen toimii aloittaville koodareille usein helpompana tienä kuin Google, koska eivät tiedä mitä hakea ongelman sattuessa. On vaikea hakea apua kun ei tiedä hakusanoja.
Aihe on jo aika vanha, joten et voi enää vastata siihen.