Hogyan lesz valaki igazi programozó?

Azon gondolkoztam, hogy mi kell ahhoz, hogy az ember elmondhassa magáról, hogy ő igazi programozó. Hogy lehet eljutni arra a szintre, hogy azt tudja magáról elmondani az ember, nem nagyon van olyan probléma amit ne tudna megoldani. Hogy lehet eljutni, átlépni arról a szintről, hogy ismerem az objektum orientált szemléletet, a adatszerkezetet, és nyelvet, nyelveket. Hogy válik profivá valaki? Születetni kell rá, vagy meglehet tanulni?

Hozzászólások

"A legtökösebb igazi programozók közül néhány a Jet Propulsion laborban dolgozik Kaliforniában." - nem ezek a srácok voltak akik Lokheed-Martin angolszász koprodukcióval összekeverték a metrikus mértékegységeket a birodalmival és emiatt csapódott űrszonda valamelyik bolygóba? :D

najó hiába, mai napig csak draft a java "units and measures"

ugyanezt sima repulokkel is eljatszottak mar :)
espersze a kulonbozo birodalmi mertekek kozott is akkora a kulobseg, hogy egy transzatlanti jaratnal a biztonsagi tartalek sem eleg a mertekegysegek kulonbsegeinek athidalasahoz :)

Amit nem ertek:
A civil jaratok (foleg a nagyok, pl Boeing 727+, Airbus 300+, ilyenek) miert nem tolthetoek legi uton? Legtobb ilyen baleset megakadalyozhato lett volna...

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

ha észreveszik a bibit:
1-szárazföld felett van->keres egy közeli repteret és kényszerleszáll
2-tenger felett van, a közelben nincs leszállóhely-> akkor az utántöltők sem tudnak felszállni, hogy megtankolják
3-tenger felett van, a közelben nincs leszállóhely->utolérni nem fogja semmi, mert tipikusan nem szuperszonikus gépek a tankerek...

nem veszik észre a bibit, csak amikor már siklanak->tökmindegy

Katonáék előre tervezik az ilyet, szóval tudják, hogy kb mikor és hol kell majd tölteni, nincs a repülőkben ilyen "call a gas station" gomb... Az ötlet jó, csak akkor a teljes légteret le kell fedni tankergépekkel a nap 24 órájában, ami azért valljuk be nem épp reális ötlet.

Repulo: "Bazmegkifogyunk mire elernenk a repterig!!!444 ÁÁÁÁÁ!!111"
Tanker: "Oké, elétek megyunk."

Vagy akkor most ~240 emberelet ennyit nem er meg?
Akkor ugy mondom, hogy a kurvadraga repulo ennyit nem er meg? :)

Ja, es kicsit tobb katonai repter van, mint civil, szoval a tengeri lefedettseg hianyara hivatkozni nem mentovalasz.

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

A kérdés az, hogy mennyivel előbb veszik észre a bibit és mennyit tévedtek a konverzió miatt, mert ha a céltól 2 liter hiányzik az ok, mert relatíve sok ideje van a tankernek odaérni (pontosabban kevesebb a táv), de ha több?

Kényszerleszállni katonai reptérre is lehet (mármint szövetséges országéra, de legalábbis nem ellenségesre), max sok lesz a fegyveres a környéken és pár napig nem mozdulsz...de még mindig jobb mintha örökre nem.

Tengeri leszállóhelyet anyahajónak hívjuk, arra meg neccesen száll le egy 747es :P A katonai tankereknek meg qrvára nem az a dolguk, hogy utasszállítókat dajkáljanak...persze ha épp ráérnek akkor miért ne, de azért anyahajókból sem lehet hidat építeni az óceánon...

De az abszolút costless megoldás az, ha nem qrjuk el a kerozinmérő szoftvert :P

Tengeri leszállóhelyet anyahajónak hívjuk, arra meg neccesen száll le egy 747es :P
Kivéve a színes, szinkronizált amerikai filmeket :-) Sőt ott egy utas teszi le, viharban, éjszaka, az alkoholizmusa miatt kirúgott, de ez alkalommal visszahívott légiirányító utasításaival ;-)

~30%-ig tele tankkal kell elszallniuk a gepeknek, van erre is valami szabvany.

Ja és az üzemanyagot kézzel számítja a kapitány, tonnában kiszámítja mennyi kell, majd átszámolja gallonra (ha amcsi vagy angol környéken van), majd a gallont adja meg a reptérnek.
Itt kell imádkozni, hogy ne tévessze el a személyzet az amerikai gallon vs angol gallon közötti különbséget. (~3,785l vs ~4.546l)
Rá lehet jönni, hogy mekkora szopó, ha imperial gallon helyett US gallonban mérve töltenek fel :D Főleg valahol félúton az atlanti ocean felett eszrevenni :)

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

Úgy teszel mintha nem lenne egy k. nagy táblázat erre és mindig számolgatni kellene... :-)

Valszeg ki van írva a "tanksapkára", hogy ebbe ennyi megy és kész.
Majd nehogymár a pilóta ilyesmivel szarakodjon. Visz magával kis zsebszámológépet, vagy a telefonján vagy hogy gondolod...?

Gyanítható, hogy itt is a klasszikus kérés hangzik el: tele kérem. :-)

Pontosan.
Csak annyit visznek, amennyi kell a kov reptering ahol tankolni is lehet +a kotelezo tartalek.
Ferihegyrol Debrecenig tele tankkal menni egyreszt penzpazarlas, masreszt szopo, mert ugye a nehezebb gep tobbet eszik :D

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

Csodálatos, ahogy a programozás művészetétől eljutottunk az utasszállító repülőgépek tankolásáig :) Egyébként minden tiszteletem a pilótáké, ekkora monstrumokat olyan sebességnél olyan távolságban tartani egymástól (kellően konkrétan fogalmazva :P). Természetesen ez vonatkozik minden más légiakrobatára is...

A tengeri leszállóhelyett repülőgép-hordozónak hívjuk. :) Anyahajók kb. az első világháború idején voltak. A másodikban már repülőgép-hordozók vettek részt. A különbség: anyahajó hidroplánokat szállított a belsejében, amiket daruval emelt a vízre, míg a repülőgép-hordozó úszó hangár és le-felszálló pálya egyben.

Valamit elnézhettél, merthogy épp arról volt szó, hogy a JPL meg a Lockheed Martin dolgozott össze a projekten, és a JPL használt SI mértékegységeket, a Lockheed Martin meg angolszász mértékegységeket, és ezzel volt a para. Szal igazából mondhatjuk azt, hogy mindkét csapat hibázott.

Igen de az Industrial Light & Magic-nel csinaltak a legtobb trek filmet, es par jobb cgi-vel rendelkezo epizodot (farpoint, all good things) a next generationbol. szoval teljesen jogos a kijelentes, amikor a szoveg irodott meg nem volt episode 1 es az eredeti sw-k mar regen voltak.

Mindent meg lehet tanulni. Tűzz ki magadnak célokat! Kezdetnek egy Hello worldöt. Aztán egyre nagyobb dolgokat (fájlkezelés, beolvasás, változók használata). Aztán megtanulsz alapvető struktúrákat, meg algoritmusokat (sok-sok fa, lánc, gráfok, mátrixok). Aztán tanulsz mondjuk OOP-t. Ezeket kisebb-nagyobb feladatok megoldásával érted meg, gyakorolod be. Hogy ez mennyi időbe telik, az szerintem emberenként változik. Szerintem intenzív tanulással 6-7 hónap. Csak utána még nem lesz "rutinod". Ahhoz idő kell. Mint az autóvezetésnél.
Nyelvnek szerintem kezdetnek megteszi a C, aztán onnan lehet folytatni C++-szal, Javával, Pythonnal (ezek OOP nyelvek nagyrészt). De a nyelv nem igazán lényeges (persze ez is feladatfüggő) - a fontos dolog az a struktúrák, osztályok, algoritmusok tervezése, ami ugye nyelvfüggetlen.
__________
0x2A

"Tűzz ki magadnak célokat! Kezdetnek egy Hello worldöt. Aztán egyre nagyobb dolgokat (fájlkezelés, beolvasás, változók használata). Aztán megtanulsz alapvető struktúrákat, meg algoritmusokat (sok-sok fa, lánc, gráfok, mátrixok). Aztán tanulsz mondjuk OOP-t."
A gond az, hogy ezen már túl vagyok. Innen szeretnék lépni...

----
Bárcsak...

ezen már túl vagyok

Az nem gond!
Tuzz ki magad ele valamilyen celt. Akar peldaul valami egyszerubb jatekot, vagy ahogy erzed. Kezdd el fejlesztgetni, de tenyleg nagyon az alapoktol, folyamatosan bovitve, es rendesen tervezd is meg. Mire a program eler valamilyen komolyabb bonyolultsagi szintet, egeszen biztosan jonnek elo olyan problemak, amik probara tesznek, de ha nem keseredsz el, es azzal mesz neki, hogy marpedig meg akarod csinalni, akkor mindenre talalhatsz megoldast.

Mikor ezzel mar viszonylag elorehaladott allapotban leszel, addigra - szerintem - igazi programozonak nevezheted mar magad!
--
Bárki aki aritmetikai módszerekkel akar előállítani egy véletlen számot, az a bűn állapotában leledzik.

Profivá úgy válsz, hogy elkezdel élesben programozni, aztán majd kialakul.
Kezdetnek pl. vmi open source projektbe. Elcseszni úgyse tudsz semmit, mert akkor legfeljebb nem mergelik a kódod:)

Mondjuk írhatnál cmyk kezelést a gimphez:D
Viccet félretéve pl. pluginok írása különböző programokhoz tökéletes kezdés.

------------------------------------------------------
Aki utoljára nevet, annak van 56k-s modeme.

"Profivá úgy válsz, hogy elkezdel élesben programozni, aztán majd kialakul."

Lehet, hogy kicsit ingerlékeny vagyok most (megláttam életem legszarabb, leggányoltam, legösszehánytabb elbaszott tetves szarrakás PHP """"""kódját"""""", áh, rémálmaimban se akarom többet látni), de ez a legelcseszettebb hozzáállás. Ha valaki "igazán" meg akar tanulni szoftvert fejleszteni (nem csak "programozgatni"), akkor először is tanuljon meg logikusan gondolkodni (pl. nem kell minden tetves mysql_query() (az SQL kérésekről már ne is beszéljünk) előtt külön mysql_connect(), ehhez asszem nem kell nagy logika), aztán tanuljon meg algoritmizálni, utánna szépen algoritmusok, szerkezetek, stb. Ezután lehet nekiállni fejleszteni. Nem mondom, hogy közben ne írjon semmit (mert kell, különben nem lehet gyakorolni), de a belegányolunk, aztán vagy működik vagy nem túrásokat inkább hanyagoljuk.

(Tényleg bocsi, de ez a hígfos nagyon betett mára.)

Ui.: és tanuljon meg normális, olvasható, formázott kódot írni beszédes változónevekkel.

_____
Legyél egyéniség! Ne köve$d a divatot! Használj te is Ubuntut! -- Nem vagyok egyéniség. :)

Az anyag még az UTF-8 átállás előtt készült, azóta a szervert gondolom átállították UTF-8 kódolásra, és ennek az oldalnak az elejébe nem került bele a megfelelő meta-tag. Ennyi. Nem a fordító, hanem a webmaster bacta el, mert nem nézte végig a szerver 8859-2 -> UTF-8 átállításakor, hogy van-e olyan statikus oldal, aminél a karakterkódolás nem stimmel. Szerintem...

Kérdés, hogy egy profi igazi programozó-e.

Profi az, aki pénzért csinálja, amíg nem fizettek nem hajlandó még arra gondolni sem, hogy az ügy érdekében akár bekapcsolja a számítógépet. A problémát a lehető legegyszerűbben, leggyorsabban, leg költséghatékonyabban oldja meg (magyarul szarrá taknyolja az egészet). Ha a kód minőségét valaki szóvá teszi, akkor csak annyit kérdez vissza: Működik, nem?

--
Simplicitas Sigillum Veri

Megrendelője válogatja... Én anno írtam néhány nyelvhez belső kódolási szabványt, amit később a külső (al)vállalkozók számára is kötelezővé tettünk. Ha nem felelt meg formailag, megoldásaiban a kód (a szabványnak megfelelés ellenőrzését, illetve a kód minőségbiztosítását belső erőforrásból oldotta meg a cég), akkor úgy ment vissza átdolgozásra, mint annak a rendje.

A címválasztás kicsit szerencsétlen, lásd az első reagban található linket. Az "igazi programozó" kifejezésről mindenkinek ez az írás ugrik be.

A "Hogyan lesz valakiből felkészült, jó programozó?" kérdésre meg egyszerű a válasz: Tanulni, tanulni , tanulni (eddig Lenin) és sokat kell gyakorolni! Tanulni elveket, fogásokat, gyakorolni a "favágást"!
Sok más-más szerzőtől származó forráskódot is érdemes tanulmányozni, ellesni a fogásokat, idővel ezeket összehasonlítva fel lehet ismerni, hogy melyik "stílus" a célravezetőbb, hatékonyabb.
Arany szabály, hogy a forráskód legyen áttekinthető, jól kommentezett. Ezekre is vannak ajánlások, (álatlánosak és konkrét nyelvre vonatkoztatottak) amiket elolvasva szinte evidenciákat találunk, de ezek kellenek, hogy ráirányítsák a figyelmünket és tudatosítsuk magunkban.

Konkrét faladat esetén illetve majdani konkrét feladatra készülve:
Fel kell mérni, hogy milyen eszközök állnak rendelkezésre, melyiknek mik az erényei és korlátai konkrét feladatok illetve feladat tipusok esetén. Ezekhez mások véleményét megismerhetjük fórumokon is, és bizonyos esetekben az adott eszközök honlapján a fejlesztőinek ajánlását is érdemes megismerni.
Ezután az esélyes eszköztöket ki kell próbálni és kiválasztani azt ami neked az adott a feladathoz jól fekszik. Minél több eszközt ismersz meg, annál jobb.

Eszközök alatt nem csak a konkrét nyelvet és fejlesztőkörnyezetét értem, hanem a program tervezését, annak módszerét, és gépi segítését is. A jó programot (bizonyos méretek felett) dokumentáltan kell megtervezni. A tervet szükség esetén menetközben módosítani is kell, hogy milyen gyakran az erősen módszer függő.

Ja és itt is igaz, hogy: "A gyakorlat teszi a mestert!"
Az is igaz, hogy ezen az úton van aki gyorsabban és van aki lassaban képes haladni, tehát alkattól és képességektől, no meg szorgalomtól is függ minden.

"Születni kell rá,.....?" Ez olyan, mint a real és a humán beállítottság. Tehát meg lehet tanulni, kérdés az, hogy mennyi energiát kell belefektessél?!
10 éve abból élek, hogy programokat írok. Mindig van olyan probléma, amire azt mondom magamban, ezt nem tudom hogyan kell! Aztán tanulok, tanulok, tanulok... de sajnos egyre több dolog van amiről tudom, hogy nem tudom :-(.
Szerintem a jó programozó fel tudja mérni képességeit és gyengéit.

Attila

ui.: a Borland Pascal/Delphi egy nagyon jó nyelv: DOS, WIN16, WIN32, .NET, OOP, Ajax, SOAP, Apache module, IIS modul, szervize készítése, adatbázisok, ActiveX/OLE, Linux x86... Csak néhány dolog ahol vagy amire lehet használni és mindezt EGY egységes fejlesztőkörnyezetben!
Ezt nem bírtam kihagyni! :-)

Inkább Java-ban írom :-) jó!
Persze... Nem való mindenre mint a C. De nem csak tanulásra lehet használni és a Turbo Pascal 7 óta sokat fejlődött. MS Windows rendszerek alatt nagyon jó, az MS melett egy egyetlen ami még talpon van!
Ha a linux-os közösség látott volna 2000-2002 között fantáziát az ingyenes veziójában akkor ma még fejlesztené a Borland. Mivel bukta volt neki a Kylix, amit azóta is sirat minden Pascal-os, így nem tudom kérésedet teljesíteni!
Sajnos.

ugyan már!!!
Ezek az írások nem teljesen józan állapotban, a normálisnál magasabb ego-szinten készültek.Egy olyan embernek, aki nem vágyik nagyra, ismeri saját korlátait és képességeit, ez csak egy jópofa vicc. Ne légy telhetetlen!

Mi az, hogy "jó" ?

Ha a válasz az, hogy a többi programozó által elismert (a la IQ-teszt), akkor sajnos legfőképpen ehhez 1 születési adottság kell:
* a logikai absztrakciós készség. Ezzel a problémák és logikus megoldásuk végiggondolhatóak, szinte az összes variációjuk fejben lejátszható.

* ezután jön a seggfaktor, vagyis hogy mennyi ideig vagy képes egy helyben ülni, és csak a feladatra koncentrálni. Ez is nagyjából születési adottság kérdése.

* ezután jön csak, hogy egy adott problémakörben/eszközzel mennyit dolgoztál már, valahol nagyon hátul a sorban.

Személyes tapasztalatom szerint a magyar programozók kb 10-15%-a "jó".

Hogy érheti el az ember hogy abba 10%-ba bekerüljön?

Ahogy Lenin mondta: tanulni, tanulni, tanulni.

Mert suliba amit megtanulunk az enyhénszólva fos.

Mert az emberek azt hiszik, hogy az iskolaban kell megtanulni pl. programozni. Pedig ez marhasag. Az iskola arra valo, hogy egy minimalis alapot adjon es szemleletet, gondolkodas modot. Az a baj, hogy az iskolak nagy resze egyiket sem teszi.

---
pontscho / fresh!mindworkz

A recept "egyszeru" - megtanul absztraktabb modon gondolkodni a profi mernoki szemlelettel parhuzamosan - ennek az eszkoze pedig legtobbszor a matematika.

Az elerheto tudas osszegyujteset, rendszerezeset, mazsolazasat ,felhasznalasat vagyis absztraktabb gondolkodast igenyelnek az alabbi muveletek:

Az igazi programozo:
1) Elkesziti sajat operacios rendszeret.
2) Elkesziti sajat programozasi nyelvet.
3) Elkesziti sajat HW eszkozet.

Azokat az eszkozoket, amelyeket nem sajat maga keszitett, megismeri, es akar sajat igenyeire is tudja szabni.

"Hogyan lesz valaki igazi programozó?"

pl így, keni-vágja melyik program részlete.

10111011101010100011101101101010101101111010000111.....

Csak vicc vót! ;D

----------------------------------------------------------------

Ha ugy gondolod, hogy ertessz az objektum orientalt programozashoz, akkor itt egy remek kihivas. :-)

A kovetkezo egyszeru peldaprogram implementaciojat (pszeudo nyelven definialt) kell elkesziteni az altalatok jol ismert objektum orientalt programozasi nyelveken:

-----------------------------------------------------------
class Top end class
class Middle extends Top end class
class Bottom extends Middle end class

class Up
method cv(Top t) print "Up" end method
method inv(Middle) print "Up" end method
method ctv(Bottom b) print "Up" end method
end class

class Down extends Up
method cv(Middle m) print "Down" end method
method inv(Middle) print "Down" end method
method ctv(Midle m) print "Down" end method
end class

procedure main()
Up u = new Up
Down d = new Down
Up ud = new Down

u.cv(new Top)
u.cv(new Middle)
u.cv(new Bottom)
u.inv(new Top)
u.inv(new Middle)
u.inv(new Bottom)
u.ctv(new Top)
u.ctv(new Middle)
u.ctv(new Bottom)

d.cv(new Top)
d.cv(new Middle)
d.cv(new Bottom)
d.inv(new Top)
d.inv(new Middle)
d.inv(new Bottom)
d.ctv(new Top)
d.ctv(new Middle)
d.ctv(new Bottom)

ud.cv(new Top)
ud.cv(new Middle)
ud.cv(new Bottom)
ud.inv(new Top)
ud.inv(new Middle)
ud.inv(new Bottom)
ud.ctv(new Top)
ud.ctv(new Middle)
ud.ctv(new Bottom)
procedure end
-----------------------------------------------------------

Mielott lefuttatnatok, irjatok fel egy papirra, melyik sorban mit kell kiirnia a programnak (!).

Megj: A fent definialt (kepzeljetek hozza egy UML diagramot is) egyszeru pszeudo programot 14 objektum orientalt nyelven implementaltak. Mit gondoltok, milyen eredmenyek szulettek?

Az altípusos polimorfizmus és dinamikus kötés (nem) tipikus esete. Szinte minden nyelv máshogy implementálja. Amúgy meg néhány nyelvben nincs virtual kulcsszó, mivel alapból virtual az összes metódus (pl: Java, C#). A Turbo Pascal meg virtual és dynamic-ot használ, ami külön szörnyűség. Szvsz a jó programozó úgy születik, hgoy sokat olvas, és rettentően odafigyel mindenre (optimalizálás, biztonság, stb.). Meg rengeteg programozáshoz szorosan kapcsolódó dolgot kell elsajátítanod (debugging, unit testing, ill UML tervezés).

Java-ban alapból virtual minden példánymetódus, de a C#-ban nem.
Van virtual kulcsszó, ha virtualissá akarod tenni a metódusod, akkor azt explicit jelezni kell. Ez esetben a leszármazottakban felül tudod írni.
Ha a metódus nem virtuális, akkor ugyan el az ős implemetációját el tudod fedni a new kucsszóval, a két dolog azonban messze nem ugyanaz.

Sokat hallgatod a Mestert, aztan egyszer megvilagosodsz :)
==
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.

Az igazi programozó a programsorok beírása közben elérte a "4 / 0"-át.
A kevésbé jók csak futás közben.
A legtöbben persze azt se tudják mi ez, ők már soha nem lesznek igazi programozók.
:)))

Az igazi programozót azt teszi, hogy, PÉNZT KÉR ÉRTE.

Látod mennyi jótanácsot és bölcsességet kaptál!?
Biztosan erre számítottál. Az utasszállító repülőgépek légi utántöltési problámáitól kezdeve az elcsépelt programozói ősvicceken át az idefigyelj én "jól megmondom nektafrankót"-ig minden volt itt!
Kérdezz máskor is bátran, mi mindannyian itt leszünk!

Válaszolj, úgy hogy ne legyen flame.
Ne hozd fel, hogy van már hasonló topic.

Ne mondj nyelvet, mert akkor megint jön a flame, ne beszél OOP ről, mert megint jön a flame.

Egy kis flame csali:
asm/C kell ismerni és mondjuk bináris fákat baszogató algoritmusokon lehet jól gyakorolni. Meg nem árt nézni, hogy mi mekkora erőforrást emészt fel. Nem árt, ha ez ember tudja milyen rendszerhívások vannak, és miket eredményez egy libc függvény. Nem árt ismerni egy két tracer-t , meg ilyesmit. Nem árt tudni, hogyan megy végbe a forgatás, nézni mit csinált a gcc (asm -be) stb...

Ja és Isten nyelve a C , többi csak mese :)

Először ismerd meg a vasat.
Ismerd meg gyengéit és erőséget, figyeld az elektronok cikázását, gondolkozz úgy mint a vas, válj eggyé a vassal.
Használd szellemed hatalmas erejét és változtasd meg az elektronok mozgását a vasban, és hatamas dolgokra leszel képes. Az igazi mágusnak ismerni kell a vas micro szerkezetét és eszenciáját. Valamint nem árt, ha van jártasságod, az alkímiában és runamágiában. A vas titka a szilíciumba vésett runákban rejlik. De a runák véséséhez csak kevés beavtottak ért, komoly anyagi komponenseket igényel, és rengeteg mannát.

Mágikus szavak segítségével alkothatsz. Kezdetben grimoárokban talált varázsigék és rituálék tanulmányozásával is kiprobálásaval építheted tudásod. Később amikor megérted a mágia miben létét magad is képes leszel, a célodnak megfelelő varázsigét szőni.

"Keep trying" "Never give up".

Addig próbálj valamit amíg nem sikerül.
Nem kell rögtön egy komplex problémával kezdni, (pl. firefoxot (gecko-t) megszégyenítő böngészőt írni ,vagy ilyesmi )

Vannak szintek:

Sarlatan:
- onmaga sem erti meg a sajat kodjat
- szepen megirt programot is kepes elcseszni es attekinthetetlenne tenni
- szerinte kizarolag Windows ala Visual Basic-ben lehet programot irni
- A C:\-t hardkodolja mindenutt a programjaiban (elengedhetetlen a platformfuggo JAVA-hoz)

Gyenge/kezdo programozo:
- megerti azt, amit onmaga megirt (komoly eredmeny)
- rajta kivul persze senki sem erti, amit csinal
- tudja mit jelent objektumorientaltan programozni, legalabb 2 programnyelvet ismer

Profi programozo:
- mas ertelmes embernek megerti a kodjat
- ertelmes emberek altal megirt kodot folytatni tud minosegrombolas nelkul
- 2 lenyegesen kulonbozo programnyelvet (C/Java, C++/C#, Perl/VB) problema nelkul kezel
- kepes tobb platformos programot is irni

Verbeli profi:
- a szomszed ujsagarus is megerti a kodot, amit csinal (attekintheto / szep)
- gyenge/kezdo programozok munkajat kepes ertelmezni
- a programnyelv nem lenyeges, legfeljebb tobb idobe kerul mas nyelven megirni, mint amit szeret
- csak tobbplatformos, vagy konnyen portolhato programokat ir

Verbeli profi:
- a szomszed ujsagarus is megerti a kodot, amit csinal (attekintheto / szep)
- gyenge/kezdo programozok munkajat kepes ertelmezni
- a programnyelv nem lenyeges, legfeljebb tobb idobe kerul mas nyelven megirni, mint amit szeret
- csak tobbplatformos, vagy konnyen portolhato programokat ir

Nagyon nagy alszerenyseg az, ha magamra ismerek? :]

---
pontscho / fresh!mindworkz

10 Programozz sokat.
20 Csináld jobban, mint eddig.
30 GOTO 10

Ez nem feltetlen az udvozito ut.
Inkabb nezd meg, hogy a profik hogyan csinaljak.

Ennel gyorsabb tanulasi modot nemigen ismerek.

Ha talalsz a neten egy nagyobbacska programot, ami atlathatonak tunik,
akkor erdemes megnezni, hogy hogyan irtak meg.

Nagyon sokat lehet tanulni belole.

Persze a hobbiprogramozokat is inkabb a lustasag hajtja, mint a szepseg,
ezert keves igazan szep program van fenn (ez nem jelenti azt,
hogy ezek nem stabilak).

A fent elhangzottakhoz hozzá (tanulni, tanulni, tanulni, sok seggelés, sok gyakorlás):
Szerintem némi kocka vagy hacker hajlam ad csak jó alapot mindezekhez.

Adott egy team, tagjai középiskola végén járó egyedek. Két féle csapattag van: akinek van magánélete és prioritásban sokszor azt teszi előre, és van aki igazi programozó hajlam (magyarán kicsit kocka).
Abból aki inkább kimegy focizni, haverokkal kódorog, mozizik, strandol, hobbi az egész abból nem lesz igazi programozó, sőtt még középszintű sem, megmarad a hobbi kategóriában.
Abból aki kicsit kocka és a feladat tényleg érdekli abból lesz jó és lehet igazi programozó is.

Akármilyen tevékenységet nézel meg (rajz, festés, tánc, autóvezetés, zene) az igazán jó abból lesz aki képes feladni akármit a választott hivatásért és van hozzá minimális a szakmához szükséges vele született képessége (jelen esetben a jó logikai képesség, matek és a többi fent felsorolt).

Én már lassan 10 éve csinálom, és most már elmondhatom magamról, hogy nyelv függetlenül probléma szintjén gondolkodom, hamar tanulok meg új nyelvet (napok alatt). Ezek is kellenek, de hogy én jó programozó lennék? Kizárt. Még 10 év vagy több.

Mi az hogy "igazi" programozó, mi az, hogy "profi" ?
Szerintem azt jelenti, hogy ebből él, pénzt kap érte. Ha ilyen szempontból közelíted meg, akkor nincs másra szükséged, mint körbenézni az ismerősök között, ha vannak cégvezetők akiket még a TSZ elnökségből ismersz akkor nyert ügyed van, szólsz, hogy te most programozó vagy, aztán delphi/VB -ben (szigorúan nem .net) összegányolsz valamit, aztán ebből élsz, ergo profi programozó leszel. 10 programozóból 9 nálunk ilyen, legalábbis én ezt tapasztalom...

Ha arra gondolsz, hogy hogyan lehet megtanulni jól programozni, sehogy, erre vagy alkalmas az ember, vagy nem, ez nem olyan, mint betont keverni. Lehet flame-elni, de ez így van és ezen 5 év BME meg 40 könyv sem segít. Attól még lehetsz "profi", a szó valódi értelmében...

Természetesen érdemes próbálkozni a tanulással, tanulás nélkül nem megy, átlag felüli számítástechnikai érdeklődéssel pedig jó esély van rá, hogy akár jól programozzon.

"(egyébként szeretem az olyan hozzászólásokat, ahol egy ember kinyilatkoztatja a nagy igazságokat)"

Egyébként hol nem mondtam igazat. Tételezzük fel, Átlagos József, 30 éves, hidegburkoló szakmunkás, 7 általános, programozni szeretne, mert megtetszik neki a fizetésem. 5 év BME, és 40 könyv elolvasása után sem tudna érdemben hozzászólni ahhoz, amit csinálok, _kivéve_, ha kivételes adottságokkal rendelkezik, dehát pont ezt írtam a hozzászólásomban.

Na ebből most le is jön a hozzáállásod. Nem kell azért zseninek lenni a programozáshoz szerintem és a hozzászólásod alapján te se vagy az. Én nem tartom magam zseninek de amit összeszedtem az könyvekből van meg persze gyakorlás gyakorlás gyakorlás. Nem kell ehhez semmiféle szuperképesség egyszerűen csak idő és tanulni akarás. Mert te meg tudod ezt tenni nem vagy holmi zseni azért :) az ilyen beszólások arra jók hogy a kezdők inkább hozzá se fogjanak ... :)

Mi ezen a meghökkentő? Programozó csak úgy lesz valakiből ha folyamatosan tanul, amit tanul azt átülteti a gyakorlatba,és próbál minél újabb eljárásokat, techinkákat megtanulni.De igy van ez sok más dologgal is. Nem vitatom az előttem szóló hozzáértését meg rátermettségét csak azzal nem értek egyet hogy a programozás valami misztikus elvont fogalom amire születni kell. :) Próbálkozni kell. Ennyi. Nincs ezen semmi meghökkentő. Szerintem. :)

Csavarjuk a dolgokat rendesen. Annyit írtam, hogy a programozáshoz kell egyfajta alkalmasság, ugyanakkor azt is írtam, hogy akit átlagon felül érdekelnek a számítógépek, az jó eséllyel alkalmas. Csak ne mondjuk már, hogy bárkiből lehet jó programozó, ha előveszi a könyvet... mert ez nem igaz. Rengeteg infót, könyvet lehet lehet találni rajzolással, zeneelmélettel, irodalommal kapcsolatban, mégis mindekinek egyértelmű, hogy ahhoz, hogy jó festő, zeneszerző, író legyél, ennél egy kicsit több kell. Miért olyan nehéz elképzelni, hogy az informatika, azon belül a programozás is ilyen? Pláne, hogy jórészt informatikusok, programozók, stb vagyunk itt...

Jah igen. mondjuk ebben igazat adok neked hogy egyfajta matematikai látásmódnak ki kell fejlődi ami algoritmizáláshoz elengedhetetlen. Csak fentebb egy picit ezt eltúloztad mert talán ezek a képességek is fejleszthetők. Én pl matekból haramatgyenge vagyok programozgatni(nem véletlen írom így) szeretek. Tanulok olvasok csinálom amennyit kell.Persze egyetem az nem jó terep erre ott az alapok megvannak erre de mondjuk azokat az alapokat 2-3 én múlva ki is dobhatod a francba.
De azért szólhatnál pár pozitív szót a feltörekvő ifjúságnak. :) Mert az első postod nem hatott inspirálónak. :) Én is kíváncsi lennék a javaslataidra.

Az OP-ban elhangzott a kérdés, hogy ezt lehet tanulni vagy nem, írtam hogy nem, ebből indult ki az egész, mert mások szerint meg igen.

Pozitív szó? Lássuk. A napi munkám során sok ügyféllel találkozom, sok kóddal, sok szerverrel. Rack számra kell tolni a vasat olyan alkalmazások alá, ami egy kicsit is ésszerűen megcsinálva elmenne az asztali gépemen is. Próbálom visszanyerni az ügyfél bizalmát, aki egy-egy "tanult programozókkal" való tapasztalt után elveszti a hitét az informatikában. Lehetne ragozni.

Ha valaki tehetségesnek érzi magát:
- angol nyelv minimum megértése. Lehet, hogy az elmélet megy nélküle is, de kész és korszerű program nem lesz. Az API doc angolul van, a könyvek angolul vannak, a fórumok angolul vannak, stb. Ezek a dolgok jellemzően nagyon lassan kerülnek fordításra, nem is beszélve a tananyagba való bekerülésről.. mire valami "trendi" lesz, magyarul is elérhető, sőt még one-click megoldás is lesz belőle, addigra a "profik" már rég más technológiákkal dolgoznak.
- a jó programozó, képes bármit 5x-10x újraírni, mert elégedetlen az eredménnyel.
- a jó programozó képes egy projektet befejezni.
- a fenti két dolog együtt értelmezendő. Számos wannabe kóder van, aki ugyan képes valamit "befejezni", de az a dolog nem lesz jó, lassú lesz, vagy értelmezhetetlen, stb.stb. Ugyanakkor rengeteg tehetséges embert ismerek, akik pengén vágják a kódolást, akár általánosságban, akár specifikusan, de soha nem lennének képesek egy projektet végigvinni.
- szerintem ha valaki be tud fejezni valamit, de lelkiismeret-furdalása van, hogy meg lehetett volna jobban is csinálni, csak nem volt rá idő, és el is tudja mondani, hogy mit csinált volna másképp, akkor lehet jó programozó.
- ha valaki a különféle framework-öket azért használja, mert megérti a működésüket, a munkáját próbálja könnyíteni, de anélkül is el tudná készíteni, sőt a framework rá vonatkozó részét is meg tudná írni, az lehet jó programozó
- stb.

hajaj :)

en is tudnek meselni milyen arcokkal talalkoztam.

es akkor egy realworld scenario: (igenigen, nagy az arcom, tudom. de mint Pontscho en is magamra ismertem fent :P)

van egy ceges egyelore fejlesztes alatt allo termekunk, amit par honapja apolgatok. megirtam. belokom egy DL360asra (G3,
2x3G xeon, 4G ram).. nezem topot. lassu. de nagyon. na mondom ez nem lesz jo :-)

atirtam egyszer, kioptimizaltam itt, kioptimizaltam ott. meg mindig megeszi a vasat... na mondom, mitevok legyunk.

ujrairtam az egesz buffering mechanizmust, ujraterveztem a modulok kozotti interakciot... mostmar egesz jo sebesseggel fut,
de holnap meg tervezem a core modositasat performancia erdekeben.

es mit ad isten: lement a cpu hasznalat 120% -ra az eddigi 270-300rol :-)

szoval semmi sem lehetetlen, max melos...

bakker amiről én beszélek ott nem hogy buffering mechanizmus, de semmi nincs. Web alkalmazás requestenként hív "grep" executable-t egy N*Y megás csv-re. Táblákat lockol jobbra-balra, néha közben elszáll persze, meg az unlock előtt még betesz egy ilyen csv-s greppet, aztán csodálkozik hogy n*10000 user alatt a sokprocesszoros gépen a sok szál mind csak a lockra vár. Aztán a hülyék mi vagyunk, mert neki a desktop gépén localhoston tök gyors, nézzem csak meg, fél mp alatt bejön az oldal. :( Végeredmény: 2-4mp/request éles üzemben, hasonló funkcionalitású saját kód 800-1000/req/sec a nem túl korszerű (Opteron 144) asztali vasamon. Végfelhasználó meg toporzékol amikor azt mondjuk, most vagy veszel 2 racknyi vasat, vagy fizetsz nekünk egy taliga pénzt és újraírjuk, vagy ilyen marad. Smiley lenne, csak egy idő után már nem vicces. És ez még az enyhébb eset, desktop delphi/vb kóderek sokkal durvábbak

Tehát minden jó programozó programtervező-matematikus végzettséggel születik :). Nem értem mi ez a hülyeség, tehát akkor senki ne is kezdjen bele a programozásba mert nem lesz soha profi. Félsz a konkurenciától?:). Szerintem hittel elég sokat el lehet érni, szerintem a emberi elme nem ilyen "statikus". Próbálkozni tanulni és minden sikerülhet. Későbbi kommentedben írtad, hogy szakmunkások akarnak programozni. Na és akkor? Honnan tudod, hogy már a te állításod miatt is -profi programozónak születni kell- nem lesz éppen belőle profi? Persze nyílván vannak akik így mennek oda, hogy programoznának, de még a leg alapvetőbb dolgokat sem hajlandóak elsajátítani. Szerintem puszta munkával és kreativitással elsajátíthatóak a dolgok.
" Kiemelkedő eredmény : 99%Munka, 1% zsenialitás" (nem pontosa így volt, de a lényeg benne van).

rengeteg tanulas: hogy legyen hol elindulnod
sok gyakorlas: hogy elsajatits egy "latasmodot", es ugy allj hozza, hogy hogyan tudod megoldani a problemat, nem pedig hogy hogyan nem.
kreativitas: hogy ne csak azt tudd megoldani, amit eddig megtanultal/lattal, hanem az uj problemaknal is legyen legalabb egy elkepzelesed, hogy hol indulhatsz el
onbizalom: hogy el tudd magad adni, es ezaltal olyan helyekre kerulhess, ahol tovabbfejlodhetsz (ennek szvsz feltetele az osszes korabbi)

Elmész egy egyetemre, ahol megtanítják, nem szállsz ki BSc után (minimum MSc, de phd-ig is elmehetsz), és becsülettel végigtanulod, esetleg kutatsz.

---------
"Ha igazat mondasz azt végig unják, ha feldíszíted azt jól meg dugják"
szerény blogom -- új címen!

oooo?!
elsoeves vagy? :o

bocs, de ez ledobbentett.

1, az egyetem nem tanit meg programozni. a fele selejt, a maradek fele eletkeptelen,
annak a felet kivagnam. az igy maradt par szazalek meg vagy erre szuletett vagy
nem.

2, PhD? megorultel? neztel mar doktori iskolaban programokat? sirvarohogos, komolyan.
(en neztem, akartam PhDzni, pont eddig a pontig.)

3, kutatsz? es ettol jo programozo leszel? :-)
en lehuztam masfel evet kutatassal, hat... :-)

a BSc->MSc dologgal meg egyetertek, de a tobbi eleg hulyeseg.

Micoval ertek egyet, vagy programozni szulettel, vagy nem. ha nem, akkor az isten
se segit rajtad. egy bme vegkepp nem, de majd a mernokur ugyis kijavit ;)))

áh, dehogy javítunk itt ki. nagyrészével én egyet értek, egyetemen se BME-n se ELTÉN nemfogsz megtanulni
programozni, csak önszorgalommal, és autodidakta módon juthatsz túl a hell0 w0rld szinten,
márha megvannak azok a készségeid amik kelleni fognak a programozáshoz.
A programozási órák tájékoztató jellegűek, tudj pár dolgot hogy a világon vannak, ennyi
ezt nálunk soha egyik oktató sem tagadta.
másrészt a "szabadságod" után kicsit hagyunk érvényesülni had örülj :))

KODOT OLVASOL.

Sokat. NAGYON sokat. Irj modulokat, fejlessz, modosits. Letezo programokat kell atirnod, letezo programoknak kell uj funkcionalitast adnod. Mindegy milyen nyelven - minel tobb, annal jobb. Aztan majd lassan, evrol evre, egyre tobbet latsz a dologbol. Aztan majd kibirhatatlan elmeleti szakember leszel, mint en, akit a friss kodergyerekek nem ertenek, mitol tunik olyan egyszerunek neki minden, meg miert kapnak leb.szast ha a kodjuk nem felel meg a megbeszelt elkepzeleseknek.

google://"Programozói páternoszter"

A fórumozásra ráérő emberek egy része a google szüntelen szűrögetése nyomán ismerkedett meg a függvénykönyvtárakkal és a majonézzel,és öt percnyi stelláriumozás után opensource guruként kelnek fel a gép mellől.

Sohase mondd a barátnődnek azt, hogy "a Google a te legjobb barátod".
------------The New Mecca------------

jó is az:)
különben honnan tudnád, hogy "nincs végtelen ciklus csak önfeláldozó"?

off:
...viharért nem oda irja a szövegemet ahova a válasz-t nyomtam?