Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Paljon yhtä vai vähän kaikkea?

Sivun loppuun

vesikuusi [24.04.2011 23:01:26]

#

Haluaisin tietää joltain, jolla on kokemusta alasta (kun itsellä on mielessä ohjelmistokehitys sitten amiksen ja ehkä amk:n jälkeen), että kannattaako opetella asioita monista eri aihealueista vai erikoistua tiettyyn alueeseen. Olen nyt opiskellut ja ohjelmoinut C++ -kielellä aluksi yläasteen kasilla, kun oli ohjelmointikurssi, ja myöhemmin netistä ja kirjoista viime talven ajan(kesällä tarkoitus purjehtia ja liikkua) ja paljon olen oppinut.

Nyt on vaan herännyt tuo kysymys, kun olen alkanut katella GTK+ -ja SDL-juttuja, että pitäisikö keskittyä johonkin tiettyyn alueeseen eikä koluta kaikkea läpi? Meinaan, että kumpi on parempi sitten työelämässä? Saattaa olla tyhmä kysymys, mutta mielestäni hyvä tietää ajoissa.. Kiitosta näin etukäteen :)

Grez [24.04.2011 23:13:28]

#

No ihan jos miettii, että erilaisia kirjastoja on miljoonia, niin kaikkiahan ei kuitenkaan ole järkeä eikä edes mahdollista opetella edes pintapuolisesti.

Mielestäni kannattaa opetella
1) ohjelmoimaan yleisesti
2) ohjelmoimaan jollain kielellä, eli tutustua sen tarjoamaan ympäristöön että tietää mistä löytyy mitäkin toimintoa
3) opetella hakemaan tietoa
4) opetella joitain kirjastoja sen verran, että pystyy tekemään jonkinlaisia ohjelmia

Työhommissa sitten todennäköisesti huomaa, että ahaa, nyt tarvitaan näiden jo osaamieni asioiden lisäksi jotain juttua X, jolloin kohdan 1) opeilla mietitään että mitenköhän sellainen asia yleisesti toteutetaan ja/tai kohdan 3) opeilla haetaan ratkaisu tai kirjasto jolla homman saa hanskattua.

Eli siis, järjelliset ohjelmointityönantajat ei odota, että osaat kaiken mahdollisen valmiiksi, vaan aina joutuu oppimaan uutta myös työn ohessa. Toki mitä enemmän tunnet valmiiksi potentiaalisen työnantajan käyttämiä päätekniikoita, sitä parempi työn saannin kannalta.

Jokotai [24.04.2011 23:56:57]

#

Tärkeintä on juurikin se, että tietää mikä on syötteenlukemisfunktio sen sijaan, että muistaisi, mikä se funktio todellisuudessa olikaan. Tämän jälkeen Grezin 3 kohta astuu peliin.

vesikuusi [25.04.2011 00:03:35]

#

Grez kirjoitti:

Eli siis, järjelliset ohjelmointityönantajat ei odota, että osaat kaiken mahdollisen valmiiksi, vaan aina joutuu oppimaan uutta myös työn ohessa. Toki mitä enemmän tunnet valmiiksi potentiaalisen työnantajan käyttämiä päätekniikoita, sitä parempi työn saannin kannalta.

Jep, sen tiedän että työn ohessa pitää aina (varsinkin ohjelmistokehityksessä) opetella uutta. Kiitos asiallisista vastauksista :) näistä on hyötyä

Antti Laaksonen [25.04.2011 00:58:31]

#

Hyvä perusohjelmointitaito on vahva valttikortti. Tämän kehittymisessä auttaa toki, että kokeilee kaikenlaista.

Työelämä on laaja käsite, töitä on hyvin erilaisia.

Grez [25.04.2011 01:12:29]

#

Niin ja usein on hyötyä siitäkin, että ymmärtää vähän kaikenlaista sellaistakin, mikä ei suoranaisesti liity ohjelmointiin.

Triton [25.04.2011 02:15:17]

#

Grez kirjoitti:

Niin ja usein on hyötyä siitäkin, että ymmärtää vähän kaikenlaista sellaistakin, mikä ei suoranaisesti liity ohjelmointiin.

Tämä on varmasti hyvin totta, sillä useat firmat tekevät juuri jonkun tietyn alan softia esim. pankki- ja vakuutusalan softia, ja tällöin on varmasti tiedettävä ainakin jotain pankki- ja vakuutusalasta...

os [25.04.2011 19:29:38]

#

Ohjelmointikielet ovat vähän kuin puhutut kielet. Se, että osaa sujuvasti jotakin kieltä on välttämätön, mutta ei riittävä ehto sille, että pystyy sanomaan tai kirjoittamaan jotakin järkevää.

Ohjelmoinnin aloittaminen jonkin tietyn kielen opettelulla on hyvä tapa päästä alkuun, mutta kielet-ja-kirjastot-ajatteluun ei kannata jumittua.
Jos katsot jonkin yliopiston tietotekniikan tai tietojenkäsittelytieteen opetusohjelmaa, niin et löydä pitkää listaa erilaisista kielistä ja kirjastoista vaan aiheista kuten algoritmiikka, rinnakkaisohjelmointi, käyttöjärjestelmätekniikka, ohjelmistotuotanto, sulautetut järjestelmät ... jne.

Hyvä ohjelmoija ei osaa "Javaa, Qt:tä ja C++:ssaa" vaan hallitsee sopivan paletin edellä listatun kaltaisista aiheista.

Loppuun vielä konkreettisena vinkkinä, että ainakaan SDL ei ole merkittävä referenssi tulevaisuuden työelämässä.

Jaska [25.04.2011 19:58:59]

#

Triton kirjoitti:

Tämä on varmasti hyvin totta, sillä useat firmat tekevät juuri jonkun tietyn alan softia esim. pankki- ja vakuutusalan softia, ja tällöin on varmasti tiedettävä ainakin jotain pankki- ja vakuutusalasta...

Olen tehnyt onnistuneesti verotukseen liittyviä ohjelmia ilman verotusalan koulutusta. Perehdytys oli hyvällä tasolla.

Mielestäni ensiksi kannattaa opetella hyvin tietorakenteet, algoritmit ja SQL. Näitä tarvitaan lähes jokaisessa koodaustyöpaikassa. Sen jälkeen tarvitsee opetella kunkin kielen syntaksi. Monesti kielestä ei välttämättä tarvitse osata kauheita määriä kirjastoja tai funktioita ulkoa, vaan tarvittaessa voin koodata itse linkitetyt listat ja puurakenteet jos en löydä valmista toimivaa funktiota tai kirjastoa. Onhan se hitaampaa kuin valmiiden funktioiden käyttäminen. Toisaalta joissakin työpaikoissa käytetään omia kirjastoja ja niitä on vain opittava käyttämään, vaikka tietäisikin toisen tavan tehdä asioita.

Mulla on ollut eniten hankaluuksia ymmärtää välillä toisen tekemää koodia. Esimerkiksi löysin aikoinaan avoimen lähdekoodin ohjelmasta bugin, opettelin käyttämään debuggeria ja katselin, mitä koodissa tapahtuu. Koodia oli niin tuhottomasti, että yritys paikata bugi epäonnistui pahoin.

Mutta työpaikkoja ja -tehtäviä on erilaisia. Kannattaa varmaankin itse kokeilla erityyppisiä projekteja. Esimerkiksi voit tehdä alusta loppuun joitakin sovelluksia tai yrittää muokata jotain avoimen lähdekoodin ohjelmaa johonkin suuntaan. Ensimmäisessä näet, minkä verran osaat jonkun kielen syntaksia osaat suunnitella ohjelmistoja kun taas toisessa näet, kuinka hyvin pääset perille toisen ohjelmoijan tuotoksesta.

Antti Laaksonen [25.04.2011 20:32:05]

#

Jaska kirjoitti:

Monesti kielestä ei välttämättä tarvitse osata kauheita määriä kirjastoja tai funktioita ulkoa, vaan tarvittaessa voin koodata itse linkitetyt listat ja puurakenteet jos en löydä valmista toimivaa funktiota tai kirjastoa.

Tämä kuulostaa hieman kyseenalaiselta toimintatavalta. Modernissa kielissä on nimenomaan etuna, että niissä on valmiita tietorakenteita.

Esimerkiksi jos joku koodaa Javalla itse punamustan puun, koska ei viitsi katsoa, olisiko Javan kirjastossa valmista puurakennetta, työnantaja on tuskin tyytyväinen.

Jaska [26.04.2011 00:12:02]

#

Antti Laaksonen kirjoitti:

Esimerkiksi jos joku koodaa Javalla itse punamustan puun, koska ei viitsi katsoa, olisiko Javan kirjastossa valmista puurakennetta, työnantaja on tuskin tyytyväinen.

Riippuu varmaan työnantajasta. Kuulin vaan tapauksen yliopistolta, jossa tutkija koodasi jonkun tilastotieteen testin Matlabiin ja projektia johtanut professori oli tyytyväinen kun asiat meni eteenpäin. Tutkija huomasi myöhemmin, että testiin oli valmis funktio. Mutta yleisestihän kannattaa miettiä, kuinka paljon aikaa kirjaston käytön opettelemiseen menee ja kuinka kauan asian koodaamiseen ilman kirjastoja.

Triton [26.04.2011 00:39:16]

#

Jaska kirjoitti:

Triton kirjoitti:

Tämä on varmasti hyvin totta, sillä useat firmat tekevät juuri jonkun tietyn alan softia esim. pankki- ja vakuutusalan softia, ja tällöin on varmasti tiedettävä ainakin jotain pankki- ja vakuutusalasta...

Olen tehnyt onnistuneesti verotukseen liittyviä ohjelmia ilman verotusalan koulutusta. Perehdytys oli hyvällä tasolla.

En tarkoittanutkaan pelkästään jossain oppilaitoksessa hankittua koulutusta, vaan myös juuri tuollaista perehdytystä johonkin aihepiiriin. Itse näen asian niin, että tietojenkäsittely on eräänlainen työväline, jolla laaditaan apuvälineitä monien muiden alojen työntekijöille. Montako sellaista alaa tulee mieleen, jossa ei nykypäivänä tietojenkäsittely olisi jonkinlaisessa osassa? Tämä jo osoittaa sen, että lähes aina täytyy perehtyä jonkun toimialan käsitteistöön yms...

Jaska kirjoitti:

Riippuu varmaan työnantajasta. Kuulin vaan tapauksen yliopistolta, jossa tutkija koodasi jonkun tilastotieteen testin Matlabiin ja projektia johtanut professori oli tyytyväinen kun asiat meni eteenpäin. Tutkija huomasi myöhemmin, että testiin oli valmis funktio. Mutta yleisestihän kannattaa miettiä, kuinka paljon aikaa kirjaston käytön opettelemiseen menee ja kuinka kauan asian koodaamiseen ilman kirjastoja.

Minusta mitään yliopiston tutkimusprojektia ei aivan suoraan voi verrata yritysmaailman projekteihin, sillä yritysmaailman projekteissa on yleensä huomattavasti tiukemmat aikataulut ja tulosta on saatava nopeasti.

Toisaalta sen lisäksi, että miettii sitä, että kuinka kauan menee kirjaston opettelemiseen tai kuinka nopeasti itse toteuttaisi homman täytyy tod. näk. miettiä myös sitä, että saako siitä omasta ratkaisusta niin hyvän ja optimoidun kuin mitä valmis ratkaisu mahdollisesti on...

Grez [26.04.2011 00:55:37]

#

Triton kirjoitti:

täytyy tod. näk. miettiä myös sitä, että saako siitä omasta ratkaisusta niin hyvän ja optimoidun kuin mitä valmis ratkaisu mahdollisesti on...

Ja lisäksi sitä, kuinka ylläpidettävä ohjelma on jos kaikki on tehty omilla virityksillä vs. että käytettäisiin vakiokirjastosta löytyviä kaluja. Kun koodaajat vaihtuu niin on aika paljon suurempi todennäköisyys että uusi koodaaja tuntee vakiokirjaston kuin että se tuntisi jonkun in-house-virityksen ennestään.

lakeus [26.04.2011 10:56:04]

#

Aloittajalle antaisin ohjeeksi perehtyä joihinkin mobiiliohjelmointiin liittyviin teknologioihin. Mobiilipuolelle on ennustettu hurjaa kasvua ja ainakin omasta mielestäni hommat ovat paljon mielenkiintoisempia kuin PC:lle ohjelmointi.

PC:lle tehdään paljon juurikin tylsiä SQL-tietokantoja ja yllä mainittuja verotukseen liittyviä ohjelmistoja. Itselläni on kokemusta ohjelmoinnista PC:lle sekä mobiililaitteille enkä haluaisi enää tehdä täysipäiväisesti PC-ohjelmointia.

Mobiilipuolella projektit ovat yleensä pienempiä sovelluksia jolloin pienikin tiimi voi saada aikaan valmista nopeasti. Lisäksi uutta saa opetella koko ajan, kuka olisi esimerkiksi arvannut pari vuotta sitten Androidin valtaisan suosion? Mobiilipuolella tehdään esimerkiksi paljon koodia joka liittyy grafiikkaan tai multimediaan, itse koen nämä osa-alueet hyvin mielenkiintoisiksi.

Muistan professorin joka totesi osuvasti "Tiedättekö te mitä se ohjelmointi oikeassa työelämässä on? Se on sitä että teille annetaan läjä bugista koodia jota pitäisi jatkokehittää". Näinhän se valitettavasti useimmiten menee.

tepokas [26.04.2011 13:44:39]

#

Taidat olla nuori kaveri, edessä työelämää vuosi(kymmeni)a? Opettele mallinnusta. Se koodin väsääminen kun on vain sitä mallin muuttamista koneen ymmärtämään muotoon ja se muuttaminen voidaan tehdä sillä koneella.

Mallinnus (ongelman määritys) vaatinee aina ihmisen tekijäksi vaikka muuttunee koneavusteiseksi.

Jaska [26.04.2011 18:26:48]

#

tepokas kirjoitti:

Mallinnus (ongelman määritys) vaatinee aina ihmisen tekijäksi vaikka muuttunee koneavusteiseksi.

Ei tarvita aina. Luin artikkelin http://www.newscientist.com/article/mg20928041.500-move-over-einstein-machines-will-take-it-from-here.html jonka mukaan tietokoneita voidaan ainakin jossain määrin käskeä luomaan fysikaalisista ilmiöistä malleja.

Metabolix [26.04.2011 20:30:11]

#

Jaska, puhut aivan eri mallinnuksesta. Ohjelmiston mallinnus tarkoittaa ohjelman rakenteen ja toiminnan suunnittelua, ja korkealla tasolla se edellyttää epämääräisten käsitteiden ymmärtämistä, joka ei tietokoneelta onnistu. Tietokoneen kyvyt rajoittuvat toistaiseksi melko mekaanisiin muunnoksiin kuten luokkien muodostamiseen tietokantataulujen perusteella, tai ainakaan en ole kuullut mistään mullistavammasta.

Omat neuvoni: Koodin kirjoittamisen puolella kannattaa opetella täsmällisyyttä (kerralla oikein ja siististi) ja koodin pilkkomista (lyhyitä funktioita on helpompi suunnitella ja ylläpitää). Lisäksi kannattaa opetella juuri mainittua mallintamista eli ylemmällä tasolla ohjelman perusrakenteen suunnittelua ja alemmalla tasolla viime kädessä tuota koodin paloittelua funktioihin. Jos koko ohjelman perusrakenne on huonosti suunniteltu, sen korjaaminen voi vaatia koko ohjelman muuttamista kerralla. Jos vika on vain pienissä osa-algoritmeissa, korjauksia voi tehdä paljon helpommin.

Jaska [26.04.2011 21:41:39]

#

Metabolix kirjoitti:

Jaska, puhut aivan eri mallinnuksesta.

Ai pahus! Enpäs ole opiskellut ohjelmistojen suunnittelua juuri yhtään, joten en muistanut termiä. Tosiaan kuulostaa aika vaikealta, että tietokoneet pystyisivät mallintamaan ohjelmistoja. No, ainakin tutkijoille riittää hommia todennäköisesti pitkälle tulevaisuuteen, mikäli haluavat kehittää tietokoneavusteisia mallintamisjärjestelmiä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta