Jump to content

Како почети учење програмирања?

Оцени ову тему


Препоручена порука

У међувремену, да бацим овде пар мисли на питање - шта је то "добар програмер"?

Обично људи мисле да доброг програмера чини велико знање технологија, програмских језика итд. Знање је свакако битно, али није главно. Добар је и цени се пре свега онај ко завршава посао. А сваки програмерски задатак може да се уради на сто различитих начина од који су неки "софистицирани", а неки "уз помоћ штапа и канапа". На крају је важно само - да ли ради поуздано.

Да се направи поуздан компјутерски програм најважније су неке карактерне особине. Упорност, систематичност, фокус, истрајност, вештина комуникације и сл. Треба сваки дан доћи за исти екран, отворити исте фајлове, пробати једну исту ствар сто пута, бележити све што приметиш или није јасно, постављати питања до бесвести и сл. Просечан програмер који има те особине биће десет пута продуктивнији од некога ко има докторат и зна сва знања, а нема их. Ми такве зовемо "architecture astronauts" - они вечито нешто "пројектују", измишљају топлу воду, проналазе компликоване начине да се реше једноставни проблеми и свима загорчавају живот. Такви су посебно досадни и деструктивни ако се дочепају неке менаџерске позиције, али их тимови обично брзо науче памети.

Са друге стране имаш људе који се ничим посебно не истичу, чак неке ствари раде на тотално застарео начин - и завршавају све што им даш без проблема. Такви "duct tape" (селотејп) програмери су злата вредни. Не губе време, само цепају и све завршавају. Имам колегу који још увек користи "епсилон" едитор од пре 30 и кусур година, уопште не користи Visual Studio и све те нове алате. Човек разбија. Значи, нема шта не може да направи. Једна од најпаметнијих особа које сам упознао у животу.

Значи, неко ко буде упоран и заврши овај наш курс, ладно може да буде продуктивнији од некога ко има факултет и "десет година искуства". Само ако је систематичан, упоран, дисциплинован итд. Данас знање није никакав проблем, све што ти икад буде требало за десет секунди можеш да нађеш пример/одговор на интернету - ископираш у програм, пробаш. Ради. Идемо даље.

Ето, мислим да је ово било битно да се нагласи.

ΜΟΛΩΝ ΛΑΒΕ

Link to comment
Подели на овим сајтовима

  • Одговори 142
  • Креирано
  • Последњи одговор

Популарни чланови у овој теми

  On 20. 3. 2017. at 21:53, Grizzly Adams рече

Ми такве зовемо "architecture astronauts" - они вечито нешто "пројектују", измишљају топлу воду, проналазе компликоване начине да се реше једноставни проблеми и свима загорчавају живот. Такви су посебно досадни и деструктивни ако се дочепају неке менаџерске позиције, али их тимови обично брзо науче памети.

Са друге стране имаш људе који се ничим посебно не истичу, чак неке ствари раде на тотално застарео начин - и завршавају све што им даш без проблема.

Expand  

Слажем се да су ”астронаути” заиста штетни ванземаљци. Претпостављам да ту мислиш на ове agile, scrum, factory of a factory of a factory... менаџере. 

Али морамо некако разликовати истински напредак технологије од менаџерског булшита. Ако ову тезу о ”једноставности” и ”примени застарелих начина насупрот 'компликовања'” следимо до екстрема, доћи ћемо вероватно до тога да јe најсавршенији језик можда C уз пар преправки. Сам C# је већ прекомпликована новотарија.  

На пример, да ли мислиш да је LINQ ”комликован начин да се реши једноставни проблем”?

Link to comment
Подели на овим сајтовима

@Juanito, добар коментар. Ја волим нове технологије, тј. најбоље обожавам да се са њима играм. Само хоћу да кажем - не треба изгубити из вида крајњи циљ - да се заврши посао. Нисам против нових технологија, него за њихову правилну и прагматичну употребу. Крајњи тест је колико ефикасно си завршио посао. Ако ти је у томе помогла нека нова технологија - супер! Ако си се само замајавао нечим што "звучи интересантно" онда не ваља.

LINQ волим, користим га стално. Мада он може понекад да буде незгодан ако не знаш тачно како функционише "изнутра".

  • Волим 1

ΜΟΛΩΝ ΛΑΒΕ

Link to comment
Подели на овим сајтовима

  On 20. 3. 2017. at 22:21, Grizzly Adams рече

Само хоћу да кажем - не треба изгубити из вида крајњи циљ - да се заврши посао.

Expand  

Ма слажем се са свим што си рекао, само хоћу мало да философирам. 

Шта тачно значи ”завршен посао”? На пример, да ли су ове силне рогобатне Web апликације које видимо око себе ”завршен посао”? Онај што је направио PHP је рекао баш то: ”Ја нисам програмер, ја сам инжењер. Није ми била намера да дизајнирам програмски језик, него да направим алат да ми заврши посао”. Ках, ках... Некако ми се чини да су бољи посао са језицима одрадили ови што су ”компликовали” и размишљали о што бољим, а не само било каквим решењима...

То да човек може превише да закомпликује и оде у непотребну апстракцију ми је савршено јасно и познато. Причали смо о томе и ономад уз пиво и закључили да нам је то некако ”у крви”. Увек се зезнемо и прерано мислимо о сувише генералном решењу. Али да ли је свако ”завршавање посла” добро?

У крајњој линији, програмирање није нека ад хок вештина, већ се заснива на математици (иако програмери не морају да је знају). Као што се грађевина заснива на физици и посредно математици. Можеш ти да ”завршиш посао” кад правиш кућу, али то не значи да та кућа није подложна законима физике. Софтвер не подлеже законима физике (осим на најнижем нивоу), али подлеже законима математике. На жалост, код софтвера је јако тешко заменити лоше технологије бољим јер све мора да буде компатибилно. Код грађевине је једноставно - свако побољшање можеш одмах да примениш на све нове грађевине. Нису сва ова решења која данас користимо најбоља могућа, већ су сплет разних околности. Седамдесетих се примио C и онда су практично сви мејнстрим језици засновани на њему. Али су се истовремено појавили језици који се кренули са супротне стране апстракције (Lisp, ML и братија). Људи су тада рекли: ”Ма то је све компликовано, довољан је C”. A ево само неколико примера из тих језика без којих се данас тешко може замислити било који модеран: структуре података, сакупљач отпадака, generics (ML), lambdas... Испоставило се да та решења у крајњој линији воде једноставнијем дизајну, а не компликованијем. Људи су одбацили као прекомплексно нешто што у почетку нису разумели. Било је потребно 30 година да се увиди да то није баш тако. Штавише, Lisp је један од најједноставнијих могућих језика који омогућава изражавање на највишем нивоу апстракције уз минималан број уграђених конструката. Можеш да научиш цео језик два дана буквално. Кад смо код Лиспа,баци поглед на овај есеј који се баш бави овим о чему причамо:

http://www.paulgraham.com/avg.html 

Наравно, друга крајност су чистунци који не признају код који није математички беспрекоран. 

Link to comment
Подели на овим сајтовима

  On 20. 3. 2017. at 21:53, Grizzly Adams рече

У међувремену, да бацим овде пар мисли на питање - шта је то "добар програмер"?

Добар је и цени се пре свега онај ко завршава посао. А сваки програмерски задатак може да се уради на сто различитих начина од који су неки "софистицирани", а неки "уз помоћ штапа и канапа". На крају је важно само - да ли ради поуздано.

... Упорност, систематичност, фокус, истрајност, вештина комуникације и сл. 

... "architecture astronauts" - они вечито нешто "пројектују", измишљају топлу воду, проналазе компликоване начине да се реше једноставни проблеми и свима загорчавају живот..

... Такви "duct tape" (селотејп) програмери су злата вредни. Не губе време, само цепају и све завршавају.

... за десет секунди можеш да нађеш пример/одговор на интернету - ископираш у програм, пробаш. Ради. Идемо даље.

 

Expand  

Takvi su najgori, ako mene pitaš, a govorim iz iskustva. Eno, sam si mi preporučio knjigu Economics in one lesson. I šta u njoj piše: da šta god da želimo da uradimo, potrebno je da sagledamo ne samo neposredne i vidljive posledice, već i dalekosežne. A posledica takvog copy-paste ,,rada" je kod uvezan i zapetljan izvan granica ljudskog shvatanja, bez testova, beskonačne entropije i stohastički ,,predvidiv" (da se tako ,,poetski" izrazim). To je možda dovoljno za MVP, ali na duže staze stvara velike probleme, nemogućnost održavanja, i užasan stres svakome ko to preuzme, a cena održavanja raste eksponencijalno, što naravno oni koji plaćaju ne znaju.

Prekomplikovanje jeste problem, upravo sada radim na projektu na kome su dogmatski pratili inače dobre principe, i sad ima toliko slojeva i nivoa indirekcija da je to nemoguće pohvatati, jednostavno ljudski mozak je ograničen. Ali opet je lakše i izdebagovati i popraviti i proširiti neko špageti klupko koje je neko zamotao na brzinu. Ali oba slučaja su izuzetno stresna.

Dobar programer, ili sada već bolje reći inženjer je onaj ko piše ČIST kod. Odličan je onaj ko piše čist i elegantan kod. Dakle onaj ko fino izbalansira između jednostavnosti i apstrakcije, i naravno rokova.

A ko dobro prolazi. Pa zavisi. Na tehničkom planu ovi dobri programeri, i uz to je pitanje ko će to uopšte da primeti. Na planu napredovanja u smislu nekog ranga dobro prolaze pre svega oni koji su dobri komunikatori, ne moraju biti tehnički najpotkovaniji, i naravno podrazumeva se da imaju dobar odnos sa onima koji o tom napredovanju odlučuju. Može se napredovati i tako što nakon par godina iskustva pređeš u drugu firmu, gde nisu videli tvoje početničke greške.

,,One bad programmer can easily create two new jobs a year." David Parnas

Link to comment
Подели на овим сајтовима

  On 20. 3. 2017. at 22:50, Juanito рече
Expand  

Негде у то време сам на факсу правио управо LISP интерпретер... Сјајно искуство! :)

ΜΟΛΩΝ ΛΑΒΕ

Link to comment
Подели на овим сајтовима

  On 20. 3. 2017. at 21:53, Grizzly Adams рече

У међувремену, да бацим овде пар мисли на питање - шта је то "добар програмер"?

Expand  

Da bi neko mogao sebe nazvati programerom ipak mora znati još ponešto, barem neke osnovne stvari koje nisu u neposrednoj vezi sa programiranjem ali jesu vezane za račuanare i njegovo funkcionisanje. Zar ne?

Npr. ja nikad nisam reinstalirao sistem. Niti sam čistio prašinu iz njega kada bi mi bio crn ekran zbog prašnjave grafičke. Nisam menjao harvderske komponente sam. Ne znam koji antivirus treba da imam i kako se to menja s vremena na vreme. Kada bi bilo potrebno nešto od toga zvao bih ortaka koji to radi. Sad, verujem da ništa od toga nije intelektualno zahevan posao, vec sam samo bio lenj. Evo vidim ima dosta tutorijala na takve teme... Međutim, šta još treba da se zna? Ljudi koji kreću sa programirnajem uglavnom dobro poznaju kompjutere ovako uopšte. Mene je uvek smaralo da čitam Svet Kompjutera :(

Link to comment
Подели на овим сајтовима

  On 21. 3. 2017. at 9:30, Tumaralo. рече

Da bi neko mogao sebe nazvati programerom ipak mora znati još ponešto, barem neke osnovne stvari koje nisu u neposrednoj vezi sa programiranjem ali jesu vezane za račuanare i njegovo funkcionisanje. Zar ne?

Npr. ja nikad nisam reinstalirao sistem. Niti sam čistio prašinu iz njega kada bi mi bio crn ekran zbog prašnjave grafičke. Nisam menjao harvderske komponente sam. Ne znam koji antivirus treba da imam i kako se to menja s vremena na vreme. Kada bi bilo potrebno nešto od toga zvao bih ortaka koji to radi. Sad, verujem da ništa od toga nije intelektualno zahevan posao, vec sam samo bio lenj. Evo vidim ima dosta tutorijala na takve teme... Međutim, šta još treba da se zna? Ljudi koji kreću sa programirnajem uglavnom dobro poznaju kompjutere ovako uopšte. Mene je uvek smaralo da čitam Svet Kompjutera :(

Expand  

У рачунарским наукама чак постоји мишљење да програмирање нема много везе с компјутерима. :smeh1:

Link to comment
Подели на овим сајтовима

  On 21. 3. 2017. at 9:51, Juanito рече

У рачунарским наукама чак постоји мишљење да програмирање нема много везе с компјутерима. :smeh1:

Expand  

Pa dobro... al kod srpskih poslodavaca stvari stoje drugačije :) Čujem da očekuju da znaš sve. Da za jednu platu radiš posao tri čoveka. Otprilike sve osim proizvodnje delova računara.. Ali kao što reče Grizzly- o zaposlenju treba razmišljati kasnije. Ček prvo da se nauči štogod xD

Link to comment
Подели на овим сајтовима

  On 21. 3. 2017. at 9:30, Tumaralo. рече

Da bi neko mogao sebe nazvati programerom ipak mora znati još ponešto, barem neke osnovne stvari koje nisu u neposrednoj vezi sa programiranjem ali jesu vezane za račuanare i njegovo funkcionisanje. Zar ne?

Expand  

Па можда да буде "напреднији корисник", али ништа посебно. Све се то научи успут. Не треба ти знање о хардверу, поправљање итд.

ΜΟΛΩΝ ΛΑΒΕ

Link to comment
Подели на овим сајтовима

  On 21. 3. 2017. at 10:15, Tumaralo. рече

Pa dobro... al kod srpskih poslodavaca stvari stoje drugačije :) Čujem da očekuju da znaš sve. Da za jednu platu radiš posao tri čoveka. Otprilike sve osim proizvodnje delova računara.. Ali kao što reče Grizzly- o zaposlenju treba razmišljati kasnije. Ček prvo da se nauči štogod xD

Expand  

Па кад мало погледаш ствари, код нас у ит сектору,можда имаш и више страних послодаваца,неголи наших...

Истина је да је код нас велика потребама за овим пословима,али оним искусним сениорима фронтенд,а посебно бекхенд програмерима...

А до тог ступања,треба би ти реално бар 3 године непрестаног рада...

Као јуниор није баш лако се запослити,неће нико да те учи тек тако,евентуално да волонтираш,а знам по својо девојци...

 

"Све оно што ми можемо да одлучимо јесте шта да урадимо са временом које нам је дато"

Гандалф

Link to comment
Подели на овим сајтовима

  On 21. 3. 2017. at 13:06, Grizzly Adams рече

Не треба ти знање о хардверу, поправљање итд.

Expand  

 Али може да буде корисно.

 Замисли ситуацију, комшиници затрокира рачунаљка и позвони ти на врата:

- Здраво комшија, како иде? Е, нешто неће ова моја справа да се покрене већ два дана. Били ти могао нешто ту да покушаш? (ставља руку на твоје раме, набацује заводнички смешак) Прича се по крају да си јако добар... (намигује) стручњак.

А ти одговориш:

Јао, комшинице, радо бих припомогао, али нажалост, нисам компетентан за враћање рачунаљки у живот јер сам микро софт... програмер. Него, иди ти код комшије Пере званог ”Солид Стејт Драјв” који је хард... хардвераш најбољи у крају.

Мислим, не иде тако, признаћеш...

Link to comment
Подели на овим сајтовима

  On 21. 3. 2017. at 13:37, Зосима рече

Као јуниор није баш лако се запослити,неће нико да те учи тек тако,евентуално да волонтираш,а знам по својо девојци...

 

Expand  

Volontirao bih, samo sam čuo da firme uglavnom ne primaju na besplatnu praksu :/

Kako doći do volontiranja?

Link to comment
Подели на овим сајтовима

  On 21. 3. 2017. at 14:12, Tumaralo. рече

Volontirao bih, samo sam čuo da firme uglavnom ne primaju na besplatnu praksu :/

Kako doći do volontiranja?

Expand  

Немој да се бринеш за проблеме који се још нису десили. :)

Ајде на ону другу тему па заврши цело поглавље. Чекам питања.

ΜΟΛΩΝ ΛΑΒΕ

Link to comment
Подели на овим сајтовима

×
×
  • Креирај ново...