Características de um programador profissional de PHP [fechado]
Eu sou um estudante de 19 anos que realmente gosta de programação, e espero aprender com seus anos de experiência aqui. No momento, estou estudando PHP todas as chances que tenho, e faço isso há cerca de 3 anos, embora nunca tenha tido aulas formais. Eu adoraria um dia ser programador em período integral e fazer uma boa carreira.
Minha pergunta para você é a seguinte: Quais são as características ou características de um programador profissional? Principalmente no campo do PHP, mas outras qualificações mais generalizadas também são mais que bem-vindas, pois acho que o PHP é mais uma linguagem amadora e pode não ser a linguagem de escolha aos olhos de potenciais empregadores. Por favor me corrija se eu estiver errado. Acima de tudo, não quero perder tempo com algo que não vale a pena.
Atualmente, estou me sentindo bastante confiante no meu conhecimento do PHP como uma linguagem e sei que poderia criar praticamente tudo o que preciso e fazê-lo "funcionar", mas sinto uma enorme falta de conceitos de design e estrutura de código. Posso até escrever código orientado a objetos, mas, na minha opinião pessoal, isso não vale a pena se não estiver bem organizado. Por esse motivo, comprei o livro de Matt Zandstra "Objetos, padrões e práticas do PHP" e tenho lido isso um pouco todos os dias.
De qualquer forma, estou começando a discordar um pouco aqui, então, de volta à pergunta original. Que conselho você daria a um aspirante a programador que queira causar um impacto nesse campo?
Além disso, em uma nota lateral, eu tenho trabalhado em um projeto com um amigo meu que daria uma boa idéia de onde eu sou a codificação. Vou dar um link, não quero que ninguém sinta que estou enviando ou enviando spam por aqui. Portanto, não clique nele se não quiser. Mas se você também estiver interessado em dar algum feedback, pode ver o código no github. Eu sou conhecido como The Craw lá.
https://github.com/PureChat/PureChat--Beta-/tree/
php professionalism
— Scotty C.
"Eu sou conhecido como o Craw por lá." - talvez devêssemos estar falando sobre os clawmarks de um desenvolvedor PHP profissional ... :-)
Marcas de garras .. eu gosto disso! Parece mais agressivo ... ou algo assim. Heh.
Eu diria que os sinais de um desenvolvedor PHP profissional não são diferentes de um desenvolvedor usando qualquer outra língua
— HorusKol
Marcarei +1 se apenas porque eu gosto que a palavra "marca" nesta pergunta parece ter confundido muitas pessoas. :)
Por um lado, saber quando stripslashes()é necessária ;)
1. Código de alta qualidade
É fácil escrever código, mas muito mais difícil escrever código bom e limpo. Por bem, quero dizer, código legível que corresponde a um estilo específico, é comentado o suficiente, mas não muito, tem métodos curtos, nomes de variáveis ​​auto-documentáveis, etc.
2. Amplo conhecimento
Dificilmente se pode chamar um desenvolvedor profissional se ele conhece apenas uma linguagem de programação. Compreender diferentes paradigmas (como orientado a objetos, funcionais ou reflexivos) também é essencial.
Além disso, como desenvolvedor da web, deve-se conhecer HTTP, JavaScript, SQL, REST e muitas coisas para serem listadas aqui. Um desenvolvedor web profissional deve ser capaz de criar um site de média escala sozinho, com exceção do design visual e dos gráficos. Não deve ser tão bom quanto um site criado por uma equipe de pessoas altamente especializadas, mas ainda assim deve ser aceitável.
Conhecer suas ferramentas também é um requisito. Você deve estar familiarizado o suficiente com controle de versão, IDEs etc.
3. Sólida experiência
Você não se profissionaliza após dois anos de faculdade. Alguém com dez anos de experiência profissional provavelmente terá mais chances de ser chamado de desenvolvedor profissional.
Claro, existem diferentes tipos de experiência. Trabalhar em uma pequena empresa onde ninguém se preocupa com a qualidade do produto não é muito valioso.
Uma experiência em um projeto de larga escala também é agradável. É muito fácil criar um site pequeno, mas muito mais difícil de acertar quando se trata de um site que deve ser implantado em uma variedade de servidores, depende muito do cache, etc.
4. Motivação pessoal
Se uma pessoa é realmente motivada pelo desenvolvimento de software, ela deve ser capaz de demonstrá-lo. Quando entrevisto uma pessoa que afirma ser apaixonada por programação e tem 15 anos de experiência em desenvolvimento de software, mas não consegue responder à pergunta simples: "Fale-me sobre seu último projeto pessoal relacionado à programação", sei que há algo errado. com este candidato.
Tenha projetos de código aberto com código fonte disponíveis para download. Tenha um blog. Participe do Stack Exchange. Todas essas coisas são valiosas quando se apresenta como desenvolvedor profissional.
+1. Eu adicionaria trabalho em equipe. Desenvolver uma equipe / loja pequena não é nada como desenvolver uma equipe / loja grande, mesmo quando você faz parte de uma equipe pequena dentro dessa equipe / loja grande.
Isso é ótimo, obrigado! Marcarei esta página como favorito e me referirei a ela regularmente. Também analisarei o REST, como você sugeriu. :)
Boa resposta. Mas para mim, bom código inclui a ser :) correta
— marktani
Desenvolvo o PHP há 8 anos - desde os 16 anos. Conheço pessoas de todas as idades, formas, tamanhos e origens. Concordo com a maioria dos pontos da MainMa, mas permitam-me acrescentar alguns pontos e alguns pontos.
Esta é a coisa mais importante de longe. Esforce-se para ser o melhor (você pode ser) e, eventualmente, você será. É preciso uma verdadeira paixão pela resolução de problemas e aprimoramento do seu ofício. Você pode dizer em 5 segundos se alguém é apaixonado. Quando você faz uma pergunta, eles se envolvem instantaneamente ou dão uma resposta de duas palavras? Se você recomendar alguma coisa, eles voltam e falam sobre isso depois?
O desenvolvimento de software é um ofício que pode levar décadas para dominar. Eles dizem que leva 10.000 horas para dominar algo, mas acho que ao trabalhar com um alvo em movimento, como desenvolvimento de software, é muito mais. Se você trabalha em período integral, atingirá essa marca a cada poucos anos para poder se reinventar constantemente. Ser capaz de ficar com algo por tanto tempo exige uma quantidade enorme de paciência e, novamente, paixão. Desconfie das pessoas com 10/15 anos de experiência que não são incríveis. Eles não são dedicados e provavelmente perderam a paixão há uma década. 15 anos de experiência não é o mesmo que 1 ano de experiência 15 vezes.
É preciso aprendizado e derrota constantes. Deve ser absolutamente embaraçoso / deprimente olhar para o código do ano anterior. Se não for, você não está aprendendo o suficiente. Encontre as pessoas que estão no topo e aprenda tudo o que puder delas. Normalmente, são os principais colaboradores de código aberto (para desenvolvedores PHP: Symfony, Zend, PHPUnit / Behat / etc.). Eles são os que treinam todos os outros. Quando alguém lhe disser que X é melhor que Y, faça sua própria pesquisa. Geralmente são ovelhas que foram informadas disso há 5 anos e ainda a pregam. Na verdade, este site é um recurso incrível. Encontro uma gama muito ampla de conteúdo que geralmente leva de volta às mesmas pessoas ou diretores principais (Martin Fowler, Tio Bob etc., DDD etc.)
Tanto faz. Se as pessoas querem ofender você / PHP, não deixe que isso o desaponte. Se você seguir os principais princípios de desenvolvimento e realmente criar software , continue em frente. O PHP percorreu um longo caminho e não é o patinho feio que costumava ser. Aprenda com outros idiomas e brinque com os outros de vez em quando. Você pode gostar mais deles ou não. De qualquer forma, ele ampliará seu conhecimento e apresentará novos padrões ou práticas que não são populares nem possíveis no PHP.
Comece a construir uma marca para si mesmo. Blog. Participar de reuniões / conferências. Entre em contato com outras pessoas no Twitter. Encontre uma comunidade / nicho para se envolver. Contribua para projetos de código aberto. A programação é um trabalho muito social agora. Não se isole e torne seu trabalho conhecido. Quanto mais cedo você fizer isso, mais cedo criará relacionamentos com grandes desenvolvedores que o levarão a sério e mais cedo encontrará clientes / empregadores decentes, em vez dos ruins que todos os outros trabalham.
— Adrian Schneider
Gostei do seu comentário sobre o código do ano anterior. Estou constantemente lembrado quão pouco eu realmente sei que no grande esquema das coisas a cada ano, mas eu tenho que a fome de fazer o meu ódio por código antigo menos a cada ano :)
— Simon Whitehead
Tenho que dizer, este post realmente ajudou a colocar as coisas em perspectiva para mim. Especialmente as partes sobre me colocar lá fora e entrar em um projeto bem estabelecido ou dois. Isso faz muito sentido. Definitivamente, tentarei encontrar um grupo de pessoas que faça isso há muito tempo e saber as respostas para as perguntas difíceis. Nos lugares em que saio agora, se eu fizer uma pergunta sobre o padrão composto, por exemplo, as pessoas me dão aquela aparência de espaço alienígena. xD
Além do que Adrian Schneider e MainMa escreveram (que são bons), acho que uma das características de um programador profissional, independentemente da linguagem, é a percepção de que o código tem uma meia-vida extremamente longa - muito mais do que nós. geralmente percebem ou esperam quando o escrevem.
Sim, existem casos extremos de sistemas que remontam a 50 anos ainda em uso ativo (aplicativos críticos para os negócios escritos em COBOL nas décadas de 1960 a 1970 ainda estão sendo usados), mas não precisa ser tão extremo. Obviamente, no outro extremo, o código ad-hoc foi escrito para ser executado apenas uma vez. Um dos aplicativos em que trabalho é basicamente um aplicativo CRUD baseado na Web. Muitas visualizações de tabela, algumas visualizações especializadas, alguns relatórios, algumas probabilidades e fins circundantes. Realmente, nada muito chique no grande esquema das coisas. Com algumas das principais classes e códigos de banco de dados que remontam a mais de 10 anosatualmente, acredito que se encaixa bem na mediana. É claro que a linguagem e a estrutura (C # .NET, neste caso específico) evoluíram ao longo desse tempo, e as pessoas envolvidas adquiriram experiência em usá-lo, mas o código antigo permanece em vigor porque funciona e funciona bem o suficiente, observando pequenas alterações. muda de vez em quando, mas na maioria das vezes apenas fornece a base em que todo o sistema repousa. Meu emprego antes disso foi centrado na substituição de um sistema antigo que foi projetado para apenas um usuário e com peças escritas há mais de 15 anos por algo um pouco mais moderno. Deixe-me reformular isso. Algumas das partes mais importantes do sistema foram encarregadas de substituir o Windows 3.0 anterior.
Um programador profissional, ao escrever um código que não seja explicitamente descartável, projetado para resolver um problema único e muito específico, considerará o fato de que o código que ele escreve hoje provavelmente permanecerá de alguma forma por muitos anos. Se for uma parte essencial do software, é provável que permaneça por uma parte significativa da vida útil do produto. É provável que precise de manutenção no caminho por um programador que não tem nada a ver com a equipe de desenvolvimento original. Caramba, pode até precisar de manutenção pelo programador que originalmente o escreveu! (Se você não entender isso, considere o ditado que o código que você escreveu seis meses atrás também pode ter sido escrito por outra pessoa - tente seis anos em vez de seis meses.)
Daí vem a percepção de que o código precisa ser fácil de ler e entender , fácil de modificar e estender para se encaixar em novos usos ou atender a requisitos variáveis. Também precisa ser fácil de depurar , bem como preferencialmente fácil de seguir sem executá-lo através de um depurador interativo.
+1. Se você trabalha como freelancer ou cria produtos por conta própria, isso é especialmente verdade. Você é pessoalmente responsabilizado. Embora não seja tão extremo quanto 50 anos, ainda tenho clientes antigos voltando para mim de 5 a 8 anos atrás, querendo atualizações feitas nos produtos que eu construí. Minha posição agora? Se você é bom, você quer ser substituível. As pessoas que não o são geralmente abusam de seus clientes com contratos de manutenção longos. (negócio é negócio, eu acho)