Quais subculturas de programação / software existem? O que os define? A que você pertence? [fechadas]


13

Para o mundo exterior, programadores, cientistas da computação, engenheiros de software e desenvolvedores podem ser parecidos, mas isso está longe de ser o caso das pessoas que criam software para viver. A capacidade e o conhecimento de qualquer programador podem variar muito, assim como suas ferramentas (SO, idioma e sim, editor preferido), e essa diversidade gera muitas subculturas em software - como programadores que usam ativamente o Stack Overflow e este site, contra muitos mais que não.

Estou curioso para ouvir de outras pessoas as subculturas de software que eles encontraram, pertenceram, admiraram, não gostaram ou até criaram. Para começar, eu encontrei:

  • Empresas e desenvolvedores orientados pela Microsoft : toda a sua pilha é de Redmond, WA. Email é Outlook é email. A web é IE e IIS. Eles têm grandes fichários de sua assinatura do MS Developer Network, cheios de várias versões do VB, .net, Visual Studio, etc. Evita trabalhar com um shell / linha de comando. Não veja o motivo de tanta confusão com código-fonte aberto e coisas assim. As empresas centradas em MS tendem a ser 9-5 e bastante corporativas (conduzidas por gerentes de negócios, não por pessoas de software). Atualmente (dada a ampla disponibilidade de ferramentas que não são do MS), essa é a antítese da cultura hacker.
  • Pessoas da escola antiga de CS : elas conhecem o Lisp e o Unix extremamente bem; às vezes, eles podem ter escrito um Lisp semi-popular ou um utilitário de sistema. Poucas, se é que existem, coisas de "engenharia de software" são novas para elas, nem são impressionadas por elas. Conheça as referências, histórico e implicações de nível superior de linguagens de programação como Lisp, C, Prolog e Smalltalk. Pode ser amargo quanto aos resultados de IA dos anos 80 e 90. Tendem a ser usuários do Emacs. Pode digitar comandos shell de várias linhas sem piscar um olho. Seu conselho pode por enigmático, mas contém ouro, uma vez entendido.
  • Desenvolvedores da web das novas escolas : jogaram com computadores e videogames crescendo, mas geralmente só começaram a programar no final dos anos 90 ou início dos anos 2000. Confortável com 1 a 1,5 scripts / linguagens dinâmicas; acho que C e idiomas fora do Ruby / Perl / Python são desnecessários / mágicos. Pode ter considerado o HTML como programação inicialmente. Tende a adquirir um Mac e é fanático / irracional quanto a isso. Use estruturas mais do que construí-las. Frequentemente excessivamente entusiasmado com o NoSQL e / ou Ruby On Rails.
  • CS nas novas escolas : muito treinamento em estatística, modelos bayesianos e inferência; não diga "IA", diga "aprendizado de máquina". Mais Java que Lisp, mas também podem ser programadores Haskell especializados. Ver grandes sucessos do mundo real por especialistas em seu campo (Google, finanças / quantos) geralmente os torna (excessivamente) confiantes. Mas o big data, e o processamento distribuído desses, realmente estão mudando o mundo.

Os exemplos acima não são de forma alguma completos, corretos, ortogonais ou objetivos. :) Exatamente o que eu vi pessoalmente e forneci para desencadear uma discussão e esboço da questão mais ampla. Sinta-se livre para discordar!


1
'Lil' é vago, mas parece interessante.
Rook

6
Penso que as respostas mostram uma coisa: a questão é tentar desenhar linhas divisórias claras onde realmente não há nenhuma. Estamos lidando com cerca de 5 conceitos ortogonais, cada um continuum, e tentando dividir esse hiperplano em grupos discretos facilmente identificáveis. IMO, é um esforço sem esperança.
Jerry Coffin

3
@Jerry Coffin - sim, concordo. Sem mencionar que algumas respostas são quase ofensivas em relação a algumas "culturas", IMHO. No entanto, essas respostas são boas de uma maneira que mostram o que os atuais (programadores? Ou pelo menos essa comunidade) pensam sobre outras comunidades, que formam parte disso (em uma pequena porcentagem).
Rook

@JerryCoffin Bem senhor, há pessoas que querem usar essa palavra "ortogonal" e aqueles que não o fazem apenas porque tem sido popular na pilha nas últimas décadas ...
Erik Reppen

Respostas:


12

Eu me consideraria parte do grupo de sistemas em tempo real . Existem algumas características da "velha escola", mas com menos foco no CS, mais no hardware.

O arquétipo:

  • Possui conhecimento especializado de 'C'
    • Possui uma cópia original da K&R
    • Grava em outros idiomas como se fossem apenas uma sintaxe alternativa para 'C'
  • Pode prever a saída do assembler a partir de seu código.
  • Pode ler um diagrama de circuito
  • Não sabe escrever código sem fazer 'otimização prematura'.
  • É bastante confortável com a linha de comando.

Fascinante, obrigado. Eu conheci algumas pessoas de sistemas em tempo real, mas não trabalhei em um local assim, por isso não tentei caracterizar a cultura. Eu acho que muitos de nós programadores chamaríamos vocês de "hard-core". :)
limist

1
Eu acho que é como qualquer outra disciplina - existem as "estrelas do rock" do núcleo duro, e há as rochas antigas simples. (Espero que eu estou em algum lugar inbetween)
AShelly

2
Eu também estou nesse grupo. A maioria dos meus colegas chegou a este lugar com experiência em engenharia eletrônica, mas me dediquei a ser desenvolvedor de banco de dados / aplicativos. Agora, estou muito confortável neste grupo e, às vezes, minha formação diferente pode trazer uma perspectiva útil diferente.
Vicky

1
Além disso, pode ser a minha percepção, mas parece que as mulheres são ainda mais raras neste grupo do que em alguns dos outros grupos.
Vicky

1
Uau - isso me descreve quase perfeitamente, exceto que eu não apenas leio os diagramas de circuitos, também projeto os circuitos. Trabalhei no meu primeiro sistema embarcado (no PL / M-86) no final dos anos 70.
tcrosley

6

Não se esqueça dos programadores de mainframe. Eles também são uma subcultura.


1
Gostaria de ouvir mais sobre a cultura dos codificadores de mainframe; Eu conheci muito poucos que passam muito tempo com mainframes, e muito menos codificá-los regularmente.
limist

1
Essas são pessoas com cortes de cabelo respeitáveis ​​e são indistinguíveis de outras pessoas vestindo trajes de negócios. Eles gostam de COBOL. Para eles, não existe outro sistema além de um sistema / 360.
Oosterwal

5

Eu represento o contingente solitário de Delphi Devs com menos de 30 anos. Nosso caucus é pequeno, mas nosso coração é grande.


Alguns dos meus colegas de trabalho têm <30 anos.
Toon Krijthe,

2
Bem, Diga-lhes para começar uma troca de pilha e podemos falar sobre os novos recursos que vão pedir velho Johnny Borland para implementar depois vocês todos estão mortos ;-)
Peter Turner

4

Eu acho que existem várias culturas que de alguma forma vivem ao lado, em vez de lutar, e são de alguma forma transcendentes:

  • Cultura de hackers / código aberto : compartilhando código, usa nome real ou não. Concentrado provavelmente em pequenas ferramentas que resolvem um problema. Permite hacks no programa. Idiomas: C , Lisp , C ++ , Python . Provavelmente se sobrepõe ao seu pessoal da escola antiga .
  • Academia : concentração em algoritmos e fazer as coisas da maneira certa. O nome verdadeiro é obrigatório (ele aparece no papel de qualquer maneira). Idiomas: Java , Haskell , ( F # ?)
  • Corportate : concentração em soluções (provavelmente de tudo). Se o código aberto não fornecer o nome, é necessário . Idiomas: Java , C # , VB.net , Ruby .
  • " Ensino médio ": é bom se funcionar, mas não precisa. Concentração em nomes como "SuperProgram 1.0 for Windows XP". (desculpe - não encontrei um bom nome, mas quero dizer os programadores que começaram a dominar o CS e não são bons nisso - pelo menos ainda). Idiomas: PHP , VB , Ruby
  • Desenvolvedores da Web para novas escolas : Como acima.

Observe que:

  • é possível misturar as culturas nas organizações e em uma única pessoa. De fato, muitas vezes acontece.
  • Os idiomas são EXEMPLOS e, por exemplo, é um grupo bastante grande de "hackers" trabalhando em C #. É mais um jogo de associações que o estudo real, por isso não se ofenda (sim - eu sei que existem ótimos programas escritos em PHP com boas práticas de engenharia, etc., mas costuma ser o primeiro idioma para muitas pessoas que não não sei o que, por exemplo, XSS é)
  • Não queria ofender ninguém chamado High School. Eu quis dizer que geralmente é o primeiro passo para a programação através dessa cultura (e espero que não seja a última)
  • Edit: Academia não significa que a pessoa está na academia, assim como estar na academia não significa que alguém pertence à academia (apesar de ser brilhante cientista / pesquisador etc.). Isso denota que ele prefere as ferramentas que fornecem uma solução clara e obviamente correta, mesmo que falte desempenho / demore mais tempo / ... A cultura corporativa similar não é equivalente às corporações.

Eu acho que atualmente sou principalmente Open Source com uma leve influência da Academia (passiva).


Eu estava pensando sobre a forte sobreposição da moderna subcultura CS / academia e programadores Haskell. Depois de brincar um pouco com Haskell, posso ver por que ele atrai aqueles com formação em ciências formais (ciências da computação, matemática) e, de fato, acho que Haskell ajuda a ver a programação de um nível superior.
limist

Somente Java e Haskell na Academia? E quanto ao Fortran, C, C ++, R, MATLAB, * sh + awk (sim, eu conheço essas pessoas), Mathematica, Python, LabVIEW? Também Haskell provavelmente deve ser substituído por "qualquer linguagem funcional".
mbq 21/09/10

Esses são exemplos. Exemplos com BIASED . Como observei, os idiomas NÃO são específicos da cultura. Observe também que a cultura acadêmica não se limita à academia e nem todos na academia precisam adotar a cultura acadêmica. Embora eu concorde que o Fotran / C / C ++ / R / Matlab / ... seja usado na academia, eles não formam uma forte associação com ele em minha mente. * sh + awk é definitivamente não-académico (como cultura - utilizador pode trabalhar na academia e ser cientista briliant - que é totalmente diferente thing0.
Maciej Piechotka

1
Eu acho que você está indo para acadêmicos de ciência da computação.
MBq

2

Eu meio que estou no campo de Alt.NET/old-school CS. Eu trabalho com a tecnologia da Microsoft (C #, etc.), mas sei que há um mundo inteiro à minha volta, outras linguagens, algoritmos, estruturas, "coisas escondidas" etc. Não é perfeito, obviamente, mas é um trabalho em progresso.


1
A multidão do Alt.NET é definitivamente uma subcultura de programação e absolutamente distinta da descrição de limist da cultura orientada pela Microsoft (que parece mais com o que essa cultura era uma década atrás do que é agora para mim).
Carson63000

2

Eu não concordo inteiramente com esta afirmação sobre a subcultura MS: "Não vejo de que se trata o barulho com código aberto e coisas assim - além disso, quem precisa conhecer outro idioma? Geralmente, eu encontrei esses lugares 9-5 e bastante corporativo (dirigido por gerentes de negócios, não por pessoas de software). A antese da cultura hacker ". Eu já trabalhei em duas lojas .Net e o ambiente era muito parecido com um hacker. Empregamos muitos projetos de código aberto em nosso trabalho. Na minha opção, tudo depende do tipo de pessoa com quem se trabalha. Se eles são verdadeiros desenvolvedores, procurarão constantemente maneiras de melhorar e se ramificar. Quais tecnologias eles usam é irrelevante.

Não se esqueça da subcultura da Metodologia Ágil, que incorpora desenvolvedores de diferentes origens.


Sim, o pessoal do Agile é uma subcultura para si. Bom ponto re. o desenvolvedor versus a ferramenta e, é claro, sua experiência pode ser bem diferente da minha. Pela minha amostragem limitada, descobri que as ferramentas moldavam bastante os fabricantes.
limist

Eu trabalhei em uma loja de MS (e posso até ser um fanboy), mas a mentalidade que experimentei é "procure o MS primeiro, se for gratuito, use-o. Caso contrário, procure tudo e qualquer coisa disponível para atender à necessidade . "
Steven Evers

2

Acho que haveria meio termo entre o Old School CS e o New School Web Developers .

Tradicionalmente, eu me considerava um "desenvolvedor da Web". PHP e Java e cidadãos de primeira classe para mim, juntamente com HTML / CSS adequado, simétrico e válido . Jogue no SQL e você terá um conjunto de habilidades robusto e bem arredondado.

Mova New School para Script Kiddies e renomeie o desenvolvedor da Web .

Kiddies de script - Pessoas com pouco ou nenhum conhecimento "oculto" sobre o idioma. Tende ao google para tutoriais antes de copiar / colar cegamente o código no lugar. Normalmente, não entende completamente a sintaxe de mais de um idioma.


2

Acadêmicos que fazem pesquisas usando computadores, não pesquisas sobre computadores.

Eles:
- está escrevendo software que pode consumir quantidades ilimitadas de tempo de CPU, memória e disco espaço para que eles se preocupam (ou pelo menos tentar cuidado) de desempenho, quer usando o material como -O3, time, profilers, memcheck, e passar horas mais ou menos alterar aleatoriamente o código para aumentar a velocidade ou aplicar, sem pensar, alguns truques míticos em seus scripts.
- use números reais e saiba que é complicado o suficiente para que uma ciência separada chamada "numérica" ​​possa existir.
- costuma usar algumas linguagens de programação / bibliotecas / programas muito específicos e é muito fanático por isso; guerras de chamas são comuns, principalmente sobre desempenho.
- chame seus programas de "códigos" para destacar que eles têm uma interface de usuário tão ofuscada que apenas seus criadores sabem como usá-la.
- normalmente trabalham no Linux ou pelo menos usam o PuTTY para ssh em algumas estações de trabalho / cluster do Linux.


1
Sim, eu também estou neste clube. Esta lista é um bom começo para uma descrição do físico típico de alta energia (ou seja, estuda quarks, não bebeu muito café) ou astrônomo trabalhando com os grandes instrumentos atuais.
darenw

1
E, como essa subcultura se preocupa muito com a eficiência prática, reproduzível e extrema, muitas vezes se preocupam pouco com a maioria das coisas acontecendo no mundo da ciência da computação, a menos que isso tenha a ver com processamento paralelo, esquemas inteligentes de cache, HPC e outros. .
darenw

@ DarenW: Como assim eles se importam pouco com o mundo da ciência da computação? Você quer dizer que eles não se importam com as boas práticas de software e coisas do gênero? Porque eu discordo. Preocupar-se com o desempenho não precisa que você jogue bons princípios de engenharia de software.
N1ckp 9/10/10

1

Provavelmente sou uma combinação de pessoal da velha escola de CS e desenvolvedores da web da nova escola : aprendi programação escrevendo sites com PHP, Javascript e SQL e agora estou frequentando uma universidade onde tudo é feito em prompt de comando e Emacs no UNIX.


0

Conte-me como o cara da velha escola. Eu nunca fiz o LISP bem, no entanto. Emacs? Nah, vie set -o vina minha concha para mim obrigado.

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.