Muito se discute na comunidade sobre os atributos que um bom profissional que desenvolve software deve ter. Pode parecer balela, mas já sabemos dos vários problemas que o nosso mercado enfrenta, com relação a qualidade dos fornecedores, metodologias de gestão e com relação aos profissionais no nicho do desenvolvimento de software.
Ainda não chegamos em um consenso sobre o que é um software e qual a melhor maneira de se criar um. A discussão sobre o que um profissional de software deve ser também está longe de terminar. Tem muito profissional medíocre fazendo merda um trabalho medíocre. Tenho uma opinião sobre isso baseada em minha experiência e no que conheço de outros profissionais que considero excepcionais.
Saber codificar
Tudo pode mudar no processo de criação de um software. Só uma coisa não muda: sempre haverá código. Não importa qual seja o processo de gestão ou metodologia, o produto é código. Um software está longe de ser papelada ou mesmo post its em um quadro branco. Software é código e codificar não é fácil. É difícil pra uma pessoa que não codifica compreender as dificuldades que é programar. No entanto, não basta só programar, é preciso saber programar muito bem. Tem muito programador no mercado que não conhece conceitos básicos e que produz código imprestável.
Dominar a linha de comando
Entender comandos Unix é imprescindível para o desenvolvedor. Não por questões culturais, ou porque somos contra a microsoft ou porque quem usa windows é noob. Não é só por isso Não. Mas sim porque o Unix está muito presente, principalmente em servidores. A linha de comando é muito importante, também, para automação de tarefas do dia a dia. Não dominar a linha de comando o torna dependente e limitado. Nem sempre você terá o sysadmin para resolver os problemas pra você.
Entender a plataforma
Se você não possui conhecimentos sobre o sistema operacional que você utiliza, do servidor, de máquinas virtuais e configurações, você estará limitado sem uma visão macro das tecnologias que você usa. Isso pode lhe trazer problemas de produtividade. Outro perigo é você não saber bulhufas do que ocorre no background porque você só sabe mesmo é codificar e não entende nada de infraestrutura. Se você é desenvolvedor web, entenda pelo menos o básico do protocolo http. Com essas limitações, você nunca irá prestar uma consultoria completa.
Entender de design de interfaces
Conhecer usabilidade, user experience e desing é muito importante. Não que você vire um Leonardo Da Vinci, mas que seja suficiente para que você consiga projetar apps com interfaces agradáveis e fáceis de usar como foco sempre no usuário e não no seu gosto pessoal. É sempre bom saber css e um pouco de teoria do design, simetria, cores, tipologia, imagens e heurísticas de nielsen.
Saber comunicar-se
A idéia do programador em sua báia já é ultrapassada já há alguns anos. É muito importante saber se comunicar e saber pedir ajuda e ajudar quando necessário. Todo o problema em projetos de software é relacionado a comunicação.
Vá para as trincheiras. Converse com o cliente
Procure entender a visão do cliente e entender do negócio. Mesmo que haja especialistas no time, é importante o desenvolvedor entender o negócio. Se a pessoa que vai realmente desenvolver o software não entende porque aquele produto será criado, fica complicado. É preciso colaboração com o cliente. E não ter medo de dizer não a ele algumas vezes. Outra coisa importante, você precisa aprender a demitir seu cliente, mas isso já é outra história.
Participar de eventos
Não necessariamente o profissional é ruim porque não vai a eventos. Mas ir aos encontros tem muitas vantagens e oportunidades de melhoria contínua. Além de ser divertido e de conhecer pessoas novas. Organizar eventos também é muito bom. É complicado ficar preso em uma caixa sem que ninguém te conheça. Você teve muita ajuda no decorrer de sua carreira, chega o momento de retribuir.
Aprendizado Contínuo
Sair do trabalho, chegar em casa e dormir ou ir assistir televisão não é um comportamento de um desenvolvedor de software. Ele chega em casa e vai estudar, ou colaborar com algum projeto open source, ou planejar algum empreendimento, ou mesmo criar código pra se divertir. Desenvolvedor de software estuda todo o dia e normalmente dorme tarde. E ainda tem talento pra conciliar isso com a família.
Sair da matrix
Pra não ficar doente é sempre bom fazer outras coisas também. Um cinema, academia, um chopp, ler livros não técnicos. O bom desenvolvedor não é um sociopata.
Status quo
E acima de tudo, os bons profissionais não respeitam o status quo. Estão sempre inovando e procurando as melhores formas de se desenvolver software. Eles não conhecem receitas de bolo. Algumas vezes eles não são humildes. Mas a arrogância tem que ser merecida. ehehehhehe.
Especialistas ainda são necessários sim. Mas a idéia é do especialista que possua visão do todo. Se nós não conseguimos nem mesmo entender como trabalhar direito, como vamos vender isso aos clientes? De burocratas já estamos cheios, precisamos de desenvolvedores.




















