a maioria das grandes empresas de tecnologia como a Microsoft se concentra principalmente em estruturas de dados. Parece que as estruturas de dados são a única coisa que eles esperam de um graduado.
Não, tem mais. Por exemplo, também esperamos que você seja um aprendiz rápido que possa aprender novas estruturas, APIs ou mesmo linguagens de programação em um curto período de tempo. Essa é uma barra mínima. Alguém que demora muito para aprender uma nova estrutura, API ou idioma não será um desenvolvedor de sucesso na maioria das equipes da Microsoft.
E, é claro, há muitos outros aspectos nos quais focamos nas entrevistas, além do conhecimento bruto das estruturas de dados. Capacidade de lidar com especificações ambíguas, por exemplo, ou capacidade de reconhecer padrões de codificação que produzem código inseguro ou uma dúzia de outras coisas. Mas a capacidade de entender estruturas de dados certamente é muito grande.
É particularmente o caso que as entrevistas são tendenciosas para testar o conhecimento das estruturas de dados para recém-formados em CS. Os recém-formados, a maioria dos quais não tem muita experiência no mundo real, não devem ser bons nos mesmos tipos de coisas em que alguém com quinze anos de experiência no setor seria bom.
Devo confessar que não era tão forte em estruturas de dados
É bom que você saiba disso sobre você. Se você não puder ou não quiser mudar isso a seu respeito, minha recomendação é que você não se candidate a um emprego que exige facilidade com estruturas de dados.
existe essa perspectiva geral de que um bom programador é necessariamente aquele com bom conhecimento sobre estruturas de dados.
É tautológico que um bom programador seja um bom programador para criar os tipos de programas que precisam ser criados. Muitos programadores trabalham em tarefas que não exigem conhecimento profundo das estruturas de dados. Alguns deles trabalham em tarefas que exigem um conhecimento profundo do design da interface do usuário, por exemplo. Ou normalização do banco de dados. Como queiras. Essas pessoas ainda podem ser "bons programadores" em seus domínios.
por que toda essa ênfase nas estruturas de dados?
Faço perguntas da entrevista sobre estruturas de dados, porque na minha equipe os desenvolvedores projetam, implementam e manipulam estruturas de dados complexas o dia todo, todos os dias. Ontem, tivemos quatro horas de reuniões nas quais meia dúzia de desenvolvedores discutiram os prós e os contras da adição de um único campo booleano a um nó de árvore específico. Provavelmente, não há habilidade na minha equipe mais importante do que a capacidade de entender estruturas de dados em um nível profundo. Seria tolice não fazer perguntas sobre a entrevista, pois é isso que fazemos.
O conhecimento em Estruturas de Dados não afeta realmente a carreira de programação?
Bem, certamente irá impedi-lo de conseguir um emprego na minha equipe. Mas como eu disse antes, a programação é um campo enorme . Existem muitos tipos de programação de computadores que não exigem conhecimento de estruturas de dados.
o conhecimento neste assunto é realmente uma base suficiente para diferenciar um bom e um mau programador?
Não. Mas é quase sempre suficiente detectar desenvolvedores que provavelmente não terão sucesso na Microsoft. Como é isso que eu estou interessado principalmente em detectar, o conhecimento das estruturas de dados é um dos fatores que testo nas entrevistas.