Como um programador lê Origem das Espécies de Darwin

Durante a leitura de A Origem das Espécies pela Seleção Natural, de Charles Darwin, tive um déjà vu persistente. Mais tarde, percebi que os mecanismos descritos no livro se correlacionam fortemente com os mecanismos de desenvolvimento empresarial em grandes empresas. Onde os requisitos de negócios e programadores em constante mudança agem como condições ambientais e codificam como organismos.





Para demonstrar melhor essa ideia, peguei um parágrafo do livro de Darwin e substituí termos biológicos por termos do mundo do desenvolvimento . As propostas em si permaneceram originais. A linguagem é um pouco específica, mas no geral, acho que é compreensível.



Capítulo V. As leis da variação. Breve revisão



Nossa ignorância das leis de variação é profunda. Em nenhum dos 100 casos, podemos determinar a razão pela qual esta ou aquela função mudou. Mas em todos os casos em que temos os meios de comparação, verifica-se que a formação de diferenças menores entre as variedades do mesmo componente é causada pela ação das mesmas leis que as grandes diferenças entre os componentes da mesma biblioteca. Mudanças nas condições geralmente produzem apenas variabilidade flutuante, mas às vezes levam a resultados diretos e definitivos: e esses resultados podem se tornar mais pronunciados com o tempo, embora ainda não haja evidências suficientes para apoiar isso. O hábito - na formação dos traços constitucionais, o uso - na melhoria da função e no não uso - na sua degradação e redução, em muitos casos, parece poderoso em sua ação.



As partes homólogas tendem a variar da mesma maneira, bem como a se ligar umas às outras. A modificação de partes do frontend atua em partes da estrutura interna. Quando uma determinada parte se desenvolve fortemente, ela pode desviar recursos de desenvolvimento de suas partes adjacentes e qualquer parte da estrutura do aplicativo que possa ser eliminada sem danos será eliminada. Mudanças estruturais em uma idade precoce podem afetar partes que se desenvolvem mais tarde; sem dúvida, existem numerosos casos de variação correlativa, cuja natureza não podemos compreender. As partes que são repetitivas são variáveis ​​tanto em número quanto em estrutura, e isso provavelmente decorre da falta de especialização estrita de tais partes para qualquer função particular, de modo que a seleção natural não impediu sua modificação.Uma conseqüência do mesmo motivo, talvez, seja o fato de que os produtos de software nos estágios inferiores de maturidade do produto de software são mais mutáveis ​​do que os de nível superior, cuja estrutura de aplicativo inteira é mais especializada. As funções são rudimentares, inúteis, não sujeitas à seleção natural e, portanto, mutáveis. Atributos do componente, ou seja, os traços pelos quais os componentes de uma biblioteca começaram a diferir desde o momento em que se ramificaram de um ancestral comum são mais variáveis ​​do que os traços da biblioteca, ou seja, aqueles que foram herdados por um longo tempo e para os quais nenhuma diferença surgiu durante o período especificado. Nessas observações, tratamos de funções ou partes especiais, mas ainda assim mutáveis, porque variaram mais recentemente e, como resultado, tornaram-se diferentes; mas no capítulo II vimosque o mesmo princípio se aplica ao projeto como um todo.



Asseguramos que na área que contém muitos componentes desta biblioteca, ou seja, onde recentemente houve mudanças e diferenciações significativas, ou onde a produção de novas formas de componentes tem prosseguido ativamente, em tal área e em tais componentes ainda encontramos, em média, o maior número variedades. As assinaturas de funções são altamente voláteis; eles também são muito diferentes para os componentes do mesmo grupo. A mutabilidade das mesmas partes da estrutura do aplicativo era geralmente útil tanto para gerar assinaturas de função entre dois protocolos de comunicação do mesmo componente, quanto para formar diferenças de componentes entre componentes da mesma biblioteca. Qualquer parte ou função que seja excessiva ou exclusivamente desenvolvida em comparação com a mesma parte ou função em componentes relacionados,deve ter sofrido modificações em proporções extraordinárias desde o início desta biblioteca; a partir disso, entendemos porque eles ainda são frequentemente mutáveis ​​em uma extensão muito maior do que outras partes, uma vez que a variação é um processo lento e duradouro e a seleção natural em tais casos ainda não teve tempo suficiente para dominar a tendência de maior variabilidade e reversão para um estado menos modificado. Mas quando um componente com uma função desenvolvida de forma incomum se tornou o ancestral de vários descendentes modificados, o que, de acordo com minha opinião, deve ser um processo extremamente lento que requer um grande período de tempo, então, nesse caso, a seleção natural já conseguiu conferir características constantes a esta função, apesar do desenvolvimento incomum dela. Componentes,Aqueles que herdaram quase a mesma constituição de seu ancestral comum e foram expostos a condições semelhantes tendem naturalmente a apresentar variações semelhantes ou às vezes retornar a algumas das características de seus ancestrais distantes. Embora, devido à reversão e variação semelhante, novas e importantes modificações não possam surgir, tais modificações serão adicionadas à bela e harmoniosa variedade de desenvolvimento.



Qualquer que seja a razão, talvez, para cada diferença sutil entre as versões da biblioteca - e deve haver uma razão para cada uma delas - temos razões para acreditar que o acúmulo constante de diferenças favoráveis ​​causou todas as modificações estruturais mais importantes devido ao ciclo de vida de cada componente.



Termos que substituí no parágrafo original



  • gênero -> biblioteca
  • ver -> componente
  • órgão -> função
  • individual -> projeto
  • prole e seus pais -> versões de biblioteca
  • nutrientes -> recursos de desenvolvimento
  • seres orgânicos -> produtos de software
  • escada orgânica -> maturidade do produto de software
  • características sexuais secundárias -> assinaturas de função
  • gênero -> protocolo de comunicação
  • fortalecimento, enfraquecimento -> melhoria, degradação
  • sólido e externo -> interface externa
  • macio e interno -> estrutura interna
  • natureza -> desenvolvimento


Também substituí termos que pareceriam estranhos neste contexto:



  • uso -> uso (já que a palavra parece um pouco desatualizada)
  • organização -> estrutura do aplicativo (de modo que o significado esteja correto)
  • estilo de vida -> ciclo de vida


Também sugiro que você se familiarize com o parágrafo original, escondi debaixo do spoiler.



Leia o parágrafo original do livro
. 100 , . , , , , . , : , . – , – – . , . . - , , , , , , . , ; , , . , , , , , , - , . , , , , , , , . , , . , . . , , , , , . . , . , , ; II , . , , , . . , . ; . , . , , ; , , , , . , , , , , , . , , , . , - , , .



, , – , – , .






Uma pequena explicação



Após uma substituição completa, percebi que fica muito difícil ler o texto (quem diria?). Há muitas razões para isto. Um dos mais importantes é o parágrafo selecionado. O fato é que este parágrafo inclui uma breve recontagem de tudo o que foi descrito no próprio capítulo, portanto, o texto é muito sucinto e conciso. Infelizmente, não consegui encontrar outro parágrafo adequado em que fosse possível substituir os termos com tais gestos mínimos.



Para que o texto não pareça completamente louco, vou expandir algumas frases com um pouco mais de detalhes.



Exemplo 1



Original:

Quando uma parte se desenvolve fortemente, ela pode desviar nutrientes de suas partes adjacentes e qualquer parte da organização que possa ser eliminada sem danos será eliminada.


Explicação dessa ideia no capítulo V:

, , ; , , , , , . , , , , , . , , – , .




Quando uma determinada parte se desenvolve fortemente, ela pode desviar recursos de desenvolvimento de suas partes adjacentes e qualquer parte da estrutura do aplicativo que possa ser eliminada sem danos será eliminada.


Um exemplo da vida: os ícones do perfil Habr agora parecem apenas divas com uma borda, e antes eram belos ícones. Obviamente, nenhum recurso é alocado para apoiar e desenvolver esses ícones. No entanto, ler e navegar pelos comentários é muito mais conveniente agora do que antigamente. Aparentemente, o desenvolvimento de comentários tira alguns dos recursos do desenvolvimento de ícones.



Exemplo 2



Original

Traços de espécie, isto é, os traços com os quais as espécies do mesmo gênero começaram a diferir a partir do momento em que se ramificaram de um ancestral comum, são mais variáveis ​​do que os traços genéricos, ou seja, aqueles que foram herdados por muito tempo e que não o foram. diferenças surgiram.



Explicação dessa ideia no capítulo V:

Vamos explicar isso com um exemplo simples: se, em um gênero maior de plantas, algumas espécies tivessem flores azuis e outras - vermelhas, então a cor seria apenas uma característica específica e não surpreenderia ninguém se uma das espécies azuis mudasse para vermelha ou vice-versa. ; mas se todas as espécies tivessem flores azuis, então a cor seria um signo genérico e sua mudança já pareceria um fenômeno mais extraordinário.


Depois de substituir os termos:

Atributos do componente, ou seja, os traços pelos quais os componentes de uma biblioteca começaram a diferir desde o momento em que se ramificaram de um ancestral comum são mais variáveis ​​do que os traços da biblioteca, ou seja, aqueles que foram herdados por um longo tempo e para os quais nenhuma diferença surgiu durante o período especificado.


Exemplo da vida real



Se você usar botões da estrutura CSS Bootstrap em um projeto, por exemplo, é óbvio que o conteúdo das classes .btn ou .btn-primary mudará com mais frequência do que renomear essas classes para algo como .g-button ou g -botão-primeiro



Conclusão



Embora o artigo tenha se revelado assim, semi-sério, mas em qualquer caso, acho que podemos tirar muito do processo evolutivo natural e transferi-lo para o desenvolvimento.



PS: Muito obrigado aos meus amigos e colegas. Eles não tinham ideia de por que os termos estavam me dizendo.



All Articles