O programador profissional

Não basta saber programar, qualquer um pode escrever código.

Você tem que entender o que é ser um profissional de TI!

Espero que o texto abaixo do Uncle Bob possa te ajudar.

The single most important trait of a professional programmer is personal responsibility. Professional programmers take responsibility for their career, their estimates, their schedule commitments, their mistakes, and their workmanship. A professional programmer does not pass that responsibility off on others.

  • If you are a professional, then you are responsible for your own career. You are responsible for reading and learning. You are responsible for staying up to date with the industry and the technology. Too many programmers feel that it is their employer’s job to train them. Sorry, this is just dead wrong. Do you think doctors behave that way? Do you think lawyers behave that way? No, they train themselves on their own time, and their own nickel. They spend much of their off-hours reading journals and decisions. They keep themselves up to date. And so must we. The relationship between you and your employer is spelled out nicely in your employment contract. In short: your employer promises to pay you, and you promise to do a good job.
  • Professionals take responsibility for the code they write. They do not release code unless they know it works. Think about that for a minute. How can you possibly consider yourself a professional if you are willing to release code that you are not sure of? Professional programmers expect QA to find nothing because they don’t release their code until they’ve thoroughly tested it. Of course, QA will find some problems, because no one is perfect. But as professionals, our attitude must be that we will leave nothing for QA to find.
  • Professionals are team players. They take responsibility for the output of the whole team, not just their own work. They help one another, teach one another, learn from one another, and even cover for one another when necessary. When one teammate falls down, the others step in, knowing that one day they’ll be the ones to need cover.
  • Professionals do not tolerate big bug lists. A huge bug list is sloppy. Systems with thousands of issues in the issue-tracking database are tragedies of carelessness. Indeed, in most projects, the very need for an issue-tracking system is a symptom of carelessness. Only the very biggest systems should have bug lists so long that automation is required to manage them.
  • Professionals do not make a mess. They take pride in their workmanship. They keep their code clean, well structured, and easy to read. They follow agreed-upon standards and best practices. They never, ever rush. Imagine that you are having an out-of-body experience watching a doctor perform open-heart surgery on you. This doctor has a deadline (in the literal sense). He must finish before the heart-lung bypass machine damages too many of your blood cells. How do you want him to behave? Do you want him to behave like the typical software developer, rushing and making a mess? Do you want him to say, “I’ll go back and fix this later”? Or do you want him to hold carefully to his disciplines, taking his time, confident that his approach is the best approach he can reasonably take. Do you want a mess, or professionalism?

Professionals are responsible. They take responsibility for their own careers. They take responsibility for making sure their code works properly. They take responsibility for the quality of their workmanship. They do not abandon their principles when deadlines loom. Indeed, when the pressure mounts, professionals hold ever tighter to the disciplines they know are right.
—Robert C. Martin (Uncle Bob)

Fonte: http://programmer.97things.oreilly.com/wiki/index.php/The_Professional_Programmer

Anúncios

Aprendendo Ruby

Aprendendo Ruby

Finalmente!

A muito tempo eu venho querendo aprender de fato uma nova linguagem. Antes da faculdade, lá pelos 16/17 anos, programava em C e PHP em projetos open-source, mas depois que entrei na faculdade, Java tornou-se minha linguagem principal. Não que eu nessa época eu não tivesse interesse de aprender novas linguagens e frameworks, mas com o o tempo sempre urgia e eu acabei sempre deixando para o futuro a ideia de aprender uma nova linguagem e esperando possuir no futuro alguma oportunidade profissional aonde isso seria aconteceria. Durante a faculdade eu fiz alguns experimentos com linguagens como Python, Ruby, C# e JS.

Cansei de esperar!

Irei começar agora, depois de algumas tentativas, finalmente aprender / programar Ruby (e depois JavaScript).

Mas por que Ruby?

Essa é uma boa pergunta! Faz um tempo que eu queria dar uma chance de fato para ruby. Sempre vi em nela uma simplicidade e coerência muito grande na linguagem (se você comparar isso com PHP, por exemplo. Se você não concorda leia esse artigo: http://goo.gl/t7Pc0t ). Menos verboso, se comparado com Java, por exemplo. Além disso possui uma forte e movimentada comunidade open-source.

Por onde vou começar?

No passado, nas minhas tentativas de aprender a linguagem, eu começei tanto pelo codeschool como por artigos e tutoriais como esse. Dessa vez, vou relembrar a linguagem seguindo o livro de Ruby da Casa do Código.

Mas só lê não é suficiente. Para aprender qualquer coisa é necessário prática. Para isso tenho duas ideias principais:

  • A primeira é criar um projeto open-source para aprender.
  • Segunda ensinar o que eu aprendi através de publicações (artigos e resumos) do que eu fiz / vi / li durante esse processo.

O Projeto

A minha primeira ideia de projeto é um simples encurtador de URL. Nada muito difícil, mas a ideia é começar pelo básico e depois evolui-lo.

O primeiro passo vai ser construir a funcionalidade principal: encurtar a URL. Depois vão entrar funcionalidades como contas de usuários, URL’s customizadas, quantidade de acessos, tempo de expiração de links e por ai vai (desde já, aceito sugetões de novas features). Em seguida, a ideia é continuar o aprendizado e talvez já dar sequência aprendendo javascript e ai utilizar, por exemplo, AngularJS no projeto. Tenho a ideia de utilizar Redis e Mongodb, tecnologias que acho que se adequam também a esse projeto.

Vou criar um projeto no GitHub e deixa-lo público para receber feedbacks e sugetões de melhoria. E, por favor, se virem uma oportunidade para isso, avisem-me. 🙂

Artigos / Resumos / Relatos de Experiência

Dizem que a melhor forma de aprender é ensinando. Bem, eu não tenho experiência para dizer isso, mas acredito que de fato faça sentido. Para que você conseguia ensinar algo para alguém é necessário que você tenha pleno conhecimento do que você está fazendo. Você não consegue ensinar o algo por que não sabe explicar, talvez você possua uma deficiencia e quando você tenta passar isso para alguém você consegue identificar isso de forma mais rápida e resolver o problema.

Eu nunca ensinei. Eu não costumo escrever artigos ou posts em blogs. Então eu não sei qual será o formato ou como será feita essa parte. A melhor parte disso é que interativamente, a cada post, talvez encontre um bom formato para fazer isso.

Posts em Inglês?

Minha ideia principal é compartilhar o processo de aprendizado do ruby. Tenho outra meta que é melhorar meu inglês escrito. Para isso, a unica coisa a se fazer é escrever em inglês. Por isso, os fazer  post em inglês é uma boa ideia. Contudo não quero excluir aqueles que possuem dificuldade com a lingua, então penso em escrever primeiramente o português e depois fazer uma tradução do post ou o inverso.

E é isso!

Se possível, me ajudem! 🙂

Abraços!

@Atualização

Link do Projeto: https://github.com/bcfurtado/encurta.ai

Por que não utilizar JSF

Periodicamente a ThoughtWorks faz um overview sobre as técnicas, ferramentas, linguagens e plataformas relativas ao desenvolvimento de software. Eles costumam classificar esses itens em itens que devem ser adotados, experimentados, explorados e evitados.

A algum tempo eu tenho tinha em meu to-do-list uma task que é fazer um post com as minhas considerações do por que não utilizar JSF, mas o radar da TW saiu e conseguiu resumir perfeitamente alguns dos meus argumentos quanto a essa tecnologia.

Vejam:

We continue to see teams run into trouble using JSF — JavaServer Faces — and are recommending you avoid this technology. Teams seem to choose JSF because it is a J2EE standard without really evaluating whether the programming model suits them. We think JSF is flawed because it tries to abstract away HTML, CSS and HTTP, exactly the reverse of what modern web frameworks do. JSF, like ASP.NET webforms, attempts to create statefulness on top of the stateless protocol HTTP and ends up causing a whole host of problems involving shared server-side state. We are aware of the improvements in JSF 2.0, but think the model is fundamentally broken. We recommend teams use simple frameworks and embrace and understand web technologies including HTTP, HTML and CSS.

E é isso!
Abs.

PowerPoint MAC: Fechando no modo de apresentação.

Olá pessoal,

Recentemente eu estava com um problema no meu PowerPoint 2011 do Mac:

Quando eu iniciava o modo de apresentação, o PowerPoint travava e em seguida fechava.

Esse problema, aparentemente, só apareceu depois que eu atualizei do Mountain Lion (10.8) para o Maverick (10.9). Mesmo desinstalando e instalando a suite da Microsoft o problema continuava, mas eis que depois de algum tempo pesquisando acabei encontrado essa solução aqui:

http://support.microsoft.com/kb/975723

Espero isso possa ajudar vocês, assim como me ajudou.

Abraços. Até mais.

Envolva-se

Com certeza você já se deparou com essa expressão no diversos sites de projetos que entrou seja para fazer download ou apenas por curiosidade, mas você já reparou como é difícil darmos atenção a isso? Diariamente milhares de pessoas utilizam software livre e comum perceber que a quantidade de pessoas que realmente colaboram para esses projetos é pequena, isso se deve a diversos fatores, dentre elas a falta de projetos inspiradores.

É interessante perceber como é impressionante o conhecimento que é adquirido quando começa a participar desses projetos. Não somente o conhecimento técnico, mas também o portfolio e o networking adquirido quando se participa desse tipo de projeto é muito grande e também muito gratificante quando você participa de algo que você realmente gosta.

O fato de não possuir conhecimentos técnicos não deve se tornar um impedimento para não envolver-se em projetos open-sources, já que é possivel contribuir de várias outras formas, sendo apenas sugerindo melhorias ou dando suporte a novos utilizadores, por exemplo.

Acredito que a principal causa das pessoas não se envolverem seja a falta de projetos com os quais possamos nos identificar. E é realmente difícil encontrar esse tipo de projeto. Pelo o que você se interessa? O que você gostaria de fazer? O que você gostaria de mudar no mundo ou naquele software que você usa? Responder esse tipo de perguntas podem ajuda-lo encontrar um caminho até você chegar em projetos que possam ser do seu interesse.

Atualmente estou a procura de novos projetos e desafios para enfrentar e até já tenho projetos em vista, mas isso fica para um próximo post.

Envolva-se! 🙂

Abs.

PS: Tá ai uma ideia bacana para projetos futuros: baseando-se na indicação que o meu amigo Mauricio Lima fez, sobre esse site da Mozilla Foundation que lista uma serie que projetos open-sources deles para colaborar,  baseando-se na sua linguagem preferida, seria interessante expandir a ferramenta colocando mais critérios e mais projetos, não se limitando apenas projetos dessa fundação.

Entrevista sobre o EducaBrasil

Recentemente, durante uma disciplina na universidade, desenvolvemos um projeto chamado EducaBrasil, que tem por finalidade exibir os despesas dos municípios em educação. O projeto ficou tão legal que o Instituto Claro resolveu nós fazer uma entrevista. O post aqui mesmo é só pra deixar isso registrado e compartilhar com vocês o link da entrevista.

O link:

https://www.institutoclaro.org.br/blog/universitarios-desenvolvem-portal-que-mapeia-verbas-destinadas-a-educacao/

Abs.

@Atualização

Depois desse post, houveram mais entrevistas e reportagens sobre a aplicação e chegamos até ficarmos em 2º lugar (link da imagem do site) no Hackathon de Dados Abertos Governamentais promovido pela Contraladoria Geral da União e pela Transparência Hacker segue os link’s:

http://g1.globo.com/ceara/noticia/2013/03/cearenses-criam-site-que-ajuda-fiscalizar-verba-da-educacao.html

http://www.redetv.com.br/Video.aspx?52,15,328444,jornalismo,redetv-news,estudantes-fiscalizam-gasto-publico-com-educacao-no-ce

http://noticias.r7.com/educacao/noticias/estudantes-criam-aplicativo-que-fiscaliza-investimento-em-educacao-20130325.html

http://diariodonordeste.globo.com/materia.asp?codigo=1254660

http://www.ufc.br/noticias/noticias-de-2013/3436-estudantes-de-quixada-desenvolvem-portal-sobre-investimentos-em-educacao

Abs!