Recentemente algumas pessoas me perguntaram sobre como ser programador: “onde aprender”, “o que estudar” ou “o que é preciso fazer” para ser um programador.
Eu programo desde os 15 anos, portanto, para mim é bem inerente ao meu perfil e aos meus interesses, mas quis fazer este artigo para explicar melhor o que é ser um programador.
5 característica que definem um bom programador
1. Ter um bom raciocínio lógico
Este é o ponto, o programador resolve problemas utilizando código para transcrever um raciocínio lógico.
2. Ser autodidata
Não imagine que cursos irão lhe transformar em um programador. Você precisaria gastar milhões para ficar sempre atualizado com cursos. Programador tem que ser autodidata. Se não for autoditada não tem como ser programador.
3. Gostar de resolver problemas
Programação é em 80% do tempo resolução de problemas. Seja o problema que o software irá resolver ou seja resolvendo problemas no software. Confira neste meu post “Os problemas e a profissão de programador“.
4. Saber inglês
Sem inglês o programador fica em uma fina camada de conhecimento. Infelizmente o conhecimento escrito em português neste segmento (ou em todos?) é bem restrito. Acredito que os livros em português no assunto detêm apenas 10% de informação e conhecimento dos livros em inglês.
5. Gostar de aprender
Estudar é uma constante na vida de um programador. É preciso ler, pesquisar, investigar, desvendar, duvidar…
Mas, além destes requisitos…
Outros detalhes também constituem um bom programador:
- Ter bom nível de concentração (leia meu post “Por que programadores gostam de programar?“);
- Ser curioso: “por que isso é assim”, “de onde isso vem” ou “por que isso acontece”. Perguntas devem ser constantes;
- Ser disciplinado;
- Ter disposição para estudar e aprender sempre, mesmo não sendo nas áreas de interesse;
- Ser paciente, perseverante, persistente;
- Sempre desconfiar que está errado, ou, que existe uma maneira ainda melhor de resolver o problema;
- Saber ouvir os mais espertos e os que sabem menos também, sempre existe algo para se aprender;
- Não precisa ser ótimo em matemática (algoritmo nada tem a ver com logaritmo)
Este é o seu perfil?
Programação é pensamento, é ficar ali pensando, as vezes por horas para resolver um problema qualquer. Programadores gostam de saber como as coisas funcionam, por isso muitas vezes entendem outras áreas como se fossem dela.
Mas, se pensar tanto não é pra você, existem outros segmentos bem próximos, como banco de dados, webdesign, segurança e redes, manutenção de hardware e outra mais.
O que faz realmente a diferença?
Um bom programador é um cara que resolve problemas sem ficar dependendo dos outros. Faculdade? Cursos? Certificações? Tudo isso é indiferente se o “sujeito” criar uma linda solução para um problema bem feio.
Como disse o Tio Bem ao Peter Parker (vulgo homem aranha): “Com grandes poderes vêm grandes responsabilidades”. O programador deve ter a capacidade de resolver qualquer problema decorrido das suas soluções, bem como garantir que tudo o que fez funcione como esperado.
Programadores são pessoas referencia como provedores de soluções. É normal as pessoas pedirem ajuda em praticamente todas as esferas de conhecimento, achando que o programador sabe tudo!
Responsabilidade e ética
Programadores costumam ter acesso a um grande volume de informação e conhecimento. Em boa parte das vezes informações sigilosas, portanto, é preciso ter a ética como base para trabalhar nesta área. Nunca pense em fazer parte do “lado negro” da coisa, estes profissionais (profissionais?) são percebidos no mercado com uma praga e raramente se vinculam a uma boa empresa ou nome de sucesso.
Cafeína
A xícara (ou caneca) de café é o ícone do programador. Eventualmente é necessário uma boa dose de cafeína para o cérebro “entrar no ritmo” e conseguir “botar pra fora” um algoritmo mais complexo.
A complexidade é uma constante na vida de um programador. Tanto que este não se assusta com qualquer probleminha, sabe que se debruçando sobre o problema e investigando-o, a solução aparece e tudo se torna imensamente simples. Veja meu post “Como ter mais concentração para programar e fazer coisas difíceis“.
Onde trabalhar?
Programadores tem perfil diferente da maioria dos profissionais. São exigentes (tidos como chatos), cheios de idéias e gostam de poder criar livremente. Não gostam de ter um “roteiro” muito estrito para ser seguido, querem desenvolver a solução própria.
Boa parte das empresas ao redor do mundo já percebeu este perfil, por isso oferecem locais de trabalho super abertos, com jogos, espaço para conversar e brincar, horários diferenciados, comida a vontade, etc. Aqui no Brasil pouquíssimas empresas aderiram a este modelo.
A empresa ideal para um programador trabalhar é aquela que valoriza o seu conhecimento, que aposta nas suas idéias e dá espaço para a participação ativa.
Um critério também que é dos mais importantes é a possibilidade de crescimento. Em algumas empresas o programador entra como tester e fica ali por 1 ano ou 2, sem criar absolutamente nada. Só neste tempo ele já desiste de permanecer na empresa. O programador precisa ter a possibilidade de aprender, provar que é bom e ser reconhecido por isso! Não é uma questão de tempo.
22 Comentários
Excelentíssimo post, Tiago! Vou começar a graduação em ADS em fevereiro, mas fico feliz em saber que tenho TODOS os pré-requisitos rsrs
Abs!
Concordo plenamente com você, Tiago. Parabéns pelo post!
Opa, estou descrito nesse post, salvo a parte de ter paciência, sou agoniado para ver algo funcionando XD
Bom gostei do post. Por este motivo acabei desistindo da programação e gostei do que vi ali quase no fim, “não precisa ser bom em logaritmo ou matematica” pois isso eu não sou mesmo, acabei largando de praticar na faculdade, por que exige-se muito tempo e como trabalho durante dia, estudo a noite sobra quase nada de tempo e sei que é preciso tempo, mais muito tempo pasciencia persistencia na resolução de um problema. Talvez ficou algum déficit em alguma coisa em algo que eu não consegui levar adiante os estudos em programação e praticar, gosto e admiro quem é desta área.
Great post, congratulations dude.
Concordo 90% com o seu post. Apenas discordo em relação ao comparativo de 10% relacionado ao material em português. Hoje em dia, dependendo da tecnologia temos bons materiais disponíveis em português. A linguagem Java por exemplo possui boas referências em português, como por exemplo o livro Java como programar dos irmãos Deitel, não existe referência melhor para quem quer ter uma base sólida na tecnologia. Para mim não é um pré requisito saber inglês para programar.
Se eu soubesse que tinha que ter essas características antes de entrar na faculdade, nao teria esquentado banco durante tanto tempo e desistido no meio do caminho. Alem de querer tem que ter o seu perfil.
Ótimo post Tiago.
Sucesso!
Òtimo post Tiago, parabéns.
Parabéns, perfeito este post!!
Ética, capacidade de solucionar problemas, concentração são requisitos fundamentais e que valorizam a nossa profissão…
Me identifiquei mto com o post. Infelizmente demorei mto de perceber que minha praia era programação! Quando estava fazendo o curso de Bacharel em Matemática tive contato com disciplinas de programação, mas lembro que odiei, não tinha paciencia… Depois que comecei a trabalhar numa empresa (que estava bem atrasada em termos de TI) tive a oportunidade de me envolver com automações de tarefas e comecei a desenvolver várias soluções para intranet, Microsoft Office, etc (só usando meu autodidatismo). E só agora, esse ano começo minha formação na área!
publicação muito interessante e incentivadora, show de bola. Mim incentivou bastante, faço bacharelado em sistemas de informação, mais tenho muita preguiça de programar, mais agora o meu pensamento não é o mesmo, eu quero ser a diferença no mercado.
Nossa o cara desmereceu outras profissões em “Mas, se pensar tanto não é pra você, existem outros segmentos bem próximos, como banco de dados, webdesign, segurança e redes, manutenção de hardware e outra mais.”.
– Imagina se um DBA não tem que pensar, em algumas poucas requisições à um internet Banking por exemplo simplesmente o banco pode arregar. Um webdesigner que não tem que passar horas vasculhando referências para usabilidade ou pior, segurança de redes, realmente pelo jeito os caras de segurança não pensam em nada durante o dia todo…
Outro ponto que não concordo embora ainda cometa muito esse erro: “Programação é pensamento, é ficar ali pensando, as vezes por horas para resolver um problema qualquer”.
– Se vc fica centrado em um problema por horas até resolver tem algo muito errado aí. Eu mesmo, com meus colegas de trabalho estamos tentando impor um limite, se em até X minutos não achamos a solução a gente para, toma um cafezinho, discute o problema e tentamos em equipe dar uma solução à ele. Atualmente na empresa em que trabalho é muito difícil um dos programadores ficar mais de meia hora se batendo pra resolver algo complexo e quando a task é realmente grande há várias pausas pra esfriar a cabeça.
Outra pérola: “Um bom programador é um cara que resolve problemas sem ficar dependendo dos outros. Faculdade? Cursos? Certificações? Tudo isso é indiferente se o “sujeito” criar uma linda solução para um problema bem feio”
– Não concordo, acredito que o primordial é a troca figurinhas, com certeza alguém já passou pelo mesmo problema que você então por que não buscar ajuda? Buscar ajuda, explicação, debater, não querer a resposta pronta.
Mas lembrando que é apenas minha opinião.
Ótimo artigo!
Acho que a pior parte está em “Ter disposição para estudar e aprender sempre, mesmo não sendo nas áreas de interesse”. Não existe nada mais chato no mundo do que fazer algo que você não quer. Mesmo assim, se tivermos consciência do benefício que o conhecimento trará, podemos fazer qualquer coisa.
Abraços.
O Cara saiu de programador para Diretor de Tecnologia/palestrante, é normal ele esnobar as demais areas de TI, pois pegou a nata (o que fica por cima entende) trabalhou e foi bem remunerado, e realmente se olharmos assim superficialmente/genericamente é QUASE isso ai mesmo, eu com 15 anos estava na montagem/manutenção de pc, ganhava uma merreca do chefe que sabia menos de TI que eu, quando entrei na facul pegui um bom estágio e agarrei o sonho de ser programador, achava que ali era o bom do negocio… e ao sair da facul já tinha experiencia em programação, percebi que o analista de sistemas ganhava mais que eu, e nem escrevia 1 linha de código, ele só pega as idéias dos diretores e repassa para os programadores, então com mais estudo e experiência passei para analista de sistemas, hoje consigo ver a “carreira” de TI mais adiante, tem o gerente de TI, tem o diretor de TI tem o presidente de TI, e te digo quem manda mesmo a ganha dinheiro como água é o…. dono da empresa/organização, ou seja todo mundo é subordinado a alguém, todos merecem ser respeitados no que fazem, e todos quando são excelentes no que fazem devem ser bem remunerados.
Poxa! gostei muito do tema, pois me identifico muito com toda essa situação, gosto muito de programar.
Sabemos que a área de TI e bastante abrangente, e ainda existem muitos profissional de TI que possuem conhecimentos diversos (genéricos), ou seja, não são 100% especialista em determinada área, mas com o passar do tempo se vêem perdidos, querendo seguir outras profissões e segmentos.
Acredito que cada pessoa\profissional deva conhecer a descrição dos pós e contra de cada função\atividade descrita para conseguir em seguida se identificar e seguir carreira, fazendo investimentos e procurando empresas em que o mesmo possa se sentir bem.
Só discordo que a área de segurança é pra quem não quer pensar.
Muito antes pelo contrário!
A área de segurança é muito complicada e qualquer falha na implementação (vide recente bug no protocolo heartbeat) pode ser uma potencial falha.
O profissional de segurança deve ser, além de tudo que está no post, um neurótico com auto estima baixa, que pensa que o código dele (por melhor que seja) é um lixo, e não dorme a noite preocupado com uma vírgula.
Gostei muito do texto tirando essa parte:”Mas, se pensar “tanto não é pra você…”
Eu preciso pensar muito, no meu cliente e como o empreendimento dele vai aparecer, como será a visualização nos dispositivos que ele e os clientes dele vão ver e etc, respeito os programadores, estou aprendendo a programar pois é necessário mais no próprio mercado de TI tem gente que precisar pensar muito também, forte abraço!
“Nossa o cara desmereceu outras profissões em “Mas, se pensar tanto não é pra você, existem outros segmentos bem próximos, como banco de dados, webdesign, segurança e redes, manutenção de hardware e outra mais.”.
“– Imagina se um DBA não tem que pensar” – Amigo, ele falou PENSAR TANTO! Não disse em nenhum momento “dba não tem que pensar”.
Bem vou dar o meu relato. Sou “programador” com P maiúsculo desde que me entendo por gente. Iniciei e me apaixonei desde os 12 anos (isso mesmo) e hoje tenho 42.
Posso falar de carteirinha que programar BEM é o que exige mais conhecimento e não é para os fracos. Como posso afirmar? Já trabalhei como gerente de TI, e sobre dba, passei nas primeiras duas provas de certificação da oracle, (inclusive como desenvolvedor sou “obrigado” a saber muito SQL, e sim, sei que das dificuldades de se manter um grande banco de dados 24/7 por exemplo).
E vou dar a prova dos nove agora…. Há dois anos comecei a estudar para concurso público. E concurso é assim: para quase todas as vagas (em todas as áreas) você tem que saber TUDO: Desenvolvimento, banco de dados, infra, e gestão.
Então reparei algo interessante…. No último concurso da ANS de 2013, houve ao mesmo tempo prova para as 3 áreas: analista de negócios, infra e desenvolvimento. 80% da prova foi A MESMA, somente com uma pequena parte mais direcionada. A NOTA PARA SER APROVADO PRA QUEM ESCOLHEU DESENVOLVIMENTO FOI BEM MAIOR QUE PARA ANALISTA DE NEGÓCIOS E MAIOR AINDA DO QUE A DE INFRA. Pq? pra desenvolver você acaba tendo que saber de tudo, e o contrário não.
Inclusive a maioria boa acaba saindo (evoluindo?) do desenvolvimento. Trabalha-se muito, exigindo muita atualização para ganhar o mesmo de outras áreas muitas vezes. E aquele ditado… quem trabalha muito, não tem tempo para ganhar dinheiro. Enquanto o desenvolvedor tem de se concentrar em missões ninjas, os outros tem “tempo” de fazer o networking, marketing pessoal, etc.
E antes que alguém pense que só sei escovar bits, devido ao estudo para concursos, hoje sei mais ainda do que já sabia da parte de gestão, desde PMBOK, ITIL, CMMI, SCRUM… Com certeza sei muito mais de infra do que a maioria dos profissionais da área.
Mas é claro, todas as áreas tem suas dificuldades, e tem muita gente excelente em todas, e muito programador de meia tigela também.
Mas quero ver um cara só de infra, um dba comum (que nunca desenvolveu), ou aquele gerente que a gente conhece por ai, conseguir aprender o que é um design pattern “bridge”, ou uma analise assintótica. Algorítimo não é pra todos, e inclusive acho que os profissionais são pouco valorizados (os realmente bons, claro).
Considero bem mais difícil repor um excelente desenvolvedor a um “analista de negócios”.
E por fim, se você não é desenvolvedor, não se ofenda, pelo contrário. Fazer um trabalho que exige mais não quer dizer ganhar melhor etc. Inclusive normalmente ocorre o oposto.
Tenho 15 e quero me tornar um TI, oq faço para aprimorar meu conhecimento com isso ? Cursos de informática ?
Excelente artigo Tiago!
Recentemente eu escrevi um artigo “5 características de um bom programador (a última é obrigatória)” aqui neste endereço: http://devsamurai.com.br/5-caracteristicas-de-um-bom-programador/
Eu diria que o programador também tem que pensar “fora da parte técnica” para ser um profissional completo (como eu escrevi no artigo).
Estes profissionais inclusive são os que ganham os melhores salários 😉
Abs e parabéns pelo artigo!
Pingback: Você é um bom programador? | DataPlus Sistemas