Eu programo computadores desde os 12 anos de idade (j fazem 12 anos). Durante todos esses anos programando e estudando, eu acabei descobrindo algumas qualidades e alguns esforos que fazem a diferena entre um bom programador e um programador mediano. ostrarei aqui essas qualidades e esforos que julgo mais importantes. !uando digo "programador", #oc$ pode entender "programador %& 'nalista (rogramador %& Engen)eiro de *istemas %& 'rquiteto de *istemas %& Esco#ador de +its". (rogramador , a pessoa que programa computadores, n-o necessariamente quem gan)a a #ida fazendo isso. 't, meus 1. anos eu ac)a#a que programa-o era s/ um di#ertimento, eu n-o pensa#a em le#ar isso como uma profiss-o. (*im, eu n-o pensa#a em programa-o como uma profiss-o. 0anto que, com 11 anos, eu entrei no curso de 2ela3es 4nternacionais. % grande problema era que eu ia para a faculdade com um li#ro de 566 embai7o no brao. E, apesar de adorar as aulas de Economia, 5i$ncias (ol8ticas e 5i$ncias *ociais, eu abandonei a faculdade depois do 19 ano) Se voc ainda no um programador mas tem interesse em ser um, talvez seja melhor voc ler antes o artigo Como ser um programador.
#oc$ ac)e desnecessrio saber como funciona o gerenciamento de filas do dri#er de teclado, isso pode ajudar um dia. 4nforma-o nunca , demais. 5on)ecer bem um computador e seu funcionamento , uma das coisas que define um bom programador. (oder de abstra-o, capacidade para resolu-o de problemas e racioc8nio l/gico s-o outras qualidades que le#a algu,m a ser um bom programador. as a qualidade essencial , a curiosidade. &m bom programador quer saber tudo que acontece, mesmo que aparentemente ele no precise. &m programador mediano se satisfaz somente com um resultado esperado.
E7istem di#ersas outras qualidades que ajudam, como um bom relacionamento interDpessoal e facilidade de negocia-o, mas aqui eu falarei especificamente sobre o que tange a rea t,cnica. Eu n-o entendo nada de 2E, psicologia, intelig$ncia emocional, intelig$ncia e7traespacial ou qualquer dessa coisas. Esse artigo , para quem pretende ser um bom esco#ador de bits, n-o para quem pretende passar em todas as entre#istas de emprego ou conseguir uma namorada pelo *> essenger. :D)
tamb,m estou aprendendo di#ersas coisas sobre o mercado de a3es e de mercadorias e futuros. E esses con)ecimentos "paralelos" me ajudam bastante quando me sobra algum din)eiro para in#estir. :D) %s problemas em programa-o podem ser mais ou menos t,cnicos, dependendo da sua rea de atua-o. *e #oc$ #ai fazer um fire@all (como eu estou fazendo), #oc$ tem que saber 05(H4(, programa-o de dri#ers, etc. *e #oc$ faz sistemas para a rea bancria, apesar das linguagens e t,cnicas de programa-o utilizadas serem comparati#amente mais simples do que as necessrias para fazer um fire@all, #oc$ tamb,m ter que entender como funciona um banco (ou uma parte dele). ' rea de desen#ol#imento de sistemas , multidiciplinar, porque geralmente en#ol#e con)ecimentos di#ersos para a resolu-o de um problema.
Saber ingls
' afirma-o ", necessrio saber ingl$s para ser um bom programador" , um pouco pol$mica, mas , min)a opini-o. ' sinta7e das linguagens de programa-o , feita de pala#ras em ingl$s. ' documenta-o das linguagens e ferramentas est em ingl$s. Coc$ pode fazer programas somente com no3es bsicas de ingl$s, sem problemas. as se #oc$ quer ser um programador cada #ez mel)or, #oc$ ter que estudar bastante. E como as documenta3es que #oc$ ter que estudar est-o todas em ingl$s, #oc$ n-o ter outra alternati#a. %utro fato rele#ante , que a maioria das tradu3es de li#ros para portugu$s s-o p,ssimas. Coc$ sabe o que , +4D ( apa de +its 4ndependente de Dispositi#o), gabarito ou lin)aI *-o, respecti#amente, +40 '( (sim, o tradutor te#e a incapacidade mental de traduzir a sigla), template e t)read. 'lgumas coisas podem ser traduzidas, outras n-o. 0udo bem falar em lista ligada, mas gabarito , de matar. as e7istem algumas e7ce3es, j #i alguns li#ros com tradu3es muito boas. !uanto aos li#ros em portugu$s escritos por autores nacionais, tamb,m , bom ter cuidado. e parece que algumas editoras nacionais n-o t$m um corpo t,cnico capacitado o suficiente para a#aliar a qualidade de um li#ro, e e7iste muita porcaria publicada, com pouco conteJdo e um screens)ot por pgina. as , claro que e7istem e7ce3es, , s/ pesquisar um pouco mais sobre o li#ro antes de comprar.
(etzold e o 'd#anced Findo@s do ?effreM 2ic)ter, l$Dlos, e depois procurar na 4nternet tutoriais e detal)es espec8ficos para as suas dJ#idas. %s bons li#ros t$m tudo que #oc$ precisa em um lugar s/. !uando #oc$ est iniciando em um determinado t/pico, #oc$ simplesmente no sabe por onde comear nem o que procurar. Camos usar o e7emplo do .>E0. (ara ser um bom programador .>E0, al,m de saber 5N ou C+.>E0, #oc$ precisa saber como funciona a runtime, saber que e7iste um garbage collector, um compilador ?40, como funciona a segurana da runtime, etc. 5omo #oc$ #ai procurar saber o que , um compilador ?40 se #oc$ nem sabe que ele e7isteI K a8 que entram os li#ros. &m bom li#ro mostra tudo que #oc$ precisa saber. Depois que #oc$ con)ece o assunto, #oc$ pode procurar mais informa3es (em outros li#ros ou na 4nternet) sobre algum t/pico espec8fico.
maioria das #ezes #oc$ ac)a a resposta antes e economiza o tempo que #oc$ teria que esperar at, que algu,m responda sua pergunta. 'l,m disso, perguntas do tipo "Eu quero fazer um programa que faa RRR, algu,m pode me ajudarI" s-o na maioria das #ezes ignoradas. 's pessoas que participam de listas de discuss-o geralmente n-o est-o dispostas a fazer um programa para #oc$. as elas com certeza te ajudar-o em problemas espec8ficos, como " eu ser#io c)ama essage+o7 mas nada aparece. % que pode serI". a), e caso #oc$ saiba razoa#elmente bem sobre um assunto ajude as pessoas tamb,m.
!onsidera es finais
&m bom programador pode aparecer em qualquer rea ou linguagem. >-o importa se #oc$ programa em C+, 5N, 566, %bjecti#e 5, (erl ou 2ubM. *e a sua linguagem for limitada, #oc$ automaticamente procurar outra quando for a )ora, cada linguagem e ferramenta tem seu pr/p/sito. % que importa , ir mais al,m. >-o , necessrio entender sobre o =ernel do sistema operacional nem sobre )ard@are, mas quanto mais #oc$ souber sobre isso, mel)or programador #oc$ ,. O programador mediano sabe uma coisa porque ele precisa saber" O bom programador sabe alguma coisa porque ele tem vontade de saber" 'ssim , um bom programador. esmo que #oc$ n-o ten)a e7peri$ncia, se #oc$ tem essa curiosidade e essa "Snsia" por saber tudo e aprender tudo, # em frente, #oc$ est no camin)o certo. 5apacidade t,cnica , algo que se adquire com o tempo, mas essa #ontade de aprender , algo para poucos. 0udo que algu,m com esse perfil precisa aprender est nos li#ros e na e7peri$ncia do diaDaDdia. *e #oc$ n-o trabal)a com programa-o, compre uns li#ros, leiaDos, passe algumas madrugadas na frente do computador e depois procure um emprego para entrar na rea. E depois eu espero que #oc$ ten)a o mesmo prazer que eu ten)o ao le#antar segundaDfeira para mais um dia de trabal)o. E estude muito. 4sso ajudar bastante na )ora em que #oc$ se deparar com um problema. >-o se esquea, nen#um con#ecimento in$til. Coc$ aprender mais rpido se #oc$ souber focar os seus estudos, mas se #oc$ n-o souber, #oc$ aprender mais coisas em mais tempo. % que importa , aprender.