Que linguagem de programação é melhor? (Assessoria de Carreira Importante para programadores e desenvolvedores)

por

Você está tendo problemas para converter meios de comunicação social leva em clientes pagantes? CoupSmart é uma ferramenta incrivelmente inteligente que permite a você usar o marketing cupom com "Clube Insider" o que é a sua lista de contatos de mídia social.

Além de ser o atual CTO da CoupSmart, Troy Davis é um desenvolvedor experiente com uma longa lista de sucessos atrás dele. Através de seus anos na indústria de software, ele notou algumas tendências-chave da carreira que separam os desenvolvedores de sucesso de quem nunca atingem o seu potencial.

Troy tem sido bom o suficiente para sentar-se comigo e compartilhar alguns de seus insights. Aproveite a entrevista abaixo.

Você pode por favor me dê um pouco de fundo sobre si mesmo e CoupSmart?

Comecei como um webmaster para as agências de publicidade em 1995, trabalhou como desenvolvedor de software e gerente de TI padrão para algumas empresas como a minha carreira progrediu. Um produto em que trabalhei tenho algum dinheiro de investimento em 2008 e eu tenho trabalhado para empresas iniciantes como CTO desde então. Eu concentrada principalmente em aplicações web mais da minha carreira, mas também desenvolveram um ambiente de trabalho e poucos incorporado aplicativos também. Em 2001 comecei um grupo chamado Cincinnati Programmers Guild, um projeto educacional sem fins lucrativos focada em ampliar o conhecimento dos seus membros por não endossar tecnologias específicas, o que é muito diferente de grupos mais técnicos. Em vez disso, o foco foi colocado em aprender novas idéias, não importa o que as tecnologias foram usadas. Tivemos consistentes reuniões mensais para 5 ou 6 anos, e foi uma grande experiência.

CoupSmart iniciada em 2009 pelo CEO Blake Shipley. Originalmente em torno de um aplicativo para o iPhone, que mudou o foco no final do ano passado para tentar algumas idéias interessantes que surgiram com relação às dinâmicas empresariais, econômicos e sociais de cupons. Nós temos vindo a oferecer a Web / Facebook sistema de promoções por um par de meses, ele permite às pessoas compartilhar ofertas com os seus amigos para ganhar uma oferta de valor mais alto. Nossos clientes são principalmente em Cincinnati no momento. Estamos focados em amarrar as mídias sociais para o mundo físico para nossos clientes, e, recentemente, desenvolveu um dispositivo de hardware para ponto de venda para ajudar neste esforço. Isto está em testes beta com alguns clientes no momento.

Qual é o seu maior carne com mentalidade da comunidade de desenvolvimento de software?

Não é tanto a comunidade de desenvolvedores de software que apresentam um problema, a maioria das pessoas que fazem o esforço para procurar e conversar com outros programadores estão buscando conhecimento por eles mesmos, e geralmente querem aprender como os outros a enfrentar seus desafios. Isto leva muitas vezes a tentar vários idiomas, fornecedores, plataformas, etc, e isso é tudo de bom.

O problema que estou discutindo é mais freqüentemente vista em desenvolvedores solitários. As tecnologias que eles usam são inicialmente atraente simplesmente porque os anúncios de emprego mais elevadas mostram salários iniciais para desenvolvedores com experiência em si. Depois de algumas aulas e muita tentativa e erro, o desenvolvedor se torna minimamente competente de um aspecto estreito de desenvolvimento de software, e consegue um emprego por meio de entrevistas (muitas vezes) com uma pessoa de RH não-técnico que não pode selecionar os desenvolvedores também.

Depois de alguns anos, o desenvolvedor consegue um certo nível de proficiência com as tarefas geralmente atribuídas a eles, e são considerados profissionais de desenvolvimento de software. E muitas vezes costa pelo tempo que puder a este nível.

Algum tempo depois, uma nova pessoa assume o departamento e não se importa com as tecnologias utilizadas pelo seu antecessor. Assim, um esforço de migração começa, e todos devem se adaptar às novas tecnologias rapidamente ou encontrar algum outro tipo de trabalho para si. Se um desenvolvedor tinha tomado um interesse em manter-se atualizado com sua área de trabalho, eles têm recomendações para os novos sistemas de contribuir, e provavelmente iria encontrar um lugar confortável na nova estrutura. Mas aqueles que descansou sobre os louros costumam responder defensivamente, impedindo a mudança porque eles simplesmente temem. E, finalmente, eles ficam de demissão.

Quando eu era ativo com os programadores Cincinnati Guild, eu vi muitos desenvolvedores de mainframe que haviam sido demitidos em ondas, e uma vez desempregados estavam desesperados para pegar uma ideia-chave que eles precisavam para conseguir outro trabalho fazendo a mesma coisa que estavam fazendo para o durar 15 ou 20 anos. Muitas dessas pessoas vieram para as suas reuniões Guilda primeiro ter escrito apenas COBOL ou Fortran toda a sua carreira. Eles nunca se preocupou em aprender qualquer outra coisa. E a maioria deles parecia ter a idéia de que aprender apenas uma língua nova era tudo que eles precisavam para recuperar o seu papel anterior e estatura.

Alguns tem certificações em. Net ou Java, gastando milhares de dólares para reiniciar suas carreiras. Alguns tem novos postos de trabalho e eu nunca os vi em reuniões da Guild novamente, voltaram para suas existências solitárias, suponho eu. Mas a maioria deles permaneceu no desemprego por anos, tendo esta classe ou que classe como eles poderiam pagá-los com trabalhos temporários. Muito poucos deles tentou ir freelance, também. Todos queriam de volta para as grandes empresas, que parecia. A ilusão de segurança do trabalho foi prevalente, apesar da evidência óbvia ao contrário, ou seja, todas as pessoas com enigmas de carreira semelhantes que frequentam as reuniões.

Se um desenvolvedor tem tido sucesso em uma certa plataforma ou linguagem, o que há de errado com especialização e se tornar um especialista nessa área em particular?

Não há nada de errado com se tornar um especialista em uma determinada área de estudo, é superespecialização que está o problema: Focalizando um conjunto de tecnologias para a exclusão de todos os outros. Então, só porque você gosta de escrever acontecer com C + + no Linux não significa que você deve fingir que é a única forma de escrever software decente. Você pode enganar algumas pessoas a pensar que você, mas no final você está apenas enganando a si mesmo.

Um exemplo: Um programador que eu costumava trabalhar com o Windows simplesmente odiava e tudo o que foi com ele. Só não podiam estar na mesma sala com ele. Eu trabalhei em um Mac, então eu era isento de alguma forma. Mas tivemos uma aplicação web que precisava ser compatível com todos os principais navegadores, e que era o plano. Este desenvolvedor brigou com quase todo mundo na equipe simplesmente não suporta o Internet Explorer, que teria sido uma quase certeza de um ato de suicídio para qualquer empresa de SaaS. Eu estava no comando deste grupo, por isso era o meu trabalho para tentar convencê-la a apenas começar o trabalho feito compatibilidade apesar de seus escrúpulos. Não funcionou muito bem, convulsões várias gritando e raiva aconteceu tanto em pessoa e por telefone. Pedi para trabalhar com ela como freelancer apenas por um tempo para ver se algum isolamento iria ajudar, mas isso não aconteceu e, finalmente, ela foi demitida.

Outro exemplo: Um desenvolvedor Linux trabalhou comigo na agência primeira vez que trabalhei menos no final dos anos 90. Ele era jovem e muito opinativa sobre como grande suas tecnologias escolhidas foram. Ele freqüentemente insultado por colegas de trabalho sua incompetência técnica que ele viu, ele não era popular com o pessoal. Mas ele escreveu um código mais ninguém na empresa sabia como escrever no momento, e era importante código, portanto suas erupções sociais foram tolerados. Eu decidi aprender mais sobre Linux e C nesse momento, e dentro de alguns meses tive uma compreensão muito boa do que esse cara estava fazendo a cada dia. E não era muito. Suas afirmações de superioridade técnica tornou-se uma muleta, e ele usou a falta de conhecimento dos outros para justificar a não trabalhar muito duro para todos. Finalmente, ele foi deixar de ir depois de uma troca particular desagradável com alguns colegas de trabalho poucos. No dia seguinte ele conectado ao servidor de um cliente de sua casa e apagou seu site inteiro, juntamente com vários arquivos de log que ele poderia ter implicado em fazê-lo. Mas ele perdeu um, e tinha um endereço IP, que confirmou mais tarde naquele dia com o seu ISP a ser atribuído a seu login naquele momento. Perdemos o cliente de qualquer maneira, mas ele tem especial de supervisão pelas autoridades policiais por muitos anos depois. Ainda pode ser monitorado, eu não tenho certeza.

Muitos podem argumentar que é uma aposta inteligente e um passo na carreira inteligente para alinhar seus esforços com a plataforma mais forte ou mais dominante. O que há de errado com essa mentalidade?

Nada, desde que você entenda que o que você está focando é apenas o sabor atual do mês, e, inevitavelmente, ser substituído por alguma outra tecnologia em algum ponto. Então, basta estar preparado, aprendendo sobre as alternativas antes que seja hora de mudar.

Meu ponto é que a programação é um plano de carreira onde qualquer proficiência valorizado tem uma data de expiração em anexo, e conforme o tempo passa, esse período de validade mais curto cresce. Isto é compatível com o quão rápido hardware está mudando, a indústria de microprocessadores ficou muito perto com as previsões da lei de Moore por mais de 30 anos agora, e muitos acadêmicos dizem que esta é uma prova que ainda estamos na infância da computação. Seria sensato supor que chegamos qualquer tipo de planalto sustentável com estas tecnologias ainda.

Assim, as pessoas de mainframe que mencionei anteriormente que tinha as mesmas tarefas para 15 ou 20 anos são susceptíveis de ser o último de sua espécie. Um programador, solitário overspecialized entrando em campo hoje só pode sair com sua habilidade atual definido por 5-10 anos. Esta diminuição contínua na longevidade das habilidades de computação recém-adquiridas concorda com o conceito de singularidade tecnológica, algo que talvez valesse a pena conferir:

http://en.wikipedia.org/wiki/Technological_singularity

Qual a pior coisa que pode acontecer? O que há de errado com aderindo a técnicas que são "suficientemente bom", e mais familiar?

Eu vejo perigos possíveis, incluindo um défice generalizado de programadores capazes por causa da superespecialização em agora antiquadas tecnologias (as grandes empresas têm vindo a utilizar essa alegação para justificar aumento do número de vistos de trabalho de tecnologia ao longo de décadas), e grandes quantidades de dinheiro gasto desnecessariamente para sustentar um envelhecimento tecnologia devido à resistência interna para mudar. Estes, finalmente, fazer toda a economia menos produtiva / rentável. Isso significa que menos empregos para todos e uma pequena economia em geral como recursos valiosos são gastos não-produtivos esforços, tentando pegar tempestades em copos de vários tamanhos e composições em vez de inventar o que é realmente necessário para o futuro previsível.

E há uma filosofia desenvolvedor de longa duração que "suficientemente bom" técnicas realmente são bons o suficiente, desde que você sabe bem as suas opções. Isso não está em desacordo com o valor do aprendizado contínuo, no entanto. Na maioria das vezes, "suficientemente bom" tem a ver com uma decisão de quanto tempo seria necessário para implementar uma solução mais complexa para um problema, contra a escolha de um método mais simples que conheceu inconvenientes, mas provavelmente não irá se manifestar como um problema . Usando uma técnica antiga para fornecer funcionalidade desejada mais rápido não é intrinsecamente errado, talvez seja a melhor maneira de obter o sistema de trabalho, como desejado. Mas o desconhecimento das alternativas para que a decisão pode ser caro para muitas pessoas mais do que o desenvolvedor e seu empregador. Inadequações de software se repetem uma e outra com números crescentes de pessoas, por isso uma má decisão de um desenvolvedor pode ter um impacto desproporcionalmente grande sobre a vida de muitas pessoas mais ao longo do tempo.

Mas, mais ao ponto, eu não acho que é possível fazer backup de uma alegação de que qualquer tecnologia de software única será "suficientemente bom" para abordar uma grande variedade de problemas ao longo de um longo período de tempo. Nós não somos apenas nesse estádio de desenvolvimento tecnológico ainda.

Qual foi a sua filosofia de desenvolvimento quando se trabalha em CoupSmart, e que tipo de resultados que ele traz?

O trabalho de desenvolvimento de software já havia sido iniciado por dois a tempo parcial desenvolvedores quando entrei CoupSmart, então a linguagem já havia sido escolhido, e que era PHP. Não é minha linguagem favorita, mas é perfeitamente adequado para aplicações web modernas, então eu não estava preocupado. Há também uma vantagem em que os desenvolvedores mais fresco fora da faculdade ter um conhecimento prático do PHP, enquanto que menos estão familiarizados com Ruby, que é a língua que eu poderia ter escolhido se as variáveis ​​tivessem sido diferentes.

E embora seja provavelmente muito cedo para dizer se a nossa escolha linguagem de programação teve um impacto direto no sucesso da CoupSmart como uma empresa, estamos muitas vezes elogiado por outros empresários do nosso círculo de amigos, suas equipes de desenvolvimento de software estão trabalhando em. Net ou Java , e são aparentemente muito menos produtiva dado os mesmos recursos. Então eu vou contar isso como uma vitória provisória.

Porque você acha que outros desenvolvedores são tão resistentes a novas idéias?

Eu acho que você pode responder isso com as mesmas razões as pessoas resistem às mudanças em geral. O medo do desconhecido, a auto-dúvida, escolhas esmagadoras, etc É realmente diferente. Nós desenvolvemos hábitos porque é mais fácil do que repensar cada decisão passada, é apenas mais rápido. Mas quando você deixar de reavaliar suas decisões prévias por muito tempo, sempre há conseqüências como você eo resto da sociedade para além deriva ideológica.

Uma mulher que eu conheci através do Grêmio era um programador de mainframe COBOL que foi despedido depois de mais de 20 anos escrevendo o mesmo tipo de código de cada dia de trabalho. Eles substituíram o mainframe com um sistema mais moderno, e ela não tinha transferido para a equipe fazer o trabalho novo. Ela pensou que seu projeto seria um fracasso, aparentemente. Certamente poderia ter, os lotes de projetos de software falham. Mas este não o fez, e ela foi demitida logo após o mainframe foi desclassificada. Ela decidiu que aquilo era muito novo em programação moderna, que tinha estado ausente em seu trabalho, orientação a objetos (OO aka), uma camada de abstração que torna mais fácil para projetar grandes sistemas de software. Eu incentivei-a a aprender uma nova língua, a fim de se familiarizar com conceitos de OO, mas ela parecia ter medo de alguma forma. Meses depois, ela me disse que finalmente tinha registrado para uma classe em. Net. Isso certamente cobrem tópicos de OO, então eu tentei dar algum reforço positivo. Mas eu acho que sua concepção de como este conceito foi romance pode ter começado em sua maneira de simplesmente usá-la até que ela entendesse. Ela permanece fora do trabalho para este dia, mais de 5 anos mais tarde.

Eu estou familiarizado com um desenvolvedor que trabalhava para uma agência de publicidade concorrente. Eu falei com ele durante o almoço uma vez, e ele admitiu timidamente que sim, ele ainda estava fazendo mais do seu trabalho em ColdFusion, um ambiente de programação que não é sem dúvida o envelhecimento muito bem. Perguntei-lhe se ele estava pensando em tentar algo mais moderno para novos projetos, e ele alegou ter investigado algumas outras opções, mas simplesmente não estava disposta a desistir de seu ambiente favorito, que ele adorava e me senti muito confortável. Cerca de dois anos mais tarde, soube que sua empresa havia fechado seu departamento e deitou-o fora, não bastante clientes queriam que seu trabalho feito em ColdFusion mais, eo desenvolvedor simplesmente não estava disposto a tentar outra coisa, então eles pararam de chegar de novo projetos, e depois de um tempo eles não podiam justificar a mantê-lo em tempo integral apenas para trabalhos de manutenção em aplicações antigas.

Artigos relacionados:

  1. Habilidades de comunicação são vitais para o sucesso em uma carreira de TI
  2. CIOs e CTOs Futuro: O segredo para criar e executar um Winning Informação Plano de Carreira Tecnologia
  3. Conselhos CRM Para Televendas e Atacado (CRM B2B) Teleprospecting
  4. Real-World Conselhos para construir o seu quarto primeiro servidor
  5. Por que é Multi-Core é tão importante?

Deixe uma resposta