Você já se preocupou em estar mais preocupado com a forma como algo é construído do que com o que você está realmente construindo?


11

Como programador, tenho um aborrecimento inerente às minhas ferramentas, ao código de outras pessoas, ao meu código e ao mundo em geral. Eu sempre quero melhorar isso. Então refatoro, fico no topo das técnicas mais recentes. Tento aprender padrões, tento usar estruturas para não reinventar a roda. Eu posso escrever uma especificação técnica que vai explodir suas meias com a quantidade de padrões que eu posso usar.

No entanto, ultimamente, sinto que realmente sei mais sobre as ferramentas que utilizo do que como implementar software de sucesso.

Sinto que não tenho o conjunto de habilidades de fatores humanos e acredito que ser um engenheiro de software bem-sucedido leva mais do que conhecer a estrutura mais legal. Eu acho que também precisa de algumas das seguintes habilidades.

  • Design de interação
  • Experiência de usuário
  • Marketing

Eu aprendi um pouco disso com pessoas com quem trabalhei e com ótimos projetos em que trabalhei, mas não sinto que possuo essas habilidades.

Estou certo? Devo estar tentando desenvolver essas habilidades ainda mais, ou elas devem ser deixadas para as pessoas que as fazem em uma carreira?

Como você se certifica de não ficar muito envolvido com a maneira como está fazendo alguma coisa e se "deixa seus usuários impressionantes"?

Alguém conhece bons recursos para aprender essas habilidades do ponto de vista da programação?


2
Sim, isso é um grande negócio. Se você fosse uma empresa unipessoal, sentiria o aperto imediatamente. Uma empresa iniciante pode não contratá-lo porque você não entende que ela está lutando para sobreviver e que eles precisam lançar coisas com qualidade beta no próximo mês ou morrer, ou porque você não pode exagerar um pouco a verdade ao conversar com os clientes. No entanto, em uma grande corporação que é mal administrada, talvez seja melhor buscar interesse próprio egoísta. A gerência faz isso o tempo todo de qualquer maneira.
Job

Gosto de usar ótimos produtos, onde acho que "uau, isso funciona sem problemas". Então, tentar participar desses produtos "uau" é natural para mim. Se isso não é natural para você, talvez tenha em mente aqueles que gostam disso e estão dispostos a pagar um bom dinheiro (pense nos produtos da Apple).
LennyProgrammers

2
Parece-me que você está no caminho de ser um trabalhador orientado a processos, em vez de um trabalhador orientado a resultados. Você se concentra no processo porque é com isso que você está familiarizado. Aprenda a deixar o processo de lado e se concentrar nos resultados. Como você disse, os padrões de design e outras coisas são meramente ferramentas: sua principal preocupação deve estar em qual problema o produto que você está criando resolverá.
Whatsisname

1
@whatisname, não é tão simples, com certeza os "resultados" podem parecer que esse aplicativo funciona muito bem para a versão 1.0 com algum código ad-hoc que foi hackeado juntos, mas para a versão 2.0 é necessária uma grande mudança, bem, você ainda está ficará preso a um "resultado" do esforço anterior que precisará ser refeito. Acho que é realmente uma situação em que a funcionalidade de um aplicativo do ponto de vista do usuário é apenas a ponta do iceberg e você pode " t restringir o "resultado" a apenas isso
programmx10

@whatisname Se tivesse sido uma resposta, eu teria aceitado, mas também concordo com você, Rick. O que estou tentando chegar é um ponto em que um dos dois conjuntos de habilidades está em equilíbrio, para que eu possa projetar uma ótima experiência do usuário enquanto estiver usando as melhores ferramentas e técnicas. Parece agora que um ou outro está sofrendo. Eu preciso fazer com que os dois conjuntos de habilidades sejam uma segunda natureza.
Rob Stevenson-Leggett

Respostas:


5

Meu pequeno conselho: converse com seus usuários o máximo possível. Não sei se você está em uma empresa grande e está em um continente diferente dos seus usuários, ou se está em uma posição de freelancer, mas, se possível, converse com seus usuários.

Sei que muitas vezes tenho que me sentar e lembrar que não é meu trabalho criar o melhor código que o mundo já viu, ou criar uma função que use a menor quantidade de ciclos e demore o menor tempo tecnologicamente possível, mas para tornar o que os usuários precisam fazer seus trabalhos. E, nesse sentido, acho que além da capacidade técnica, (para mim mesmo) as duas melhores características a ter são um bom conhecimento de negócios dos negócios dos usuários e um bom relacionamento de trabalho com eles.

Eu trabalho em uma empresa pequena (~ 50 pessoas) e gosto de poder ir até o cubo de alguém e conversar sobre a última coisa que fiz / consertei para eles. A melhor sensação absoluta que já recebi do meu trabalho é quando consigo ouvi-los falando sobre seu trabalho e sugerir algo que resolverá um problema que eles nunca perceberam que uma solução técnica pudesse existir. Isso não seria possível se eu não entendesse os negócios deles e não pudesse ter conversas casuais com eles.


1 para falar com utilizadores - crítico para a criação de um produto útil
Gary Rowe

5

Eu diria que depende de onde você trabalha e de quais tipos de empresas você se vê no futuro - o que é realmente uma discussão aberta.

Nas empresas menores, você pode usar muitos chapéus (embora não saiba ao certo por que o marketing está nessa lista, a menos que você pretenda vender seu próprio produto).

Em empresas maiores, eles tendem a ter pessoas que se concentram especificamente nessas coisas.

Realmente, é tudo sobre aonde você se vê indo e potencialmente abrindo mais portas para si mesmo.


2
Obrigado - pontos interessantes. I vista do marketing como mais do que vender, eu estou pensando blogs de desenvolvimento, SEO, afiliados, como eles devem ser integrados, etc.
Rob Stevenson-Leggett

2

Para cada linha de código que você escreve, você apresenta a chance de um bug.

Portanto, os melhores designs minimizam a quantidade de código introduzido - talvez através do princípio DRY (Não se repita). No entanto, as startups favorecem a abordagem YAGNI (Você não vai precisar), que leva ao MVP (Produto mínimo viável) muito mais rápido.

Se seu objetivo é criar um produto limpo e fácil de usar, que faça exatamente o que seus usuários desejam, o YAGNI é o seu padrão de design definitivo. Jogue fora tudo o que não contribui diretamente para o código em funcionamento. Isso inclui processos puristas de construção e uso obsessivo de padrões.

Algum material de leitura

Você pode ler " Não me faça pensar ", que é um excelente livro sobre design de interface do usuário. Além disso, qualquer uma das séries de livros Gitomer (particularmente The Little Green Book ) ajudará você com suas habilidades de vendas, networking e marketing.


1

Eu acho que uma certa quantidade de design de interação e conhecimento da experiência do usuário é muito útil, mesmo em uma grande empresa, por um motivo: você como desenvolvedor é a primeira pessoa a realmente usar a interface, semanas ou meses antes de ela estar em um estado utilizável para um testador para testar.

Pode ser muito útil nos estágios iniciais apontar uma interface que não seja tão fácil de usar quanto o planejado, ou algum princípio de design que possa ter sido negligenciado. Às vezes, essas coisas podem ser difíceis de ver antes que você tenha algo concreto para trabalhar, e você é sempre a primeira pessoa a ter algo concreto para trabalhar.


Eu não estou em uma grande empresa e trabalhei para uma empresa de design de interação no passado. Eu descobri que, porque às vezes faltava meu conhecimento, eu adiava. Você tem algum recurso ou recomendações de livros?
Rob Stevenson-Leggett

1

Eu posso escrever uma especificação técnica que vai explodir suas meias com a quantidade de padrões que eu posso usar.

Somente essa afirmação me leva a acreditar que você precisa trabalhar em outros aspectos do desenvolvimento de software.


Havia muita ironia nisso :) Provavelmente não se saiu muito bem na questão.
Rob Stevenson-Leggett

@ Rob, feliz que você disse isso, eu tinha grandes luzes vermelhas de abuso de padrão piscando em todo o lugar.
ocodo

1

Embora você nunca seja responsável por todos os aspectos do software da sua empresa, ter uma ampla gama de conhecimentos em vários assuntos pode ser extremamente valioso. Se nada mais, é mais coisas que você pode escrever em uma entrevista, para que você possa continuar sua carreira.

Se você não estiver sendo desafiado o suficiente em algumas áreas do seu trabalho, inicie seu próprio projeto em casa para fazer algo que achar interessante. Ou envolva-se com um projeto de código aberto.


1

Não, não sei, não é meu trabalho me preocupar com o que estou construindo, mas construí-lo de acordo com as especificações estabelecidas pelo meu cliente / empregador. Eles já sabem o que querem e cabe a mim implementá-lo adequadamente para que seja sustentável. Vou dar conselhos quando surgir a chance, se eu puder dizer que eles não têm certeza da melhor maneira de colocar um recurso no software

Provavelmente, em algum momento, vou querer fazer meu próprio projeto e me preocupar com o que estou construindo, mas acho que por um tempo, ao iniciar uma carreira de desenvolvimento de software, é importante se esforçar constantemente para aprender a maneira correta de fazer as coisas.


Interessante, você é minoria. Você não acha que às vezes as outras pessoas podem estar erradas?
Rob Stevenson-Leggett
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.