Arquivo da tag: linguagem de programação

SWX Labs 06 – Python

capa01

No SWX Labs 06 Mike, Vinicius e Tássio conversam com Rodrigo Amaral sobre Python.

Como surgiu a linguagem, qual sua evolução, diferenciais, onde ela é aplicada e como funciona a comunidade que divulga e dá suporte a uma das linguagens de programação que mais cresce e se credencia a ser o Java do futuro.

Ouça o podcast clicando no play, se preferir faça o download

Temas abordados

  • História do Python
  • Particularidades da Sintaxe
  • Ferramentas e aplicações
  • Mercado de trabalho
  • Comunidade e eventos sobre Python

Links

2º GDG Aracaju: Aplicações web com Python e Google App Engine

gdg-aju-python

Assine o feed do nosso podcast e não perca nenhum episódio: http://feeds.feedburner.com/SWXLabs

Se preferir, também estamos no Itunes Store

Gostou? Não gostou? Erramos algo? Sua opinião é muito importante para nós, por isso deixe seu comentário ou envie email para mike@swx.com.br

PHP você sabe o que é isso?

Fonte: Gustavo D. Castro/CriarNet

PHP é uma linguagem de programação mais utilizada no mundo com ela podemos fazer qualquer sistema na internet que executa todo tipo de funções, com o PHP podemos desenvolver simples sistemas como um formulários até aplicações complexas com conexões a bancos de dados.

Odiada por muitas pessoas mas adorada e ovacionada pela maioria assim como eu, ela certamente já fez parte da sua via direta ou indiretamente e devemos muito ao PHP.

Porque o PHP é a linguagem mais utilizada no mundo?

Qualquer um pode aprender PHP!

Ao contrário do que se diz por aí, não vou falar que é fácil aprender a programar em PHP, mas direi que é uma das linguagens mais completas e mais fáceis de se aprender, não há mistérios, quem deseja e tem força de vontade aprende a programar seus primeiros sistemas sem maiores dificuldades.

PHP é grátis!

Ao contrario de outras linguagens como por exemplo o ASP (linguagem de programação paga) o PHP é Open souce ou seja você pode usar sem pagar nada, é totalmente grátis! Mas nem por isso fica para traz em relação aos seus concorrentes.

Grande quantidade de documentação disponível

Talvez pelos dois fatos acima citados é uma das linguagens de programação mais utilizadas e por isso possui grande quantidade de documentação, sites especializados, apostilas, entre outros conteúdos relacionados ao PHP o que facilita bastante na hora de estudar sobre a linguagem ou mesmo encontrar suporte para resolver algum eventual problema, a comunidade PHP é uma das maiores do mundo e só vem crescendo.

PHP é uma das linguagens mais dinâmicas que existe!

O PHP trabalha de forma diferente de outras linguagens como por exemplo javascript, pois a mesma é interpretada diretamente no servidor, isso garante tamanha dinamicidade a linguagem que nos permite dizer que é uma linguagem completa que nos permite fazer o que quisermos com a mesma.

O PHP trabalha com praticamente qualquer banco de dados, porem é mais comum ouvirmos o nome de PHP associada ao nome MySql que é o nome de um tipo de banco de dados.

Tem muita gente ganhando dinheiro com o PHP

É isso mesmo, muita gente ganha dinheiro graças a ele seja diretamente ou indiretamente, basta aprender a linguagem que não faltará serviços para desenvolvimento de sistemas, ou você mesmo poderá desenvolver um sistema para você e passar a ganhar dinheiro com o mesmo! Aprender só traz benefícios.

Como se tornar um Web Designer Profissional

Fonte: CriarSites

Este é um guest post escrito por Thiago Rodrigues do blog Tudo Criativo.

Então você quer se tornar um web designer, mas você não tem ideia por onde começar? Não entre em pânico! Não é tão difícil quanto parece, mas exige um pouco de tempo e esforço, principalmente se você não quer ou não pode pagar um curso. É muito comum encontrar Web Designers autodidatas, mas você tem que saber por onde começar. Neste post vamos dar uma olhada no passos básicos para se tornar um web designer. Vamos lá então!

O que faz o bendito do Web Designer: Um web designer cria os elementos visuais de um site, tais como cores, layout, formatação, etc. Para isso ele deve ter uma boa compreensão dos fundamentos do projeto e aprender a usar alguns softwares para os projetos. Designers gráficos e web Designers são frequentemente considerados como iguais, apesar dos dois terem bons conhecimentos de informática e usarem softwares similares, definitivamente não são iguais. Um Web Designer requer conhecimentos específicos de várias áreas (de ilustração, vetores… até um mínimo de programação) e algumas habilidades técnicas.

Os melhores softwares para se tornar um web designer ou desenvolvedor web

Os principais softwares gráficos que você deve aprender a usar são: Adobe Illustrator (pode ser substituído pelo Corel Draw, ou usar ambos) e o Adobe Photoshop (este é insubstituível). Além disso, é recomendado aprender o Adobe Fireworks e o Adobe Dreamweaver. Estes programas não são difíceis de usar, mas eles são bastante complexos e é preciso tempo para dominá-los.

Você também terá de aprender algumas das linguagens de programação básicas, tais como HTML, CSS, Javascript, Flash, PHP e jQuery. Você deve ter habilidades competentes sobre os dois primeiros, mas é aconselhável, pelo menos, estar familiarizado com o resto deles também. Ah, e um pouco de conhecimento de SEO não faz mal a ninguém.

Felizmente hoje em dia há uma série de recursos de aprendizagem disponíveis, a maioria das quais são gratuitas. Tutorias existem aos montes na internet e sites muito bem esquematizados para te auxiliar.

Web design é um campo em constante desenvolvimento, então você estará em um estado de formação permanente. Você sempre terá algo novo para aprender, e, embora às vezes possa ser cansativo, é também emocionante e tira parte da rotina que é inerente a qualquer outro trabalho.

É fundamental ter um olhar aguçado para a estética e uma abordagem pró-ativa com a tecnologia. Essas habilidades têm um importante componente inato, mas eles poderiam ser treinados também. Pesquisar em blogs, livros e seus arredores em busca de inspiração. Fique de olho nas tendências de entrada. Mas acima de tudo, ser apaixonado pelo seu trabalho.

Escolha seu caminho

Se você quiser se tornar um especialista (e ser visto como um também) você precisa de experiência, certo? Isso significa que o trabalho feito que mostra o que você pode fazer. É mais provável que você não tenha clientes ainda, então uma boa ideia é começar por fazer o seu próprio site. Você futuramente vai precisar ter um portfólio, mas por enquanto, estamos em busca de presença online. Inclusive você certamente voltará diversas vezes a redesenhar seu site e fazer coisas mais sofisticadas, conforme for melhorando suas habilidades.

Quando você está trabalhando para si mesmo é fácil perder o foco ou entrar em um loop infinito de mudanças em seu trabalho. Meu conselho é definir uma data para lançar o seu site e cumpri-lo. Faça um calendário de trabalho e agende todos os seus projetos, a partir do seu aprendizado vise a criação do seu portfólio. Lembre-se de ser organizado (mantendo uma lista de coisas a fazer pode ser útil) e sempre (SEMPRE) teste o seu trabalho antes de lançá-lo. Trabalhe em qualquer projeto como se fosse um pago. Dessa forma, você estará preparado para eventuais problemas quando você está trabalhando em um projeto profissional.

Agora sim: Torne-se um Web Designer

Quando você controla as ferramentas, conhece o campo e tem seu próprio site, é hora de começar a trabalhar em projetos para os outros. Primeira coisa que você tem a fazer é decidir se você quer trabalhar em uma empresa ou agência ou como Web Designer freelancer.

Design é uma questão muito subjetiva e web design não é excepção. Se você deve aprender a vender-se. Trabalhar em suas habilidades de comunicação, criar uma marca pessoal, marketing pessoal e lembre-se de ser organizado e aprender com suas experiências, levar os problemas como oportunidades de aprender e melhorar a si mesmo como um designer profissional.

Agora você está no caminho para o sucesso, lembre-se que é preciso paciência, nada de bom vem fácil. Tenha uma atitude positiva e aproveite o passeio! Boa sorte a todos!

Alfa do Python 3.3.0 traz primeiras mudanças sintáticas em dois anos

Fonte: IMasters

Com informações de The H

A versão 3.3.0 da linguagem de programação Python entrou na fase de testes com a liberação do seu primeiro alfa. Ela marca o fim de dois anos sem mudanças na sintática na linguagem. Propostas por Guido van Rossum como Python Enhancement Proposal (PEP) 3003, as mudanças foram feitas para habilitar implementações não-CPython da linguagem para atualizar a implementação do core depois do lançamento do Pyhton 3.0.

Com as mudanças na sintaxe permitidas novamente, o alfa inclui uma nova maneira de habilitar generators a delegar trabalho para sub-generators, o que abre novas possibilidades para otimizar iterações no código do Python. Outra mudança na sintaxe adiciona o atributo __qualname__ a funções e classes. Isso possibilita dizer se o objeto está no topo da hierarquia ou se ele é aninhado dentro de outro objeto.

O PEP 393 faz uma representação de string mais flexível ao mudar o tipo de string Unicode para permitir várias representações internas ao mesmo tempo. Com isso, os programadores podem otimizar espaço ou maximizar a disponibilidade de caracteres e abandonar a distinção entre builds estreitos e amplos do Unicode.

Além disso, a sintaxe lateral do Unicode a partir do Python 2 foi reintegrada ao Python 3.3.0 para tornar a migração dos aplicativos do Pyhton 2 mais fácil. Outras mudanças na nova versão incluem melhorias em lidar com exceção, um novo módulo de “empacotamento” e suporte para compressão LZMA/XZ.

Mais detalhes sobre as modificações podem ser encontrados nas notas de lançamento e neste link. O Python 3.3.0 alfa 1 está disponível para download para Windows e Mac OS X.

Estudar aplicação ou linguagem de programação?

Fonte: Julio Bortolon/IMasters

Aconteceu comigo, e acho que deve acontecer com a maioria dos desenvolvedores, o momento em que aprender novas linguagens de programação não me permite resolver problemas que eu não resolvia antes, até porque a maioria das linguagens mainstream vivem copiando recursos umas das outras.

Mas, então, como eu vou continuar progredindo para programar a Matrix? Simples, desenvolva programas que você nunca fez, e aconselho você a usar a linguagem e o ambiente mais produtivo que estiver à sua disposição. Por exemplo, eu sou um aspirante a desenvolvedor de jogos, já tentei muita coisa, desde C com Allegro, XNA/C#, até C++/OpenGL, e acabou que o único ambiente que tinha uma boa IDE e me permitia experimentar coisas rápido foi o AS3 do flash no FlashDevelop.

Este é um ponto crucial que muita gente costuma ignorar, a IDE. A linguagem de programação é grande parte do pipeline de trabalho, mas não é o pipeline inteiro. Para se ser produtivo e fazer as coisas sem se sentir frustrado, o ambiente inteiro precisa ser rápido e te ajudar a cometer menos erros.

Se você quiser ser um melhor desenvolvedor, terá que se arriscar aprendendo a programar novos tipos de aplicações, sejam elas desktop, web, interativas, de inteligência artificial, ou até mesmo controle de estoque, caso você não tenha feito um. E esse nível de granularidade pode diminuir cada vez mais. Por exemplo, você é um programador de sistemas web php. Crie uma limitação fictícia na qual o seu cliente terá milhões de pageviews diários e o código precisa ser todo escrito em C++. Ótimo, agora você precisa aprender a fazer um web server. No final do processo, vai entender muito mais sobre suas páginas php e poderá pegar projetos muito mais ousados.

Enfim, o bom programador programa qualquer coisa em qualquer linguagem. Até hoje, me impressionam os jogos de Super Nintendo e Megadrive terem sido feitos em Assembly, assembly… Eu sempre uso esse fato como fator motivacional para continuar aprendendo, porque se eles fizeram aquilo tudo em Assembly, qualquer coisa é possível em Linguagem de Alto Nível Cool da Moda.

Mas não deixe de aprender novas linguagens de programação, ainda mais se elas forem de algum paradigma que é alienígeno a você. No meu caso, estou me aventurando aos poucos no paradigma puramente funcional através de Common Lisp.

O que é BNF e por que os desenvolvedores devem ser importar?

Backus-Naur Form (BNF) é uma sintaxe para descrever uma sintaxe. É usado para escrever uma representação formal de uma gramática livre de contexto. Se ele não soar abstrato o suficiente para você, uma gramática não tem que ser uma linguagem de programação, ou até uma linguagem humana – ela pode ser qualquer sintaxe que você queira descrever.

Eu descobri o BNF pela primeira vez ao trabalhar no padrão ANSI de 1992 para DBOL, que continha uma especificação sintática BNF completa para aquela linguagem (eram 11 páginas). O exercício para definir a linguagem em BNF ajudou o comitê a rigorosamente definir os detalhes da sua sintaxe. Um dos implentadores da linguagem também alimentou este BNF para outro Yet Another Compiler Compiler (yacc) para ajudar a construir seu compilador para sua próxima versão, para que eles pudessem garantir que ele fosse compilado sintaticamente com a especificação. É aí que o BNF se destaca: uma vez que você tem uma definição sintática bastante sólida em BNF, você pode usar ferramentas para analisar rigorosamente a sintaxe que ele descreve, sem ter que inventar o código que implementa a especificação, ou se apoiar em expressões regulares.

O BNF usa uma sintaxe declarativa que permite que você defina seus temos via “regras de produção’. Cada regra contém termos em que cada um deles tem mais regras concretas, até que você chegue nos “terminais”, que são termos em que você somente pode descrever como caracteres específicos (valores literais). Assim, por exemplos, se quiséssemos descrever a sintaxe para chamar uma shell de comandos chamada “fred”, que precisa de um valor numérico não negativo como seu argumento, poderíamos expressá-lo assim:

<call-fred> ::= fred <whitespace> <number> <eol>

<whitespace> ::= <space-char> | <space-char> <whitespace>

<space-char> ::= \s | \t

<number> ::= <digit> | <digit> <number>

<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<eol> ::= \n | <whitespace> \n

Cada um dos identificadores em um ângulo entre parênteses é o nome de um termo. Uma linha começando com o nome de um termo, seguido por um “::=” e os componentes que formam o termo compõe a regra de produção do mesmo. Os terminais no exemplo acima são valores literais que não estão inclusos nos ângulos entre parênteses. O operador “|” fornece um “or” lógico. Como nas linguagens de programação funcionais, usamos a recursão para descrever as listas de comprimento variável como <number> e <whitespace>.

Muitas variantes para a sintaxe acima emergiram. O Extended Backus-Naur Form (EBNF) fornece várias melhorias e simplificações. Ao pedir aspas em volta de valores literais, podemos dispensar muitas outras pontuações. Podemos então, expressar o exemplo acima de uma forma mais simples e familiar para os programadores:

Backus-Naur Form (BNF) é uma sintaxe para descrever uma sintaxe. É usado para escrever uma representação formal de uma gramática livre de contexto. Se ele não soar abstrato o suficiente para você, uma gramática não tem que ser uma linguagem de programação, ou até uma linguagem humana – ela pode ser qualquer sintaxe que você queira descrever.

Eu descobri o BNF pela primeira vez ao trabalhar no padrão ANSI de 1992 para DBOL, que continha uma especificação sintática BNF completa para aquela linguagem (eram 11 páginas). O exercício para definir a linguagem em BNF ajudou o comitê a rigorosamente definir os detalhes da sua sintaxe. Um dos implentadores da linguagem também alimentou este BNF para outro Yet Another Compiler Compiler (yacc) para ajudar a construir seu compilador para sua próxima versão, para que eles pudessem garantir que ele fosse compilado sintaticamente com a especificação. É aí que o BNF se destaca: uma vez que você tem uma definição sintática bastante sólida em BNF, você pode usar ferramentas para analisar rigorosamente a sintaxe que ele descreve, sem ter que inventar o código que implementa a especificação, ou se apoiar em expressões regulares.

O BNF usa uma sintaxe declarativa que permite que você defina seus temos via “regras de produção’. Cada regra contém termos em que cada um deles tem mais regras concretas, até que você chegue nos “terminais”, que são termos em que você somente pode descrever como caracteres específicos (valores literais). Assim, por exemplos, se quiséssemos descrever a sintaxe para chamar uma shell de comandos chamada “fred”, que precisa de um valor numérico não negativo como seu argumento, poderíamos expressá-lo assim:

<call-fred> ::= fred <whitespace> <number> <eol>

<whitespace> ::= <space-char> | <space-char> <whitespace>

<space-char> ::= \s | \t

<number> ::= <digit> | <digit> <number>

<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<eol> ::= \n | <whitespace> \n

Cada um dos identificadores em um ângulo entre parênteses é o nome de um termo. Uma linha começando com o nome de um termo, seguido por um “::=” e os componentes que formam o termo compõe a regra de produção do mesmo. Os terminais no exemplo acima são valores literais que não estão inclusos nos ângulos entre parênteses. O operador “|” fornece um “or” lógico. Como nas linguagens de programação funcionais, usamos a recursão para descrever as listas de comprimento variável como <number> e <whitespace>.

Muitas variantes para a sintaxe acima emergiram. O Extended Backus-Naur Form (EBNF) fornece várias melhorias e simplificações. Ao pedir aspas em volta de valores literais, podemos dispensar muitas outras pontuações. Podemos então, expressar o exemplo acima de uma forma mais simples e familiar para os programadores:

call-fred = “fred”, whitespace, number, eol

whitespace = space-char, { space-char }

space-char = ” ” | “\t”

number = digit, { digit }

digit = “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”

eol = [ whitespace ], “\n”

Note o uso de “{ }” para indicar “zero, ou mais”, e “[ ]” para itens opcionais. Algumas variantes também usam o asterisco para indicar zero, ou mais, assim como o “+” para indicar um, ou mais.

Para mais exemplos úteis, vamos descrever a sintaxe de valores separados por vírgulas (CSVs, em inglês).

csv-file = { row }

row = field-list, eol

field-list = field, [ “,”, field-list ]

field = [ whitespace ], field-value, [ whitespace ]

field-value = quoted-string | bare-string

quoted-string = ‘”‘, quoted-content, ‘”‘

quoted-content = { quoted-char }

quoted-char = (any char except ‘”‘ or eol)

bare-string = { bare-char }

bare-char = (any char except ‘,’ or eol)

whitespace = space-char, { space-char }

space-char = ” ” | “\t”

eol = “\n”

Na primeira regra, definimos o arquivo CSV como uma série de zero, ou mais linhas. Uma linha é uma lista de campos, seguida por um caractere de fim de linha. A lista de campos tem pelo um campo (mesmo que esse campo tenha comprimento zero). Uma vírgula e outra lista de campos podem, opcionalmente, seguir (note a recursão). Um campo individual pode ter um espaço em branco em algum fim, e o valor do campo por ser uma string com aspas, ou sem nada. Uma string com aspas pode não conter aspas, e uma string sem nada pode não conter uma vírgula.

Em um artigo futuro iremos ver como transformar essa definição em um código que analisa um arquivo CSV.

Artigo original disponível em http://www.techrepublic.com/blog/programming-and-development/what-is-bnf-and-why-should-developers-care/4346

Fonte: IMasters

O que faz um bom programador?

Muita gente já me perguntou como se tornar um bom programador. Normalmente estão mais preocupados em qual linguagem aprender, qual curso fazer, quais livros técnicos ler. Porém, assim como os autores desses dois artigos que vou traduzir, eu diria que existem qualidades mais importantes a se levar em conta.

O primeiro artigo é o What makes a good programmer?

Um pensador analítico

Programadores precisam ser solucionadores de problemas. O processo de programação requer que nós sistematicamente quebremos problemas complicados, planejemos e implementemos solução e encontremos/eliminemos pequenas inconsistências no código (bugs).

Pensamento analítico também se manifesta na habilidade de seguir e entender lógicas complicadas através de segmentos disparates de código. Isso nos permite alcançar conceitos abstratos como metodologias de Orientação a Objetos e design patterns e implementemos na prática.

Tem suas prioridades claras

Se eu lhe pedisse para ordenar os itens seguintes por prioridade, como você os ordenaria?

  • Segurança
  • Mantenabilidade
  • Usabilidade
  • Performance
  • Quantidade de LOC (lines of code – linhas de código)

Pare um momento para pensar a respeito, e então considere:

1. Se você pegou quantidade de LOC primeiro, você falhou completamente pelos meus critérios. De fato, otimização de LOC pode normalmente ir diretamente contra as outras métricas (como mantenabilidade). Uma contagem baixa de LOC nunca deve ser o objetivo, somente o resultado da aplicação cuidadosa de uma boa arquitetura.

2. Se você pegou performance primeiro, você provavelmente é o cara que fica escrevendo artigos sobre porque se deveria usar loop while em vez de for já que ele foi alguns milissegundos mais rápido em seus benchmarks. Você pode sofrer com casos de otimização prematura.

Nós devemos esquecer sobre pequenas ineficiências, digamos, cerca de 97% do tempo: otimização prematura é a raiz de todo mal. – Donald Knuth

Performance deve ser bom o suficiente para satisfazer os requerimentos da aplicação. Fora casos de armadilha bem conhecidos (como executar queries em cada interação de um loop longo), otimizações de performance devem ser deixados para o fim e mesmo assim devem ser feitas quando apropriado (medir … medir … medir … otimizar).

A única exceção a isso é se você está primariamente desenvolvendo aplicações dependentes de performance (como drivers de baixo nível de sistema).

3. Segurança está mais ou menos no meio. Dependendo da aplicação e modelo distribuído isso pode ser completamente inútil ou de missão crítica. Está na maior parte no meio, e portanto não pode ser o número 1.

4. Mantenabilidade é definitivamente um dos mais importantes atributos de uma aplicação de software. Alta mantenabilidade permite que você melhore outros atributos (como performance), quando for necessário.

Mantenabilidade é o fator mais importante para manter a produtividade em alta e os custos em baixa. Por um longo tempo eu acreditei fortemente que isso era o atributo mais importante de design de software. Entretanto …

5. O atributo mais importante é usabilidade. No final, o valor de sua aplicação é o que se entrega ao usuário final.

Devemos sempre lembrar – software não é escrito para servir seus desenvolvedores ou os sistemas em que roda. Eles são escritos para resolver problemas. Se esses problemas não são resolvidos, então o projeto é um fracasso.

Eu escrevi usabilidade aqui como um termo mais geral do que somente efetividade de Interface de Usuário/UX. Mesmo uma aplicação de linha de comando ou um serviço que roda em background tem seus fatores de usabilidade no sentido de quão bem ele responde a uma necessidade específica.

Termina as coisas:

Em princípio, você está procurando por pessoas que:

  • são espertas e,
  • que terminam as coisas.

Joel Spolsky

Talvez a coisa mais importante em um desenvolvedor. Você pode ser perfeito em todos os atributos anteriores e ainda ser um programador medíocre se você não consegue terminar as coisas. Um desenvolvedor mediano mas produtivo poderia facilmente substituir vários desenvolvedores altamente talentosos mas que se movem devagar, dependendo de suas responsabilidades.

No fim do dia você definitivamente quer desenvolvedores altamente produtivos mais do que aqueles que são grandes em teoria mas não na prática.

Faz mais do que “apenas suficiente”

Terminar as coisas é importante. Terminar as coisas “do jeito certo” é ainda mais importante.

Pagar constante seu débito técnico é crucial – se você continuar acumulando débito fazendo “gambiarras” de correções rápidas que funcionam mas não são bons de mantenabilidade, você apenas está criando a aparência de progresso. Na realidade, o custo de se livrar do grande débito técnico poderia se tornar proibitivo antes de você perceber.

Gastar um tempo para constantemente refatorar código para uma forma com mais mantenabilidade é a melhor forma de prevenir a espiral que leva um projeto a desaparecer.

Responsável

Uma pessoa poderia ser um programador capaz apenas em habilidades técnicas, entretanto se ele não assume seus próprios erros e não respeita prazos ele poderia se tornar um risco muito rapidamente.

Responsabilidade significa saber onde deixar seu ego para trás para o bem do projeto. Nós normalmente desenvolvemos grandes egos à medida que nos consideramos experts em muitas coisas. Colocar o projeto primeiro é um sinal de um bom desenvolvedor.

Boas relações humanas

Outra coisa importante, essa também se aplica a programadores. Existe um estereótipo que programadores são criaturas reclusas, anti-sociais – programadores ainda são pessoas 😉

Para ser parte de uma equipe ou lidar com clientes, um programador precisa ter habilidades sociais básicas. Rudez, arrogância, paciência curta – não tem espaço em um ambiente de trabalho profissional. Tudo que se precisa é uma maçã podre para arruinar o humor de todos.

É isso

Se você respondeu positivamente a tudo acima, você provavelmente é um bom programador.

Você deve notar que não mencionei paixão ou diversidade tecnológica como atributos qualificatórios. Resumindo, eu não acho que sejam muito relevantes para a qualidade de um programador.

Paixão é bom de se ter, entretanto já conheci muitos profissionais e desenvolvedores de alta qualidade que estavam satisfeitos de apenas ir ao trabalho profissionalmente, das 9 às 17 e então ir para casa e ter vidas significativas e completas com a família. Um programador pode ser definitivamente completamente profissional sem ser apaixonado sobre programação.

Diversidade tecnológica é outra coisa boa de se ter mas não é um pré-requisito – enquanto se estiver no controle das tecnologias com que trabalha, uma falta de diversidade não deveria afetá-lo tanto. Tomadores de decisão precisam estar bem atentos para todas as opções antes de começar um projeto, entretanto hoje em dia a escolha de tecnologias simplesmente não é tão importante.

Você pode conseguir bons resultados independente da linguagem de programação e banco de dados entre outras considerações. A maior consideração deve ser o tipo de habilidades disponíveis no seu pessoal.

Fonte: blogoscoped
Traduzido por: akitaonrails.com