Coisas que você deveria ter aprendido na escola, mas não prestou atenção no momento [fechado]

42

Essa pergunta me fez pensar que havia uma pergunta melhor a ser feita.

O que você aprendeu na escola com o qual não se importava na época, mas acabou sendo útil ou teve que reaprender no local de trabalho porque o tinha na escola, mas não retinha as informações e precisava? (Quero dizer para trabalhos relacionados a software.)

Acho que isso pode ajudar os estudantes universitários a identificar parte do que realmente deveriam prestar atenção enquanto estão na escola.

HLGEM
fonte
16
Lamento não ter passado mais tempo aprendendo idiomas falados (apenas clicaram em mim 10-20 anos depois), mas isso não está relacionado à programação.
precisa saber é o seguinte

Respostas:

36

A maioria dos desenvolvedores que eu vi fora da escola não tinha muita experiência com o desenvolvimento de OO . Eles já ouviram falar, mas a maioria é apenas 'colocar coisas nas aulas'.

Na escola, você recebe muitos exemplos de carros e pessoas que podem ser colocados na estrutura OO. Isso ensina polimorfismo, sobrecarga e coisas assim. Coisas bastante "básicas". É bom saber essas coisas e como elas funcionam, mas nunca tive um exemplo de uso no mundo real para isso. Eu acho importante mostrar aos alunos alguns cenários do mundo real, nos quais algum design é usado.

Outra coisa que perdi na faculdade é o uso (ou uso indevido) de padrões de design utilizáveis . Penso que hoje em dia os padrões mais importantes devem ser introduzidos em algum lugar no final do primeiro ano ou no início do segundo ano. Os alunos devem se familiarizar com eles.

Escrever código limpo é algo que não é ensinado (o suficiente) na escola. Poderíamos fazer uma verdadeira bagunça no código e ainda obter um A +. 'Se o aplicativo funcionar, é bom.' foi o lema. Os alunos devem aprender a escrever códigos limpos e de alta qualidade e serem recompensados ​​por isso, isso também significa refatorar e usar os padrões ou as melhores práticas que aprenderam.

É claro que os estudantes ansiosos aprenderam tudo isso sozinhos, mas outros que não estavam tão ansiosos não. Isso pode ser causado por falta de motivação ou eles simplesmente não sabem onde ou como procurar. Ao pagar muito dinheiro por uma escola, acho que eles realmente deveriam ensinar essas coisas semi-avançadas.

Além disso, algumas redações decentes (profissionais) são uma habilidade que falta para a maioria das pessoas. Pena que é muito importante no mundo real. O mais importante é ser capaz de deixar claro seu idioma nativo. Se você não consegue escrever claramente no seu idioma principal, é difícil se comunicar em uma empresa.

Não sei se você pode ensinar alguém a escrever nessa idade, eles já devem estar familiarizados com essa habilidade. Pode-se repetir as coisas ensinadas no ensino médio. Talvez ensine os alunos a escrever comentários e documentação técnica. Ainda acho difícil escrever documentos técnicos, pois ninguém parece saber como fazê-lo ou qual é o formato padrão.

Jan_V
fonte
1
esta resposta não é OP, mas para o seu complemento: o que eles lhe ensinaram melhor / mais aprofundada
davka
1
O objetivo de uma educação de graduação é apresentar ao aluno a amplitude de um campo. Especialização é o que se faz no nível de pós-graduação. Espero que os candidatos recém-saídos da faculdade sejam especialistas em qualquer coisa. Espero que os recém-formados tenham um conjunto completo de fundamentos que abranjam a lacuna entre organização de computadores e análise básica de algoritmos. Não me importo se um candidato memorizou os limites assintóticos de todos os algoritmos de busca e classificação. Prefiro um candidato que possa determinar os limites assintóticos para um pedaço de código do mundo real.
precisa saber é o seguinte
3
Eu sou o único a se encolher quando 'aprender' é (incorretamente) usado em vez de 'ensinar'?
dr-janeiro
1
@ dr-jan: Obrigado por apontar. Editado.
Jan_V
1
Na minha opinião, a única maneira de ensinar a sério a escrita de software é ter cursos plurianuais, nos quais você enfrenta seus próprios erros do passado.
Paul Nathan
120

Meninas. Você pode pensar que estou brincando, mas não estou.

Não enlouqueça nem nada, você ainda precisa aprender o material acadêmico. Mas você também precisa gastar algum tempo aprendendo sobre as pessoas, das pessoas ao seu redor.

Isso inclui a metade da humanidade que tem interesses e atitudes completamente diferentes de você e de seus amigos, mas com quem você ainda vai querer se dar bem.

Ben
fonte
16
Eu gostaria de poder dar isso a mais votos positivos.
Marx '03
3
Passar mais tempo com pessoas que não Grok computadores em geral é uma coisa boa (tm)
Rob Allen
16
Mais de 48 pessoas que aprovaram isso apenas suspiraram em silêncio.
George
Caso contrário, conhecido como 'Usuários'.
Gary Willoughby
61

Eu acho que deveria ter colocado cerca de 42% mais energia nas estatísticas.

FrustratedWithFormsDesigner
fonte
10
Meu irmão e eu dissemos à nossa mãe no ano passado que gostaríamos de ter estudado mais estatísticas. Eu sou um quant e ele é um médico. Oh, e minha mãe é professora de estatísticas ...
chrisaycock
4
@avka: Ele aparece com mais frequência nos testes, principalmente nos testes de desempenho. Também na análise de dados, que eu tenho muito hoje em dia.
FrustratedWithFormsDesigner
4
@davka - Eu trabalho em uma empresa orientada a dados e uma boa análise estatística seria útil para os desenvolvedores poderem apresentar suas descobertas sobre 'por que o código x é melhor que o código y' ou 'sim, posso provar que, se você me permitir Para investir duas semanas para melhorar isso, a análise estatística mostra que ele irá acelerar em x% '. Saber como aplicar técnicas estatísticas para projetar seus experimentos é realmente o objetivo aqui.
Wkl
3
Eu acho que há uma chance de 70 + / - 2% de que eu deveria ter feito estatísticas.
Zachary K
10
60% do tempo, funciona sempre.
Matthew Leia
51

Escrever seria um dos maiores para mim. Eu não acho que isso seja limitado apenas aos desenvolvedores.

Erin
fonte
estouro de pilha e blogs me ajudaram muito nisso.
Svish
36

Programação funcional. Na época, parecia um enxame de parênteses que não podia fazer nada de útil. Agora que as expressões lambda estão sendo amplamente disseminadas, tive que treinar meu cérebro para pensar dessa maneira. Na faculdade, eu só queria colocar o LISP e o Scheme o mais longe possível no espelho retrovisor e nunca olhar para trás. Se eu tivesse alguma idéia de como alguns aspectos da programação funcional poderiam ser úteis, eu teria prestado mais atenção.

Jason
fonte
9
+1. Acredito firmemente que, para alguém que não sabe programar, a programação funcional é mais fácil de aprender do que a programação imperativa, que a programação imperativa é fácil de aprender se você conhece a programação funcional e que a programação funcional é difícil de aprender se você aprendeu a programação imperativa primeiro. Portanto, faz sentido não apenas ensinar programação funcional, mas também desenvolvê-la primeiro e, o mais importante , não fazer isso com tanta coisa ! Eu amo como o SICP faz isso. A primeira tarefa não aparece até algumas centenas de páginas e você nem percebe.
Jörg W Mittag 02/03
1
+1. O esquema me afastou dos paradigmas funcionais por vários anos na faculdade, pois eu tinha experiência em C e C ++ antes de fazer o curso. Eu não listei como algo que eu achava que deveria ter prestado mais atenção, porque no último ano, fiz um curso de idiomas e usei o SML e realmente gostei, e também gostei do Lisp. Provavelmente, apenas o produto de experiências em toda a faculdade, tornando muito mais fácil para mim entender como usar esses paradigmas. Agora também estou me ensinando Scala e gostando muito. : D
wkl
1
Eu geralmente concordo (mais funcional na escola), mas é impossível provar que é mais fácil ou mais difícil aprender programação funcional com base no estilo que você aprendeu primeiro.
21711 Kevin
34

Expressões regulares. Lembro-me claramente de tê-los explodido na faculdade. Eles foram indispensáveis ​​para o trabalho.

patrickmcgraw
fonte
2
As expressões regulares só deve ser usado como um último cenário no entanto
billy.bob
Sim! Lembro-me de pensar o quanto eu odiava naquela época ... Aprendi para a turma e tirei-a da minha mente até que eu precisasse novamente vários anos depois. Então eu estava me xingando porque tive que reaprendê-lo.
Bmw
4
@ m.edmondson, expressões regulares são ótimas para tarefas simples. Você pode estar fazendo algo errado se estiver usando-os em seu código (afinal, analisar combinadores é muito melhor), mas para sua pesquisa e substituição típica em um editor de texto, elas estão bem.
SK-logic
3
Expressões regulares são uma ótima ferramenta para uso na linha de comando e em editores poderosos, como vim ou emacs. Não apenas para uso em código.
precisa saber é o seguinte
1
@ m.edmonson, expressões não regulares são ferramentas fantásticas que devem ser escolhidas primeiro ! Nas situações em que se aplicam - saber quando não se aplica é onde a experiência é necessária.
33

Minha resposta favorita (estatística) foi aceita, então darei minha segunda resposta favorita. Notação Big-O e conhecimento da eficiência de vários algoritmos-chave. É menos uma "arma secreta" para mim do que estatísticas, mas ainda é muito valiosa.

btilly
fonte
2
Talvez eu simplesmente não esteja escrevendo coisas complexas o suficiente, mas a única vez que tive que conhecer Big O foi em uma entrevista em uma empresa de tecnologia de ponta. Então, enquanto eu o aprendi há 20 anos, desde que eu não uso, mas uma vez a cada 10 anos, não me lembro.
Bill Leeper
2
@ bill-leeper: Minha experiência é que o Big-O não é algo que você usa todos os dias, mas é algo que, quando você conhece, de vez em quando ajuda a descobrir um problema que você não sabia que tinha, ou caso contrário, não teria descoberto. Se você não o conhece, nunca tem essas idéias e não sabe o que está perdendo.
btilly
1
@ bill, big-O é apenas uma maneira formal de dizer que você precisa ter cuidado com quantos loops você coloca em outro quando precisa escalar. A maioria dos programadores aprende isso de uma maneira ou de outra sem precisar saber o nome formal.
23

Eu gostaria de ouvir o que meu professor me disse quando eu tinha 14 anos. Infelizmente, não posso te dizer o que foi, porque não ouvi.

user4051
fonte
21

Tem que ser o curso de Linguagem Finita e Teoria de Autômatos.

Pensei que era muito teórico, até que meu trabalho exigisse que eu fizesse um compilador de idioma específico do domínio do zero.

Fanatic23
fonte
4
Uau. O que você faz exatamente ? Se você não se importa me perguntando =)
Fouronnes
1
@otibom: Eu trabalho com semicondutores, e ele tem suas próprias linguagens específicas de domínio com requisitos de desempenho razoavelmente rigorosos.
precisa saber é o seguinte
18

Eu diria C, assim como o UNIX. Embora eu tenha aprendido o UNIX logo após a faculdade, sinto que teria me beneficiado de me aprofundar mais no UNIX e no C.

Craig Maloney
fonte
UNIX? Isso ainda é ensinado nas faculdades?
precisa saber é o seguinte
1
Deveria ser ... ou bem, mais parecido com o Linux. Qualquer programador deve conhecer um pouco do bash (ou outro shell).
Por Wiklander
17
  • Inteligência Artificial / Mineração de Dados - participei da aula, fiquei entediada, anos depois estou aprendendo sobre tópicos como inteligência coletiva por conta própria. A análise de grandes conjuntos de dados é importante no meu trabalho e nos trabalhos anteriores.
  • Teoria / design de banco de dados - Novamente, participei da aula, estava entediado, então eu mesmo aprendi coisas sobre bancos de dados
  • Apenas matemática de alto nível e técnicas interessantes de matemática em geral - fiz 4 aulas de cálculo, álgebra linear, estatística, probabilidade, discreta ... mas achei que deveria ter feito:
    • Métodos numéricos
    • Métodos estatísticos avançados, até coisas como cadeias de Markov - novamente, relacionados à análise de grandes conjuntos de dados
  • Interação Humano-Computador - na escola, não achei que fosse útil para o que eu faria no meu trabalho (eu gostava de trabalhar em um nível baixo ou nos bastidores), mas em qualquer trabalho que tive, a usabilidade tem sido um foco às vezes.
  • Uma segunda língua - eu sempre tive um dom para as línguas, mas na faculdade eu não aprendi uma língua e acho difícil tentar me ensinar japonês.
wkl
fonte
13

Escrita técnica. Passo muito tempo escrevendo requisitos, me comunicando com clientes e colegas de trabalho. Esta é uma área em que eu tive uma aula de 1 hora de crédito na faculdade. A única outra turma que realmente ajudou na minha carreira foi outra aula de 1 hora de crédito. Isso foi na programação C. O resto, embora interessante e provavelmente tenha ajudado minhas habilidades analíticas gerais, não foi realmente um benefício direto para minha carreira.

Concedido, eu fui para a escola há 20 anos e C era considerado de ponta no departamento de Engenharia Elétrica. O pessoal do CS estava fazendo algumas coisas com Lisp e C ++, mas ainda assim provavelmente não teve tanto OO quanto eu esperava que estivesse acontecendo com os graduados de hoje.

Bill Leeper
fonte
11

Documentos de Design

Sempre presumi que alguém mais criaria essas coisas ou que elas eram apenas documentos simples. Eles não são nada simples e minha equipe é pequena o suficiente para fazer meus próprios documentos de design.

Rachel
fonte
alguém os escreverá se eu não for bom nisso, e é assim que eu gosto.
21711 Kevin
10

Segunda língua estrangeira. Russo no meu caso. Muitos livros, recursos e muito mais nesse idioma em particular no meu espaço circundante.

lfx
fonte
@FrustratedWithFormsDesigner sim agora, mas quando eu era criança ... :)
LFX
Estudei francês e alemão pessoalmente e passei algum tempo na Alemanha. É algo que todos deveriam experimentar.
Ken
12
Sério? Recursos relacionados à programação em russo? Eu sou um falante nativo de russo, mas quase nunca faço uso disso quando procuro coisas sobre programação. Na maioria das vezes, digitar uma consulta em inglês no Google me dá uma resposta. Além disso, os livros técnicos em russo geralmente são traduções muito ruins do inglês.
Dima
@ Dima, que situação é hoje em dia não sei, mas quando eu estava na colagem e na escola, todos os professores disseram isso.
Lfx 3/03
3
@FrustratedWithFormsDesigner: isso eu acredito. Certamente, existe muito material relacionado à matemática em russo. Mas se você está falando sobre assuntos relacionados ao computador, é melhor você saber inglês.
Dima
8

Do lado CS das coisas:

  • Design da interface do usuário
  • Teste
  • Controle de versão
  • Concorrência

Na categoria tudo:

  • Escrita técnica
  • Comunicação de fala
  • Habilidades de estimativa de tempo
Tyanna
fonte
+1 para teste e controle de versão. Sério, ouvimos muito que os testes eram muito importantes ... nunca realmente aprendemos a fazê-lo ... (e isso não foi nossa culpa. Nunca tivemos nada sobre isso realmente)
Svish
7

Vector matemática e cálculo. Eu os tinha, mas meus professores eram péssimos e na verdade não ensinavam as matérias. Mas, como alguém que gosta muito de programação gráfica ... uma base matemática vetorial melhor teria ajudado.

GrandmasterB
fonte
7

Obviamente, História e Literatura. O problema geralmente é que a escola não as torna interessantes.

jokoon
fonte
Ao aprender como aluno em casa, eles podem ser muito mais interessantes.
Matthew Rodatus
6

Eletrônicos

Eu não tinha muita coisa relacionada a software na escola . Ah - informática, mas eu cancelei. :) Mas foi fácil aprender mais tarde. Enquanto eletrônica, muitas vezes não entendo. Microcontroladores, PWM, GPIO - wtf? Eu gostaria de entender as coisas.

Usuário desconhecido
fonte
Tomei Eletrônica no (o equivalente da UE) ao ensino médio, porque não havia uma escolha de TI "pura". Ainda feliz até hoje por saber não apenas como usar computadores e seu hardware periférico, mas também como eles funcionam.
Vincent Vancalbergh
5

Rede / computação distribuída . A programação não é um desafio, mas os pré-requisitos na arquitetura atual são um conhecimento profundo dos conceitos distribuídos.

Um curso detalhado foi oferecido como eletivo, mas teve que escolher entre isso e IA: portanto, não é realmente um arrependimento.

CMR
fonte
5

Padrões de design: a maneira como eles foram apresentados não lhe mostrou como eles são úteis, desde então, li alguns livros sobre eles e os acho incrivelmente úteis.

Omar Kooheji
fonte
Isso me incomoda em geral sobre o treinamento em programação; somos aceitáveis ​​em explicar o como, mas não o porquê. E não há bons exemplos práticos. É por isso que temos pessoas que usam as técnicas usadas para o problema, elas escolhem a primeira que lhes ocorre que funcionará sem o conhecimento de dizer que essa outra técnica é melhor para esse problema em particular.
HLGEM em 03/11
4

Unix, Shellscripting, C. Teve a chance de aprender bem na escola, mas teve que fazer isso mais tarde no trabalho.

user281377
fonte
4

Coisas que não são de informática:
Pessoalmente, eu gostaria de ter uma língua nativa como a maioria das pessoas normais por aqui. Com isso, quero dizer que a maioria das pessoas nasceu falando um idioma principal e talvez escolhendo outro ou dois depois. Nessa situação, os idiomas adicionais geralmente não afetam o idioma nativo porque você já possui uma base sólida que abrange fala, escrita e audição. Cresci falando, escrevendo e ouvindo três idiomas distintos simultaneamente. Embora eu sempre tenha me saído bem nas aulas de idiomas, tanto na escola quanto na faculdade, gostaria de ter fluência completa em UM idioma. Isso resulta em eu ter que pensar um pouco por uma fração de segundo antes de formular uma resposta. Algumas pessoas percebem isso e concluem que sou muito tímido (o que não é errado até certo ponto).

chiurox
fonte
4

Economia. Pode ser chato (e um pouco cruel), mas de qualquer maneira é o único que é verdadeiramente essencial nesta sociedade. Depois disso, estatísticas.

Víctor Pimentel
fonte
4

Eu acho que as três classes que me deram mais informações sobre como os computadores operam na execução de software (que esse entendimento permite uma programação mais otimizada) foram:

Compiladores de sistemas operacionais em linguagem assembly

Talvez seja muito fácil pensar que essas classes não são tão úteis, a menos que você ingresse em uma carreira focada especificamente em qualquer uma dessas coisas, mas mesmo se você for um desenvolvedor da Web e não utilizar nenhuma dessas diretamente, o entendimento subjacente ainda seria extremamente útil codificar efetivamente.

Kenneth
fonte
3

Há cerca de uma dúzia de aulas que eu gostaria de ter feito na faculdade, mas não o fiz. Principalmente não CS. Fotografia, General Chem, mais redação!

Zachary K
fonte
3

É engraçado o número de pessoas que estão dizendo artes liberais: eu era formado em ciências cognitivas (Filosofia / CompSci / Anatomia) ... Acabei mudando para Filosofia / CompSci com especialização em inglês (eu poderia ter conseguido um bacharelado, mas não se incomodou em tirar as 101 que eu pulei).

Levaria uma semana de histórias para contar sobre toda a porcaria que recebi dos meus colegas de CS por fazer aquelas aulas de artes liberais. Não importa que meia dúzia de aulas de lógica fiz mais pela minha programação do que qualquer quantidade de cálculo. Não importa que todos os meus melhores cursos de IA tenham sido cursos de filosofia. Não importava que houvesse RAPARIGAS nas minhas aulas de inglês. Não, não, eu era algum tipo de poser não sério para fazer esses cursos.

Tenha coragem embora. Pelo menos você não precisa explicar sua educação toda vez que alguém olha para o seu currículo.

Satanicpuppy
fonte
Você poderia explicar o que quis dizer com "meus melhores cursos de IA foram cursos de filosofia"?
Mark C
@mark: "Cognitive Science", que era meu curso original, é basicamente nada além de IA e é amplamente composta de filosofia. Existem dois tipos de filosofia: analítica e continental. Toda essa merda estúpida é continental. Analítico é lógica, engrenagem. sci, linguística e coisas assim.
23411 Satanicpuppy #
+1: Como especialista em filosofia, participei de uma aula chamada Filosofia da Mente. Essa classe era basicamente dedicada às máquinas de Turing. Meu orientador de filosofia era graduado em ciências da computação e meu orientador de ciências possuía seu doutorado em filosofia.
Morgan Herlocker 03/03
+ 1: "você não precisa explicar sua educação". E lá estava eu, pensando que as coisas eram diferentes nos EUA / Reino Unido ... Eu sei exatamente o que você quer dizer.
#
3

Equações quadráticas e trigonometria.

Muito importante na escrita de software nas disciplinas tradicionais de engenharia.

angryITguy
fonte
Não computa .... já que a maioria dos bons programadores são engenheiros, por que alguém que sente falta de suas habilidades aritméticas básicas está escrevendo um software para disciplinas de engenharia, quando há uma tonelada de engenheiros que entendem matemática, física e computação? ?
Ben Voigt
@Ben. Acredite ou não ... Muitas pessoas conseguiram entrar no desenvolvimento de software e não possuem treinamento formal. Provavelmente é antes do "seu tempo". Eu sendo um deles. Eu consegui aprender, mas teria sido muito mais fácil se eu tivesse prestado atenção na escola.
precisa saber é o seguinte
Caso isso não seja óbvio, estou defendendo que o software de engenharia seja escrito por engenheiros que não são treinados em desenvolvimento de software. A engenharia de software não é difícil de entender, se você foi treinado para pensar logicamente. A OTOH aprender a resolver problemas de engenharia automaticamente, se não houver habilidades matemáticas básicas como equações quadráticas, será quase impossível.
Ben Voigt
@ben. Aqueles que carecem de habilidades de "matemática básica" agora são chamados de consultores de mídia social e ganham consideravelmente mais do que engenheiros.
precisa saber é o seguinte
@ guilherme: Eu discordo respeitosamente. Existem alguns engenheiros no topo que ganham uma quantia insana de dinheiro (normalmente os chamamos de "inventores", mas eles usaram habilidades de engenharia para projetar o produto). Depois, há um pequeno grupo dos consultores de mídia mais procurados. Em seguida, o restante dos engenheiros competentes, abaixo deles, os engenheiros incompetentes e os consultores de mídia comuns se misturam. E todos eles fazem mais do que o seu graduado médio com um diploma de matemática que ensina equações quadráticas para a próxima safra de engenheiros.
Ben Voigt
1

Sim, não prestei muita atenção aos compiladores como deveria.

user6791
fonte
1

CS / Matemática: mais lógica, álgebra, teoria de categorias. Coisas mais fundamentais e menos aplicadas: entender as coisas aplicadas quando você conhece bem os fundamentos é muito mais fácil do que o contrário e mais proveitoso.

(Eu tinha A em estatística, mas demorou muito tempo para vinculá-lo a necessidades reais de programação, esqueci muito.)

'Humanidades': linguagem natural, escrita, formulação, compreensão e compreensão. Não parece importante até você ingressar em uma equipe de mais de 2 ou 3 colegas hackers, isto é, na chamada "vida real".

9000
fonte
1

Computação Gráfica (renderização em 3d em opengl / directx)

Sinceramente, eu estava muito interessado nisso, mas tão ocupado que não consegui dedicar o tempo que gostaria. Tornou-se uma tarefa em vez de um hobby. Acho que preciso pegar um livro para me interessar novamente.

Joe Phillips
fonte