Para ser independente do idioma, você precisa ter experiência em todos os estilos e tipos comuns de idiomas.
- Uma linguagem imperativa (você diz o que deve fazer, passo a passo. Por exemplo - C)
- Uma linguagem declarativa (você diz a sua meta, ela descobre o que fazer. Por exemplo - SQL / HTML / Prolog)
Além disso:
- Uma linguagem funcional (as funções são essenciais, evitar o estado e os efeitos colaterais são os objetivos. Por exemplo - Haskell / OCaml / Lisp / F #)
- Uma linguagem orientada a objetos (arquitetura em que os objetos encapsulam dados relacionados e os métodos que atuam sobre eles). Por exemplo - Java / C #)
Alguns estilos de digitação:
- Uma linguagem de tipo estaticamente (os tipos de dados são definidos e verificados em tempo de compilação. Por exemplo - C #)
- Uma linguagem de tipo dinâmico (tipos de dados são verificados em tempo de execução. Por exemplo - Python / Javascript)
Experiência de digitação forte versus fraca também é útil.
Alguns estilos de tempo de execução diferentes:
Material de nível inferior:
- Algo razoavelmente baixo nível (por exemplo - C)
- Algum dialeto de montagem (por exemplo, NASM)
Além disso, eu diria que você precisa de alguma experiência em programação simultânea e algo orientado a eventos . 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. Você também pode querer aprender sobre programação incorporada ou hardware dedicado (como consoles de jogos), e o desenvolvimento móvel está se tornando um domínio cada vez mais relevante.
Outros também mencionaram que vale a pena ter alguma experiência em abordagens de programação genérica e meta-programação .
Ao aprender esses paradigmas, evite apenas aprender a sintaxe e escrever no seu estilo antigo. Eu já vi muitos desenvolvedores de C # escreverem JavaScript como se fossem estaticamente digitados. Não faça isso, tente aprender os paradigmas da linguagem e os adote.
Se você tiver feito tudo isso, as diferenças entre os idiomas se tornarão amplamente sintáticas, de modo que a troca se tornará um exercício bastante simples de aprender alguma nova sintaxe.
Não se esqueça, porém, de que a programação moderna quase sempre depende de uma estrutura, portanto, familiarizar-se com as estruturas comuns e populares de cada idioma que você aprende também é fundamental. Saber C # é irrelevante sem .net.