Que tipo de método de programação que você prefere? Sucesso vs. Liberdade

StackOverflow https://stackoverflow.com/questions/342169

  •  19-08-2019
  •  | 
  •  

Pergunta

Você prefere ter total liberdade total sobre todas as suas técnicas de desenvolvimento, ou prefere seguir uma abordagem mais segura mais chato que tem um significativamente melhor chance de trabalhar no final? Hacker vs Engenheiro? Painter vs eletricista?

Foi útil?

Solução

Eu gosto de fazer as coisas. Isso significa usar ferramentas de desenvolvimento estabelecidas e um processo razoável, enquanto ser criativo no que faço dentro desse processo. A maior poesia no idioma Inglês foi escrito para meter rigorosa e regras de rima, e parece no entanto criativa para ele.

Outras dicas

A atitude "liberdade ou nada" é juvenil e irritante, o mundo real não funciona desta forma.

Me dê processo estabelecido.

Economist. Se ele me faz dinheiro e não é ético, eu sou todo para ele.

Depende se você é inteligente.

Se você é inteligente, a liberdade então. Você vai fazer o seu próprio sucesso.

Mas o problema é que ninguém pode honestamente dizer se eles próprios são inteligentes.

I don; t acho que a liberdade vs chato é válido. Um processo leve definido que também é flexível é certamente factível. Até que alguém pode me mostrar que eles são hábeis em desenvolvimento Eu provavelmente não vai permitir tanta liberdade.

Na sequência de um processo inelástica indigesto pode ser prejudicial também.

Os lotes do senso comum é necessária, mas é uma coisa difícil e tudo isso varia entre desenvolvedores e organizações. Não há tamanho único para todos.

Pessoalmente, eu prefiro a liberdade de experimentar novas idéias, novas técnicas de análise, novos processos, mas eu acho que deveria ser auto-regulação. Ou seja, eu acho que a necessidade de técnicas, processos, etc. para provar-se benéfica. Exigindo a liberdade de expressão pessoal em um ambiente de equipe provavelmente não é uma boa maneira de construir a equipa, mas penso que a equipa deve estar aberto a melhorar através de novas ideias. Uma vez que um processo / técnica tem sido adotada pela equipe, no entanto, seria contraproducente para continuar a insistir em sua própria maneira (mesmo melhor) se a equipe não vê-lo da mesma forma que você.

Esta não é uma pergunta válida. Você pode exercer a sua liberdade de seguir um processo, ou você pode exercer a sua liberdade de não seguir um processo. Se você seguir um processo ou não, você ainda tem a liberdade.

É uma falsa dicotomia. processo imposta não se correlaciona com sucesso. Por exemplo, nas empresas de telefonia, há uma enorme quantidade de processo impostas aos desenvolvedores de software (leitura ingênua de desenvolvimento 'cascata') com o efeito que muito tempo é desperdiçado escrever documentos de projeto detalhado, em seguida, quando o software é entregue aos clientes de repente descobrir que o que eles pediram para não é o que eles queriam. Nesse ponto os recursos são quase esgotados e todos perdem. processo imposta mata projectos.

Por outro lado, quando Amitabh Srivastava impôs alguns requisitos básicos de análise e de teste da equipe do Windows, as taxas de erros desceu, e, pelo menos entre os meus amigos na Microsoft, a produtividade ea moral subiu. Presumo algo semelhante aconteceu no projeto KDE quando começou a exigir que todos usem valgrind . De repente, não mais erros de memória e desconcertante dumps de núcleo.

Em geral, eu acho que é mais bem sucedida de impor útil ferramentas do que impor processos . Evidências a favor ou contra a utilidade de uma ferramenta podem acumular rapidamente. A única 'processo' que eu vi é consistentemente bem sucedido é que mais do que um par de olhos deve ver o código. O mecanismo pelo qual esta visão é alcançada não importa.

Liberdade para os desenvolvedores é uma questão completamente diferente. Tenho sorte em que eu tenho um trabalho onde eu tenho liberdade quase completa para escolher tudo sobre meu ambiente de desenvolvimento. (Exemplo: trabalho eu em uma loja Red Hat, mas eu não tinha orçamento para comprar um computador e instalar o Debian.) Desde que eu tenho mais de 20 anos de contínua experiência de desenvolvimento de software, que normalmente pode fazer muito boas escolhas sobre o que linguagens e ferramentas para usar. Mas o outro lado disso é que eu posso ser razoavelmente produtiva em qualquer linguagem ou ambiente. Usando Perl ou C ++ pode me atrasar por um fator de 2 ou 3, e usando Lua ou Haskell vai me acelerar para determinados problemas, mas eu vou chegar lá no final.

Mas eu já trabalhei com outros desenvolvedores que têm uma zona de conforto muito limitado, tanto quanto linguagens e ferramentas ir, e quem vai alegremente escolher uma ferramenta muito errada para o trabalho se for dada a liberdade para fazê-lo. I foi perguntado uma vez como um consultor para tentar ajudar uma velocidade grupo até um compilador que estava tomando 24 horas para compilar pequenos programas. Acontece que as pessoas que tinham escrito fosse pelo sistema especialista pessoas e eles tinham escrito um compilador usando um motor de inferência baseado em regras. Eles tenho que trabalhar, mas era a tecnologia errada para o trabalho.

Eu também vi que constranger um desenvolvedor para determinado ambiente ou a linguagem não é garantia de sucesso. Eu me considero um muito mau programador perl considerar; I perl basicamente tratam como awk em esteróides. Eu sou um idiota completo. E ainda assim eu tive que lidar com código perl escrito por outros que era muito pior do que qualquer coisa que eu poderia escrever apenas porque eles nunca tinha aprendido a pensar sobre os problemas ou sobre como organizar o código.

Eu acho que é melhor eu parar ranting agora.

Trabalho em grupos maiores ensinados ser os valores de processos estabelecidos, documentados.

Enquanto você está trabalhando em uma equipe pequena (2-4 pessoas), onde você sabe que todos bem e que todos tenham um objetivo comum, você provavelmente pode funcionar muito bem sem ter um processo definido.

Assim que 10 pessoas têm de cooperar em algo, você vai querer pelo menos algumas regras básicas, para que todos estejam no mesmo lado.

Quando você está fazendo um projeto com 100 pessoas, então você não vai conseguir nada, a menos que você tem regras muito específicas e um processo bem definido.

Pessoalmente eu prefiro se eu poderia fazer o que eu gosto e todo mundo trabalhou de acordo com um rigoroso processo; -)

Existem diferentes aspectos a liberdade. Quando são impedidos de mudar a metade da base de código, porque ele já está "testado" (mesmo que seja codificado mal), eu diria que é um caso onde você precisa de liberdade, mas eu não acho que você está falando sobre isso.

liberdade de estilo Hacker, para usar quaisquer ferramentas são necessárias para resolver o problema, e resolver o problema como um objetivo primário só me aterroriza nos dias de hoje.

Eu nunca vi o código que não precisa de depuração / fixação em algum ponto, e a depuração / fixação sempre parece levar mais tempo, então a codificação inicial fez, de modo a fazer essa primeira rodada de depuração / manutenção / melhoria como fácil como possíveis necessidades para ser seu principal objetivo.

Esta conflitos com "Freedom", porque "Freedom", muitas vezes significa que você é capaz de escolher mecanismos que levam outras pessoas mais tempo para lidar com - e é mais provável que outras pessoas que estarão fazendo essa primeira rodada de manutenção.

E se você colocar a sua angústia pela liberdade para ser criativo em novas áreas de projeto em vez de inventar Yet Another processo de desenvolvimento?

"O sucesso vs. Liberdade" implica que, se você é livre para tomar decisões o programa não será um sucesso.

Eu acho que você realmente tem que repensar isso. Na minha experiência, os desenvolvedores precisam ser livres para escolher o melhor método de implementação, se é melhor após revisão do que os métodos "experimentadas e testadas", então ele vai ser mantidos e usados ??pelo resto da equipe. Mas eles ainda precisam garantir que o código que eles escrevem é bem sucedido em realizar as tarefas que estão destinadas a levar a cabo.

"Freedom", neste caso, apenas parece ser uma palavra emocionalmente positiva ligada a um conceito desagradável. Ele poderia facilmente ser substituído por "teimosia" ou "negligência". Mesmo a questão em si é enquadrado como "o que eu quero fazer" versus "o que é susceptível de trabalho."

É claro, qualquer um é livre para seguir qualquer caminho que escolher. Mas eu, pessoalmente, não iria dedicar um momento da minha vida para algo que eu não preocupam, e se eu fiz cuidado sobre isso, eu faria tudo que pudesse para maximizar as chances de sucesso. Eu não vejo isso como "restritiva" em tudo.

A questão de saber se a vara com a sabedoria convencional ou "pensar fora da caixa" tem sido em torno de sempre na maioria das disciplinas, e não apenas a programação. Eu acho que tem de ser decidido caso a caso.

Eu fui para conferências, onde os jornais mais populares parecem ser análises aprofundadas das coisas-como-que-é. Não diferente de SO, onde as idéias populares são up-votado.

Isso seria OK se não houvesse graves problemas no campo. Grande parte (se não mais) software ainda está muito inchado (IMHO) e sofre problemas de desempenho crônicas. Coisas-como-que-estão são estáveis, mas eles são bons o suficiente?

Eu acho que precisamos de novas idéias, e aqueles será necessariamente impopular, não convencional, e arriscado, por um tempo.

Eu estou contente que o permita ideias não convencionais a serem discutidos, e não como chamas, mas como formas de questionar o status quo.

não também depende do que você está indo para construir no final?

Esses caras acompanhar os processos estabelecidos: http://www.fastcompany.com/magazine /06/writestuff.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top