Páginas

domingo, 18 de abril de 2010

Por que o Linux não está atraindo desenvolvedores jovens?

Este artigo da InformationWeek, relata uma importante discussão ocorrida semana passada, durante o Linux Foundation Collaboration Summit, em San Francisco, a respeito da constatação de que o time de desenvolvedores do kernel do Linux está envelhecendo, e não está atraindo desenvolvedores jovens.

Enquanto alguns argumentam que esse envelhecimento é positivo, pois implica em maior maturidade e experiência do grupo, que assim geraria código de melhor qualidade, outros admitem que já estão ficando cansados, e alertam para a necessidade de atrair gente nova, com mais energia e entusiasmo.

Um dos problemas para a entrada de novos desenvolvedores é que a base de código do Linux tornou-se muito complexa - ou, segundo alguns, caótica. Não é nada fácil cair de pára-quedas nessa selva de códigos, e sair programando. Leva-se muito tempo para se localizar, e entender como as coisas funcionam. Essa dificuldade inicial pode assustar os desenvolvedores menos experientes.

Outro fator, levantado neste artigo, é que o Linux teria se tornado "um dos mais chatos projetos de código aberto existentes". Cada vez mais profissionalizado, com desenvolvedores pagos por grandes corporações, a comunidade de desenvolvimento do Linux teria deixado de ser um ambiente vibrante e criativo para se tornar um ambiente burocrático, onde as contribuições de programadores amadores, que dedicam apenas suas horas de folga, têm pouca chance de serem aceitas.

Levada ao Slashdot, a discussão levantou uma terceira hipótese: os cursos atuais de Ciência da Computação estão voltados para níveis mais altos de abstração, e não estão mais preparando programadores para desenvolvimento de baixo nível, como faziam nos anos 70. Sem essa formação, exceto por habilidades ou curiosidades individuais, os novos programadores seriam simplesmente incapazes de lidar com as entranhas de um sistema operacional, ou de um controlador de dispositivos, escritas em puro código C (ou assembly).

Como professor, considero esta última a mais preocupante. Ao passo que a tecnologia se desenvolve, elevar o nível de abstração dos cursos torna-se uma obrigação, mas não podemos deixar descoberta a outra ponta. Temos que apresentar às novas gerações como as coisas acontecem, lá embaixo. Certamente, alguns jovens se interessarão por esse mundo - belo e misterioso - da escovação de bits. A continuidade do desenvolvimento tecnológico depende disso.

E você? qual a sua opinião? deixe o seu comentário!

15 comentários:

Anônimo disse...

Post importante!

Anônimo disse...

Ronaldo...

Anônimo disse...

A terceira hipótese é a mais convincente.

Anônimo disse...

A terceira hipótese é a que mais se aproxima da realidade.
No meu curso de graduação, infelizmente aprendi somente Java, e talvez seja por isso que não me interessei por programação.

Maurício disse...

Faço graduação na área de Segurança da Informação, e minha única cadeira de programação é de C/C++. Percebo que, com raras exceções, a turma não gosta da linguagem, pela dificuldade. Em geral, o pessoal de infra não gosta de programação, mas mesmo quando eu cusava Sistemas, o pessoal adorava Java e os poucos que conheciam o C, o odiavam. Sei que me apaixonei pelo C quando o conheci, e sou a favor do incentivo dessa linguagem, visto sua robustez.

Unknown disse...

Eu sou um desenvolvedor jovem. Tenho 18 anos e pretendo cursar Engenharia de Software, a fim de atuar nesta área.

Das hipóteses que você apresentou aí, a única que conheço é a terceira. Digo que é a única que conheço pois ainda não me aventurei através do código do Linux. Atualmente, todo meu entusiasmo está voltado ao mundo do software-livre em geral, com seus projetos de aplicativos, bibliotecas, etc. Me encantei com essa filosofia, da qual o Linux parece ser quase o expoente máximo. Admiro a forma como cada programador pode desenvolver seu projeto pensando já nos futuros usos daquele código, esforçando-se para mantê-lo reutilizável, padronizado e bem documentado. É uma camaradagem muito bacana.

Do Linux mesmo conheço quase nada. Do kernel, então, nada. Tudo o que sei é o que um utilizador precisa saber para poder utilizar uma distribuição baseada em Linux. Porém, tenho certeza de que muito em breve, quando isso me for necessário, terei de estudar os fundamentos "mais baixos" do meu sistema - e aguardo por este momento ansiosamente. Portanto, não conheço o kernel, não sei se ele é caótico ou não.

Também nunca contribuí com nenhum projeto de software, pois ainda não encontrei uma chance de fazê-lo. Se sou um aprendiz, como poderia ensinar? E também, creio que este tipo de contribuição eu darei quando um projeto não satisfazer às minhas necessidades; daí trabalharei para melhorá-lo e, feito isto, poderei compartilhar esta melhoria com outros. Daí a eu me deparar com um problema de burocrarcia vai demorar um bocado, não é mesmo?

Agora sobre a última hipótese levantada eu posso discorrer. Isto por que eu me considero um desses jovens que se interessaram por este "mundo - belo e misterioso - da escovação de bits". O que sei sobre software, computadores e companhia aprendi por curiosidade - e necessidade. Estudo assim: penso em algo, tento realizá-lo e, nesta tentativa, aprendo.

Há um tempo, pensei em trabalhar em um joguinho. Decidi tentar um joguinho de GBA por vários motivos. Fui nesse caminho e acabei estudando C, Assembly e um monte de outras coisas. Ao programar para o GBA (com seu processador arm7-tdmi de 13MHz, eu tinha que pensar nas maneiras mais eficazes de fazer algo, economizando tanto bateria quanto memória e ciclos de CPU. Isto me condicionou a buscar conhecer mais sobre o hardware e utilizar este conhecimento para elaborar um software mais eficiente.

É certo que as linguagens de níveis mais elvedos são uma evolução. Mas depois desta experiência com o C em um nível tão baixo, admito que passei a ver as outras linguagens que já conhecia de uma maneira diferente. Hoje, ao analisar um pedaço de código que executa a mesma ação em Ruby e Python, automaticamente ligo a execução daquele código ao que conheço sobre cada uma destas linguagens e já imagino como aquele código será efetivamente executado lá pela CPU. E isto ajuda muito mesmo na hora de programar com eficiência.

Quando comparo o que estudei para este projetozinho com o que um amigo meu, que cursa Engenharia de Software, efetivamente estuda - sobre C, por exemplo -, sinto-me em certa vantagem neste aspecto.

Tácio Andrade disse...

O C e C++ são linguagens muito boas, mais hoje em dia, as pessoas estão em busca de linguagens mais comerciais, ou linguagens que de um nivel de produtividade maior, por isso a maioria dos cursos de Graduação ensinam apenas o basico de C ou C++ (como é o caso da Universidade onde faço Ciencia da Computação) e vão para linguagens como Java, por essa ultima ser mais comercial.
Pelo menos após o Java, ainda vemos aqui linguagens como Prolog (Paradigma Logico) e Haskell (Paradigma Funcional), mais mesmmo vendo, estudamos elas apenas para passar, vide a dificuldade das mesmas e dificuldade de conseguir emprego usando as mesmas...
Espero daqui a algum tempo poder ajudar a Comunidade Linux, mais assim como a maioria não vou entrar diretamente no Kernel (pois sei como ele é caotico), vou me focar em desenvolvimento de aplicações que rodem no mesmo.

Daniel Oliveira disse...

É hora, quem sabe, de reavaliar o formato de colaboração!

Carlos Wagner disse...

Concordo com muito do que foi escrito e principalmente na questão das universidades, pois faço curso Ciência da Computação e o que vejo é bem isso mesmo.

As cadeiras de escovação de bits estão ficando para trás em detrimento a disciplinas novas como programação orientada a objetos e outros paradigmas mais recentes.

Espero sinceramente que este quadro seja verificado, pois não há como imaginar um curso de formação de cientistas apenas o uso de linguagens de muito alto nível.

Lopes disse...

Cara, excelente observação!
Concordo que a programação de baixo nível está sendo deixada de lado. Eu mesmo, quando na faculdade, me interessava muito por programação de baixo nível (por gosto pessoal, não por incentivo do curso).
Após concluir a graduação, cai nos encantos da programação altíssimo nível (Python), primeiro pela facilidade e segundo pela rapidez no desenvolvimento de aplicações.
Acho que o modelo de desenvolvimento de software atual, onde o PRAZO para entrega de projetos é fundamental e cada vez menor, contribui para a adoção de linguagens de mais alto nível em detrimento das de baixo ou médio nível.
É a minha opinião.
Abraço!

Anônimo disse...

Sou vítima da terceira hipótese, e apesar de tentar, na medida do possível, complementar meu conhecimento sobre os aspectos de baixo nível da computacão por conta própria, temo pelos meus colegas que estão sujeitos a nunca conhecer este aspecto da computacão (que cá entre nós, é a base da computacao em si) visto que nossos educadores não só são adeptos à programacão de alto nível e todos os seus apetrechos (métodos ágeis com seus burndown charts etc), como de certa forma os evanvelizam, em detrimento da computacão a baixo nível.

Anônimo disse...

Todas as três hipoteses tem fundamento, sou estudando do ensino medio tenho 16 anos, pretendo cursar Ciência da Computação. A unica linguagem de alto nivel que pretendo conhecer bem é a Python (as outras só por curiosidade), e pretendo aprender C e Assembly.
Sempre achei que o Linux prescisava de um toque jovem, e espero que não demore muito os jovens se interessarem por dar sua cara ao Linux.

Anônimo disse...

uma das maiores evidências da terceira hipótese é ver que a cadeira que tratava de linguagem assembly na minha faculdade ter sido retirada da grade curricular do curso.

Unknown disse...

Bom, faço curso técnico em eletrônica e estou descobrindo agora esse mundo da programação em baixo nível e é bem interessante porque você têm aquelas instruções limitadas para rachar sua cabeça de tanto nó que a sua programação faz, e é onde você começa a gostar do desafio. Quando você trabalha com uma linguagem de alto nível tudo está ali "mastigadinho" para você trabalhar tranquilo sem preocupações. Então a observação do é bem interessante sobre o tédio que dá nesses novos programadores quando vão desenvolver programas com certas limitações.

Anônimo disse...

Será que seria válido a comunidade criar cursos de C para aqueles que quisessem aprender e contribuir para projetos como o Kernel do Linux e outros dos muitos projetos em C que temos por aí? Eu mesmo seria o primeiro à me inscrever. :D

Postar um comentário

Artigos mais recentes:

Artigos mais lidos:

.