Para agnóstico de idioma, você precisa ter experiência em todos os estilos e tipos comuns de idiomas.
- Uma linguagem imperativa (Você diz o que fazer, passo a passo. Ex. - C)
- Uma linguagem declarativa (Você diz qual é o seu objetivo, descobre o que fazer. Por exemplo: SQL / HTML / Prolog)
Além disso:
- Uma linguagem funcional (As funções são fundamentais, evitando o estado e os efeitos colaterais são os objetivos. Ex. - Haskell / OCaml / Lisp / F #)
- Uma linguagem orientada a objetos (Arquitetura na qual os objetos encapsulam dados relacionados e os métodos que atuam neles). Por exemplo - Java / C #)
Alguns estilos de digitação:
- Uma linguagem digitada estaticamente (os tipos de dados são definidos e verificados em tempo de compilação. Ex. - C #)
- Uma linguagem digitada dinamicamente (os tipos de dados são verificados em tempo de execução. Ex .: Python / Javascript)
Experiência de strong vs. fraco A digitação também é útil.
Alguns estilos de tempo de execução diferentes:
- Algo compilado (Eg - C ++)
- Algo interpretado (Por exemplo - PHP)
- Algo Gerenciado (por exemplo, C # / Java)
Material de nível inferior:
- Algo relativamente baixo (eg - C)
- Algum dialeto da montagem (por exemplo, NASM)
Além disso, eu diria que você precisa de experiência com alguma programação concorrente e algo event driven . Você provavelmente também deve ter certeza de que sabe algo sobre os vários domínios, como programação na Web (cliente e servidor), desenvolvimento de rich client / desktop, jogos. Talvez você também queira aprender sobre programação embarcada ou hardware dedicado (como consoles de jogos), e o desenvolvimento para dispositivos móveis está se tornando um domínio cada vez mais relevante.
Outros também mencionaram que vale a pena ter alguma experiência em Programação genérica e Meta programação se aproxima.
Quando você aprender esses paradigmas, evite apenas aprender a sintaxe e escrever em seu estilo antigo. Eu vi muitos desenvolvedores de C # escrever JavaScript como se ele fosse estaticamente digitado. Não faça isso, tente aprender os paradigmas da linguagem e abrace-os.
Se você fez tudo isso, as diferenças entre os idiomas se tornarão amplamente sintáticas, então a mudança se tornará um exercício relativamente simples de aprender alguma nova sintaxe.
Não esqueça que a programação moderna é quase sempre dependente de um framework, então se familiarizar com os frameworks comuns e populares para cada linguagem que você aprende também é crítico. Conhecer C # é irrelevante sem .net.