Tällä palstalla jauhetaan yllättävän paljon p**kaa siitä kumpi on parempi ohjelmointialusta .Net vai Java Enterprise Edition. Tai kuka on kunnon koodari yms. "Kovia" koodareita ovat ne jotka tekevät reaaliaika järjestelmiä ja lähemmäs konekieli koodausta.
En ymmärrä tätä. Nykyisten ns. "Business" sovellusten "koodaminen" kun tapahtuu suht. korkealla abstraktiotasolla. Se kun ei ole mitään ydinfysiikkaa eikä sen tarkoitus olekaan olla. Yleisimmät liiketoimintasovellukset noudattavat lähes samaa kaavaa, on olemasssa tietomalli mitä enemmän tai vähemmän käsitellään.
Ymmärrän että kellarissa koodaavat hylkiöt haluavat edes jossain päteä, mutta yritysten kannalta on aivan sama onko järjestelmä tehty Javalla vai C#:lla. Kunhan se tekee tehtävänsä, sopii olemassa olevaan tietotekniikka arkkitehtuuriin ja ON HALPA (tuottavuus!). Enemmän tarvitaan liiketoimintaa ja tietotekniikkaa edes jollain tavalla hahmottavia immeisiä kuin sulkeutuneita nörttejä jotka eivät osaa selvittää mitä hyötyä esim. EJB:n käyttämisestä on liiketoiminnalle.
Lisäksi uudelleenkäytettävyys on aivan liian liikaa vaahdottu asia, kaikkien sovellusten osien pitäisi olla uudelleenkäytettäviä. Jokaisesta luokasta pitää olla rajapinta ja luokkia ei pidä instansioida koodissa vaan "viedä" ne ajonaikana esim. Spring:in avulla. Todellisuudessa kuitenkin useimmiten järjestelmät palvelevat aikansa jonka jälkeen ne kirjoitetaan uudestaan...
Tottakai se on hyvä jos osaa "koodata" hyvin Java:lla ja tuntee useita frameworkkeja, mutta millä muulla alalla työkaluista vaahdotaan näin paljon? Harvemmin raksaduunaritkaan väittelevät suu vaahdossa kenellä on paras vasara?
En ymmärrä tätä. Nykyisten ns. "Business" sovellusten "koodaminen" kun tapahtuu suht. korkealla abstraktiotasolla. Se kun ei ole mitään ydinfysiikkaa eikä sen tarkoitus olekaan olla. Yleisimmät liiketoimintasovellukset noudattavat lähes samaa kaavaa, on olemasssa tietomalli mitä enemmän tai vähemmän käsitellään.
Ymmärrän että kellarissa koodaavat hylkiöt haluavat edes jossain päteä, mutta yritysten kannalta on aivan sama onko järjestelmä tehty Javalla vai C#:lla. Kunhan se tekee tehtävänsä, sopii olemassa olevaan tietotekniikka arkkitehtuuriin ja ON HALPA (tuottavuus!). Enemmän tarvitaan liiketoimintaa ja tietotekniikkaa edes jollain tavalla hahmottavia immeisiä kuin sulkeutuneita nörttejä jotka eivät osaa selvittää mitä hyötyä esim. EJB:n käyttämisestä on liiketoiminnalle.
Lisäksi uudelleenkäytettävyys on aivan liian liikaa vaahdottu asia, kaikkien sovellusten osien pitäisi olla uudelleenkäytettäviä. Jokaisesta luokasta pitää olla rajapinta ja luokkia ei pidä instansioida koodissa vaan "viedä" ne ajonaikana esim. Spring:in avulla. Todellisuudessa kuitenkin useimmiten järjestelmät palvelevat aikansa jonka jälkeen ne kirjoitetaan uudestaan...
Tottakai se on hyvä jos osaa "koodata" hyvin Java:lla ja tuntee useita frameworkkeja, mutta millä muulla alalla työkaluista vaahdotaan näin paljon? Harvemmin raksaduunaritkaan väittelevät suu vaahdossa kenellä on paras vasara?
Vastaukset 20
Vanhimmat
Sanoit: "Enemmän tarvitaan liiketoimintaa ja tietotekniikkaa edes jollain tavalla hahmottavia immeisiä kuin sulkeutuneita nörttejä jotka eivät osaa selvittää mitä hyötyä esim. EJB:n käyttämisestä on liiketoiminnalle."
Mielestäni kumpaakin tarvitaan, ei voi sanoa "enemmän" tai "vähemmän" eikä sinunkaan kannattaisi asettaa itseäsi kenenkään yläpuolelle. Erilaisiin hommiin tarvitaan erilaisia ihmisiä, erilaista koulutusta ja kokemusta, erilaisia näköaloja - se on fakta. Kannattaa muistaa myös, että nää "koodarit" ovat myös nuoria eli heidän näköalansa on siksi varsin putkimainen, siitä johtunee tiettyjen postausten asenteellisuus ;).
Tottakai erilaista osaamista yms. tarvitaan. Aikaisemman viestin tietynlainen agressiivisuus oli vain tapa herättää huomiota. Pointtini tässä on vain se että "koodari" joka vannoo nyt Java EE:n, Springin yms. nimiin ei välttämättä ymmärrä että kymmenen vuotta sitten asiat oli lähes samalla tavalla. COBOL:n yms nimiin vannottiin aivan yhtä suurella vakaumuksella. Silti perusparadigma on pysynyt samana. Lisäksi ohjelmointialustojen (.Net ja Java EE) vertailu saa huvittavan fundamentalistisia piirteitä. Tärkeintä yrityksille on saada mahdollisimman nopeasti skaalautuvia ja ylläpidettäviä järjestelmiä, ei sen enempää eikä vähempää.
Ei mitään uutta auringon alla...
tää mitään hyväntekeväisyyttä pitänyt olla, suvaitsevaisuus kuulu tähän asiaan lainkaan, eiköhän markkinat ratkaise keitä ne tarttee ja mihin
veli antikoodari kirjoitti täyttä asiaa, liikaa puhutaan vasaroista ja sahoista, siis työkaluista kun sen sijana pitäisi osata puhua enemmän siitä mitä ollaan tekemässä (rakentamassa)
Ongelma on juurikin työkaluissa. C , C# ja Java ovat abstraktiotasoltaan matalia ja tuottavuudeltaan heikkoja, joten ymmärrättävästi koodareiden ajatukset liikkuvat enemmän ympäristön ominaisuuksissa, kuin varsinaisen ongelman luonteessa.
Kyllä se tuntuu melkein siltä, että kuka vääntää kovinta shittiä.
Ohjelmat on nykyjään sellasta paskaa. Koodatessa tehdään jotain ripukakkaa nopeasti joka just ja just toimii. Monet taskit saataisiin 1000 tai jopa miljoonakertaa nopeammaksi, jos... Ohjelmoijilla olisi edes hajua siitä mitä ne on oikeasti tekemässä. Laadusta ei ole kyllä mitään tietoa nykyjään, valitettavasti.
Sitten ihmetellään miten tarvitaan tolkuttomasti lisää rautaa kun softat on ihan tolkutonta soopaa. Tai miksei ohjelmat toimi tehokkaasti moniydin prosessoreilla tai klustereissa.
Kaikessa on kysymys rahasta... En pahemmin ole kuullut että suurimpia ongelmia rahallisesti olisi aiheuttanut suorituskyky ongelmat vaan projektien aikataulut. Jos todella suorituskykyistä koodia tehtäisiin asiat tehtäisiin vieläkin matalammalla abstraktiotasolla. Eikö sovelluspalvelinten yksi idea ole että koodajan ei tarvitse esim. huolehtia transaktioista vaan sovelluspalvelimen "yhteyspoolit" huolehtivat niistä. Ja eikö yksi Javan keskeisimmistä asioista ole se että ympäristö (JVM) huolehtii roskien keruusta, niin ettei "koodaajan" tarvitse huolehtia ns. "matalan tason" asioista kuten pointtereista.
Jos rahaa ja aikaa olisi tolkuttomasti niin asiat tehtäisiin mahdollisimman hyvin, mutta kun "tosimaailmassa" kummatkin ovat niukkoja resursseja jolloin joudutaan tyytymään kompromisseihin. Sitä välillä tuntuu "kovien koodareiden" mahdotonta ymmärtää.
Suorituskyky on yksi järjestelmän ei-toiminnallisista vaatimuksista. Jos järjestelmä on ei-toiminnallisisten vaatimusten osalta täydellinen, erittäin suorituskykyinen skaalautuva yms. Mutta ei ratkaise sitä ongelmaa miksi se ylipäätänsä luotiin, niin ketä itseasiassa kiinnostaa? (Muita kun "kovia koodari" propellihattuja, sillä kun ei ole oikean elämän kanssa mitään tekemistä)
Siis transaktiot täytyy koodissa ottaa huomioon mutta yhteydet ovat sovelluspalvelimen vastuulla. (Tiedän että joku näsäviisas propellihattu olisi kuitenkin kiinnittänyt tähän asiaan huomiota... ;)
jotta pystyttäisiin luoda entistä monimutkaisimpia järjestelmiä. Kysymyshän tässä nyt on siitä että abstraktiotasot nousevat järjestelmienkehityksessä koko ajan, ja niiden täytyykin nousta jotta esim. koko yrityksen kattavat prosessiketjut voitaisiin mallintaa. Yksi esimerkki on BPM-tuotteet, ne eivät vielä toimi aivan niin hyvin kun ne toimivat mutta ovat abstraktiotasoltaan jo aivan eri tasolla. Prosessijärjestelmän kannalta on yhden tekevää millä sille tarjotut palvelut on toteutettu ja niin sen tavallaan pitää ollakin.
Miksi liiketoiminnan pitäisi olla kiinnostunut mitä ohjelmointikieltä järjestelmissä käytetään?
Voidaan olla montaa mieltä nykyisistä Prosessijärjestelmistä mutta uskon että ne tulevat lisääntymään. Prosessijärjestelmissä voidaan abstraktoida toiminta ja tietosisältö ohjelmointiteknisistä asioista. Se ei tarkota että C#:n, Javan, PHP:n tai muun ohjelmointikielen osaajia tarvita mutta se tavallaan vähän vie valtaa "koodareilta" pois. Esimerkkinä Javan "virtuaalikone", kyllähän senkin suorituskykyä jatkuvasti parannetaan mutta se on abstraktoitu pois Java:n "käyttäjiltä/koodaajilta".
Pointti on se että eikö tietotekniikassa (jonkin ns. "business"-järjestelmän osalta) kuvata toimintaa ja siihen liittyvää tietosisältöä sekä tietosisällön käsittelysääntöjä?
Pieni korjaus tähän ajatuksenvirtaan... Eli en missään nimessä ole sitä mieltä että koodarien ei pitäisi tuntea ammattiylpeyttä työstään, tottakai... Mielestäni abstraktiotason nousu ei tarkoita että alemmalla abstraktiotasolla oleva asia olisi vähemmän tärkeä... Vaan ajan takaa sitä että osa koodareista katsoo että ohjelmistoprojektissa ei tulisi olla muita ihmisiä kuin koodaajat ja kenties loppukäyttäjät. Kaikki riippuu asiayhteydestä, jos on pieni projekti niin hyvin voi ollakin näin mutta isommassa projektissa asia ei voi olla niin. Kuten kaikki varmaan tietävät että koodaajan on vaikea "riisua koodarin lasejaan" määrittelyssä yms. Se ei kuitenkaan tarkoita että määrittelemässä voisi olla ihminen joka on täysin ummikko tekniikan suhteen.
Lisäksi asia mitä sivusin oli tämä ns. "ohjelmointialusta" fundamentalisuus. Liiketoiminnan kannalta on aivan sama onko järjestelmä tehty Java:lla vai .Net:llä (riippuen tietenkin mitä osaamista talossa on ja mitä alustoja yms, mutta sekin on "liiketoiminnallinen" aspekti, ei kannanotto siihen kumpi on parempi). Liiketoiminnalliseksi perusteluksi kun ei kelpaa että "Microsoft on iso paha susi joka syö kaiken vapaan yrittäjyyden ja koittaa lannistaa kaiken monopolinsa alle"
Huom. lisäksi koko ajan olen tarkoittanut ns."liiketoimintajärjestelmiä", en avaruussukkulan tai jonkin robotin koodausta. Siinä tekniikalla on ymmärrettävästi todella suuri rooli.
Ihan turha puhua abstraktiotasojen nostosta, kun perustasollakin koodit on mitä sattuu.
Ai niin halpamaissahan perusta luodaan.
Sinne sitten riittää rahaa, aikaa ja resursseja niin paljon, että voivat koodata perusjutut kunnolla?
Voidaan me sitten täällä keskittyä olennaiseen, kun perusta on täydellinen.
Ihmetyttää vain, miksi me täällä Suomessa emme ole tuossa onnistuneet ;)
abstraktiotasot eivät nouse niin koodaisimme vieläkin ns."mainstreamissa" assylla. On hauskaa kun Java tai C# koodari itkee kuinka ei tehdä hyvää koodia ja abstraktiotasot ei voi nousta kun kyseiset ohjelmointikielet ovat nykykäsityksen mukaan KORKEAN ABSTRAKTIOTASON kieliä...
"Enemmän tarvitaan liiketoimintaa ja tietotekniikkaa edes jollain tavalla hahmottavia immeisiä kuin sulkeutuneita nörttejä jotka eivät osaa selvittää mitä hyötyä esim. EJB:n käyttämisestä on liiketoiminnalle. "
Jep. Liiketoiminnan ja nimenomaan sen kyseisen toimialan tuntemus on aika arvokas taito nykyään. Asiasta on ruvettu jo sentään puhumaan. Tähän saakka se on ollut itsestäänselvyys meille, jotka olemme työskennelleet lähellä businesta. Liiketoimintatuntemuksen arvo korostuu nykyään, kun puhdasta koodaustyötä siirretään esim. Intiaan. Eipähän tarvitse olla omasta työpaikasta kamalan huolissaan.
Kuinkas monta ketjua täällä sitten on, jossa väitellään Java EE:n ja .NET:n paremmuudesta?
No ei kai raksaduunarienkaan palstalla rakenneta taloja vaan keskustellaan vaikka työkaluista ja tekniikoista.
Paskasoftia business-etuliitteellä on maailmassa ihan tarpeeksi ilman niistä vaahtoamistakin.
Jos luit yhtään viestiketjuja niin ymmärrät pointin. Ja pieni vinkki: jos olet tekemässä jollekin yritykselle jotain järjestelmää mikä liittyy liiketoimintaan niin silloin se on LIIKETOIMINTAJÄRJESTELMÄ. Ja ensimmäinen ehto on että se täyttää vaatimukset mitä varten se on rakennettu.
Sitäpaitsi tämä on IT-alan työ palsta, eli työkalut ja tekniikat varmaan ovat enemmän tuon ohjelmointi-palstan aihetta.
Javaa aikasemmin koodanneena ja nyt Symbianiin siirryttyäni lähinnä naurattaa koko Java. Lapsikin osaa koodata sitä, kirjoitat vain "PlayMusic" ja apuja tulee niin paljon, että kohta musiikki kuuluu.
Mutta jos meinaat osata esimerkiksi Symbiania, on ymmärettävä olio-ohjelmointi ja osoittimien käyttö todella hyvin sekä muistinkäsittely...
Symppari on hyvä esimerkki siitä, kuinka yksinkertaisistakin asioista voidaan tehdä kohtuuttoman vaikeita. Jos Java naurattaa, niin symppari lähinnä itkettää.
Ainakin itseäni kiinnostaa lähinnä saada tuloksia aikaiseksi, eikä esim. näperrellä jostakin suolesta repäistyn merkkijononkäsittelyn kanssa.
vaikeaa ymmärtää, mikäli et ole omaksunut OO-periaatteita, design patterneja ja C :n omituisuuksia. Se vaatii jotain kodarilta ja siksi monet ruikuttavat, että sillä ei oikein saa mitään aikaiseksi.
OO-periaatteita ja design patterneja voi toki soveltaa vaikka assemblerilla. Ja varmasti vaatii vielä enemmän kuin symbbari.
Symbbarin melkoisen alhainen abstraktiotaso ja huono tuottavuus ei siitä kuitenkaan muuksi muutu. Kuten yllä todettiin, niin esim. Javalla asioiden tekeminen on paljon tehokkaampaa.
Yhdessä työhaastattelussa kysyttiin aikanaan ensimmäisenä todistuksen konekielen numero, koska haastattelija oli huomannut vuosien varrella, että jotka osasivat konekieltä, osasivat parhainta ohjelmoida. Mitä lähempänä rautaa ollaan, sitä paremmin voidaan käsitellä ohjelman muistin käyttöä ja ohjelmakoodin toteutusta, ja sen mukana ohjelman keveyttä.
Kuka tahansa osaa tehdä ohjelmia, jos tarvitsee vain kirjoittaa kaksi riviä koodia ja ruudulle tulee heti näkymään haluttu näkymä. Mutta jos haluaa customisointia, dynaamisuutta ja eri toten keveyttä, niin tällä tavalla se ei kyllä toteudu.
Vaikka Symbian kuolisi, niin uskon, että hyvä ammattitaito siinä on paljon arvokkaampi, kuin esimerkiksi hyvät Java-taidot.
Jos symbbaria on koodannut edes kuukauden verran, osaa kyllä tehdä merkkijonolle kaikki mahdolliset käsittelyt heittäen. Jos haluaa tehdä pelkkiä "tuloksia" kannattaa opiskella UI Designeriksi ja piirtää nättejä kuvia. =D