Porque Ninguém gosta de low level?
Eu como um grande amante do low level, OS development e aplicações desktop, me questiono sobre o medo que as pessoas tem dessa área. Quando te perguntam a sua área dizem: "Tu é front ou back?", ninguém nem chega a cogitar que tu gosta de outra coisa, por isso questiono. Será a dificuldade do low level? Medo de conceitos obrigatórios como Stack e Heap? Baixo nível de abstração? Conteúdo "menos mastigado", com os sites de doc que aparentam ter saído diretamente de 2004? Queria saber a opinião dos alheios a respeito.
"Ninguém" é figura de linguagem, né?
Não sei se é medo que as pessoas não se envolvem. Certamente alguns. Já vi umas coisas descabidas.
Mas acho que é falta de visão sobre isso, falta de ser apresentado, falta de procurar algo, as pessoas adotam o que despejam em cima delas, elas não decidem ficar fora disso, outras pessoas decidiram por elas que deveriam ver outras coisas. Ou seja, é muito mais sério. Também tem a questão do emprego. Como tem menos vagas, as pessoas não querem se meter com isso. Também tem menos concorrência, mas isso não importa muito. Mas também tem concorrência mais qualificada, talvez lá no fundo a pessoa possa saber que "não dá para boca dela". Programação mais concreta exige um conhecimento mais aprofundado, os erros aparecem mais, tornam o uso mais inviável, a programação mais abstrata meio que aceita qualquer coisa.
É algo que exige um nível de atenção maior. Você vê que nem escrever as pessoas se preocupam mais. Eu inclusive tenho dificuldade, preciso de esforço extra. Acaba dando mais trabalho e sendo mais chato.
Não sei se LL é tão mais difícil assim, acho que só exige que realmente se aprenda a computação.
Por incrível que pareça o LL pode ter um nível razoável de abstração. Depende do que está fazendo e do jeito que a pessoa gosta. De qualquer forma as pessoas têm mais dificuldade com abstrações. Isso tem estudos mostrando. Caso contrário seriam boas de matemática. Parece contraditório, mas quem vai bem com matemática, que é abstração, vai bem de LL.
Conteúdo menos mastigado afasta as pessoas mesmo. Esse é um dos principais fatores.
É aí que eu falo de "programador de verdade" e os outros programadores. Sei que algumas pessoas não gostam, mas precisa de algum termo para identificar essas diferenças. Se alguém achar melhor, eu aceito. Quem faz LL costuma saber programar qualquer coisa. Os HL tendem a não saber, só sabem seguir receitas de bolo. Não foi eu que criei o conceito, só estou relatando ele.
Gerenciamento de memória é provavelmente o segundo assunto que mais gosto na computação, então pode ajudar: https://pt.stackoverflow.com/q/3797/101.
Fora isso, tem que consultar uma junta de sociólogos, psicólogos, filósofos e outros de humanas.
Faz sentido para você?
Espero ter ajudado.
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).
Acredito que seja por melhor empregabilidade e falta de necessidade desse conhecimento profundo no início. Para você começar a fazer apis rest e front não precisa ter um conhecimento profundo de low level. Você pode muito bem aprender Typescript/HTML/CSS/network e já estar pronto para o mercado. Para a maioria das empresas é muito melhor uma pessoa que vai criar suas APIs/front rapidamente e tem uma experiência no domínio que ela trabalha do que alguém que saiba programar um kernel mas demoraria muito para fazer essa API. É claro que com o passar do tempo se essa pessoa quiser evoluir na carreira provavelmente vai precisar dos conceitos de low level para melhorar a performance do que ela coda. Existem empresas que vão preferir essa pessoa que sabe programar um kernel, mas a quantidade é muito menor, o mercado é muito menor.
Cara eu sou muito fã de low level, é que as vezes eu não sei por onde começar, eu adoraria por exemplo fazer meu próprio OS, pegar sei lá um Linux e modificar o código num sei, eu não conheço tanto atualmente to fazendo um banco de dados com C++ por enquanto, eu escrevi no TabNews sobre ele, da uma olhada nos recentes, mas voltando ao assunto low level é muito legal sou louco pra aprender mais, porém é um pouquinho difícil achar conteúdo que explique direitinho, eu acho que a galera tipo gosta mas não tem coragem de botar a mão na massa porque acha muito dificil ja que a maior tendencia são sites e apps, ainda mais lotado de cursos front-end/back-end por ai prometendo rios de dinheiro. Mas sendo sincero quando me perguntam minha área meu sonho é dizer que desenvolvo jogos eu queria muito, to fazendo um game na Unity, alias o meu banco de dados é justamente pro game ksksks. Eu fico chateado muitas vezes de ficar limitado a Sites e apps, mas fico mais chateado ainda de não ter um emprego KKKKKKKKKKKKKKKKKKKKK
MUITA gente gosta de low level, inclusive eu, que adoraria trabalhar com embarcados e avionics, MAS, é uma área bem difícil de entrar. É natural que se busque mais o que tá em alta em termos de oportunidades e dinheiro.
Eu acho que geralmente é mais comum as pessoas serem front-end e back-end e não porque tem dificuldade em low level, ou até mesmo por serem iniciantes na área e não conhecer todos os conceitos e áreas.
Opa man, bom eu acho que o low level é pouco divulgado. Não sei para outras pessoas mas quando comecei a me aproximar dessa área da computação esses assuntos não apareciam tanto... Hoje eu comecei a pesquisar e tenho gostado para caramba!
Na minha visão é porque áreas que envolvem low level demandam muito mais conhecimento técnico do que desenvolvimento web. Com alguns cursos, Youtube, documentações (que na maior parte das vezes são muito bem explicativas e simples de entender) qualquer um consegue iniciar nessa área. Trabalhar com desenvolvimento de sistemas operacionais, por outro lado, envolvem conceitos bem mais complexos (na minha opinião, pelo menos), como gerenciamento de memória, escalonamento de processos, arquitetura de computadores etc, que você provavelmente vai ter que ler uns bons livros bem densos para entender realmente bem.
Acho que o fator principal é o conteúdo menos mastigado. Eu tenho bastante interesse por low level mas tem pouco conteúdo sobre isso na internet em relação a web dev, então acabo nem procurando sobre, ainda mais porque eu não pretendo trabalhar com isso, então seria como um hobby, o que não dá tanto incentivo
Eu comecei nessa área ai como programador de sistemas embarcados, mechendo com C e Assembly. Hoje migrei um pouco, trabalho mais com alto nível, ainda no mundo embarcado mas com Android Embarcado.
Eu vejo que a própria área de embarcados não exige tão fortamente o low level como já foi um dia. Lógico, ainda é importante, ainda é necessário, porém hoje em dia já existem abstrações e linguagens mais alto nível que podem ser usados para programar sistemas embarcados.
As próprias empresas de microcontroladores já fornecem bibliotecas de HAL (Hardware Abstraction Layer) em que tu pode usar API para configurar periféricos sem ficar configurando reigstradores diretamente.
Além disso, já temos linguagens mais alto nível integradas a alguns microcontroladores, como Python e Javascript.
Bom, eu nem entrei na área ainda, mas estou estudando back-end a algum tempo e vou iniciar faculdade semana que vem e lhe digo: eu AMO essas coisas mais low-level, entretanto, vejo que a barreira de entrada é muito maior, tanto para começar a ser produtivo quanto pelo fato de muitas coisas que um iniciante poderia fazer com resoluções low-level já é feito de maneira muito mais rápida e ágil no high level.
Comecei com Python, agora estou estudando Java e já gostaria de estudar um C ou C++ pra entender como funciona os SOs e IoT em si (talvez até Assembly para entender a conexão de software com hardware na unha), entretanto, não é isso que o mercado quer ou espera de um novato e para sair do campo abstraído e navegar nas profundezas acaba demandando mais tempo e exposição do que alguém que precisa pagar as contas consegue dedicar.