Anda di halaman 1dari 5

Introduo

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.

O que ser um bom programador


2esposta curta: quanto mais #oc$ sabe o que est acontecendo quando #oc$ c)ama uma fun-o (qualquer uma), mel)or programador #oc$ ,. 2esposta longa: !uando eu tin)a 1; anos, eu fui pescar (fui obrigado, odeio pescar) com um tio, e por um moti#o qualquer, #eio < tona o assunto ")ac=er". >aquele tempo, eu ac)a#a que )ac=er era uma pessoa que in#adia sistemas. 't, que ele me disse que ")ac=er , a pessoa que sabe realmente o que acontece quando #oc$ aperta um bot-o no teclado". (Eu espero que #oc$ saiba o que , um )ac=er. &m garoto idiota que usa programin)as prontos para in#adir o computador dos outros n-o passa de um garoto idiota. ' defini-o de )ac=er, em tradu-o li#re, , "uma pessoa que gosta de e7plorar os detal)es de sistemas program#eis e testar suas potencialidades, ao contrrio da maioria dos usurios, que preferem aprender somente o m8nimo necessrio". *e #oc$ quer saber o que , um )ac=er, leia o ?argon) &m )ac=er e um bom programador s-o quase a mesma coisa, e apertar um bot-o no teclado en#ol#e #rios c)amados de fun-o. &m usurio sabe que quando ele pressiona a tecla "'", aparece a letra "'" na tela. &m bom programador #ai al,m, e sabe que resumidamente, ao pressionar a tecla "'", o teclado #ai disparar um sinal el,trico que quando c)egar no computador, #ai disparar uma interrup-o de processador, que ser tratada por um dri#er que colocar isso em uma fila, que ser lida pelos programas. >em sempre #oc$ precisar saber todos os detal)es. % fato , que o bom programador te#e curiosidade suficiente para descobrir como isso funciona. &m programador mediano sabe que quando #oc$ c)ama a fun-o essage+o7 (ou sg+o7 ou essage+o7.*)o@) aparece uma janela com uma mensagem na tela. &m bom programador sabe que isso faz uma c)amada para AD4, que depois #ai para =ernel mode (muda para 2ingB), que c)ama o dri#er de #8deo que c)ama o monitor. !uanto mais detal)es #oc$ sabe sobre todos esses passos, mel)or para #oc$. Coc$ pode ser um bom programador sem saber os detal)es de tudo, mesmo porque, isso , imposs8#el. % que importa , ir al,m de um usurio ou programador mediano, , ter a curiosidade de saber como as coisas funcionam. esmo que

#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.

Qualidades ou esforos necessrios


Cou enumerar aqui algumas qualidades em um programador que podem ser a c)a#e para o sucesso. 5omo sucesso, eu defino a satisfa-o em fazer o que gosta e fazer bem. *e #oc$ trabal)a com 5obol e , o mestre nisso, mas gostaria mesmo , de estar fazendo um sistema operacional para >intendo 1 bits, tal#ez #oc$ n-o ten)a sucesso (apesar do que a sua conta bancria diz). Camos < elas: Aostar de problemas l/gicos *aber ingl$s Aostar de aprender e estudar constantemente Aostar de ler (e estudar constantemente) *aber buscar as informa3es (para estudar constantemente)

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)

Gostar de resolver problemas


'c)o que essa , meio /b#ia, j que computa-o , uma ci$ncia e7ata. as n-o , t-o simples assim. E7istem algumas caracter8sticas dos profissionais da rea de )umanas que caem como uma lu#a para um programador. Eu costumo dizer que programa-o , mais uma arte do que uma ci$ncia. E quando eu e7plico isso para profissionais da rea de )umanas, eles entendem e comeam a ter a mesma opini-o. !uando #oc$ projeta um sistema, #oc$ quer resol#er um problema espec8fico. as esse problema pode ser resol#ido de mil)ares de maneiras. 5omo #oc$ c)ega a solu-o desse problema tamb,m , outro problema, <s #ezes bem maior. Digamos que #oc$ #ai fazer um programa para uma fbrica de roupas. Enquanto #oc$ n-o entender muito bem o processo produti#o da fbrica, #oc$ n-o consegue fazer o sistema. 'gora al,m de saber programar, #oc$ sabe como funciona uma fbrica de roupas. 4sso , uma das coisas que me fascina na rea de sistemas. 'l,m de controlar a mquina, #oc$ tem a oportunidade de aprender muitas coisas fora da rea de informtica (como o funcionamento de uma fbrica). 'tualmente estou trabal)ando com soft@ares para o mercado financeiro e bolsas de #alores. 'l,m de refinar min)a )abilidade em 566, FinG2 '(4, multit)read, soc=ets e coisas t,cnicas,

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.

Gostar de ler e de aprender


Coc$ gosta de lerI >-oI *into muito, ent-o eu ac)o mel)or #oc$ arrumar outra profiss-o. K impossvel ser um bom programador sem ler bastante. (rograma-o de computadores , uma rea muito #asta e, em muitas de suas #ertentes, muito comple7a. E ainda n-o e7iste mel)or forma de aprender do que ler. 5ompre li#ros. >-o caia nesse papo de que tudo que #oc$ precisa est na 4nternet, isso n-o , #erdade. 0al#ez a maioria das informa3es que #oc$ precisa estejam realmente na 4nternet, mas dificilmente #oc$ encontrar tudo t-o bem organizado como #oc$ encontra em um li#ro. % tempo que #oc$ gastar procurando e organizando essas informa3es #ai custar mais caro do que gastar &*L ;B,BB na 'mazon. &m li#ro , uma coisa que dificilmente #oc$ se arrepende em comprar. K informa-o de fcil acesso, organizada e dispon8#el sempre que #oc$ precisa, mesmo que #oc$ n-o ten)a um computador por perto. &m bom li#ro , essencial para dar os primeiros passos em alguma rea espec8fica. Cou usar como e7emplo prtico programa-o FinG2 (5H566 para Findo@s). Coc$ pode muito bem economizar 2L 1;B,BB e passar semanas estudando os tutorial do 5ode(roject e em outros sites. as , muito mais prtico e inteligente comprar logo o (rogrammming Findo@s do

(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.

Saber buscar as informa es


(ara resol#er um problema, #oc$ precisa de informa3es sobre o problema. !uanto mais informa3es #oc$ ti#er, mais fcil ser de resol#er. !uanto mel)or #oc$ souber procurar, mais informa3es #oc$ ter. (reciso dizer maisI ' 4nternet , uma fonte de informa3es inestim#el e inesgot#el. 'inda mais )oje em dia que temos o Aoogle, que nos permite buscar o que queremos no meio dessa quantidade praticamente infinita de informa-o. as uma das coisas que precisamos saber , que o Aoogle n-o , a Jnica ferramenta dispon8#el, e que a busca na Feb n-o , a Jnica ferramenta que o Aoogle disponibiliza. 'c)o que sobre procura no Aoogle , desnecessrio falar. uitas das perguntas que me fazem seriam respondidas pelo primeiro lin= encontrado pelo Aoogle. &se o Aoogle *E (2E. 2epita comigo: Cou procurar no Aoogle antes de fazer perguntas. Cou procurar no Aoogle antes de fazer perguntas. Cou procurar no Aoogle antes de fazer perguntas. Cou procurar no Aoogle antes de fazer perguntas. %nde posso encontrar tutoriais sobre ?a#aI )ttp:HH@@@.google.comHsearc)IqOja#aP2Btutorial %nde posso encontrar um controle para desen)ar grficos de barras em '*(.>E0I )ttp:HH@@@.google.comHsearc)IqOasp.net6bar6c)art6control %utro recurso muito #alioso do Aoogle , a procura em grupos de discuss-o, o Aoogle Aroups. Eu ac)o esse recurso mais #alioso do que a busca na @eb quando se tem dJ#idas sobre programa-o. 5om ele #oc$ procura especificamente perguntas e respostas relati#as <s suas dJ#idas, e n-o todas as informa3es que e7istem na 4nternet. uito pro#a#elmente, algu,m j te#e a mesma dJ#ida que #oc$ e j fez essa pergunta. 4sso torna o Aoogle Aroups uma ferramenta muito Jtil. Qaa um teste: procure ")o@ to c)ange des=top bac=ground FinG2" no Aoogle e no Aoogle Aroups. %utro lugar muito Jtil para encontrar informa3es , em listas de discuss-o. Coc$ poder trocar informa3es com pessoas que est-o interessadas no mesmo assunto, e isso tem um #alor inestim#el. as , preciso tamb,m saber como usar essa fonte de informa-o. 5omo regra geral, s/ faa uma pergunta em uma lista caso #oc$ n-o ac)e a resposta usando o Aoogle ou o Aoogle Aroups, e depois de procurar no )ist/rico da lista que #oc$ participa. >a grande

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.

Anda mungkin juga menyukai