Onde ir daqui, como melhorar / aprender mais [duplicado]

5

Eu terminei a Universidade há cerca de 4 anos em dupla licenciatura em Software Eng / Comp Sci. Consegui meu primeiro emprego em uma startup no meu último ano, estive com eles por 2,5 anos e comecei meu próprio negócio.

Até agora, tudo está indo muito bem, muitos clientes e trabalho, etc., mas saindo direto da uni e iniciando, nunca tive nenhuma forma ou engenheiro sênior de software orientando meu trabalho ou sugerindo melhorias, etc.

Qual é a melhor maneira de melhorar & Saber mais? Livros? Exames MS? Outro?

Eu desenvolvo em C #, ASP.NET / MVC.

Atualizar O problema não é realmente liberar produtos, eu lancei alguns que estão funcionando com os clientes felizes. É mais com qualidade de código, melhores práticas, como eu sei que algo que eu sou código está correto, pode funcionar, mas pode haver maneiras de codificá-lo de forma muito mais eficiente ou aderindo a algum tipo de padrão

Felicidades por qualquer resposta!

Matt

    
por bExplosion 11.11.2011 / 16:56
fonte

5 respostas

4

Aqui estão algumas sugestões:

Co-Working : Como desenvolvedor, o trabalho colaborativo tem sido incrível para mim. É essencialmente um espaço de escritório alugado, compartilhado, aberto (aqui está meu local: link ) onde você poderia trabalhar. Você encontrará MUITOS desenvolvedores que trabalham como freelancers em lugares como este. É uma boa maneira se você estiver trabalhando sozinho para poder trabalhar no mesmo escritório com outras pessoas. Revisões de código improvisadas não são incomuns, e a comunidade lá pode ajudá-lo a discutir ideias, arquiteturas e códigos.

StackOverflow : responder a perguntas para outras pessoas ou até mesmo analisar perguntas e respostas lhe dará novas perspectivas sobre as coisas e ajudará a ampliar o que você está exposto.

Contribuir para um projeto popular de código aberto - Tendo alguns projetos de código aberto, e começando a maioria deles, você não recebe muitos comentários iniciando seu próprio projeto (a menos que obtenha incrível tracção). Você deve fornecer uma correção de bug ou aprimoramento para um projeto existente e um que você não é o chefe e precisa de aprovação para um check-in. Isso irá forçar o feedback dos proprietários do projeto, que podem dizer "ótimo trabalho!" ou "esse trecho de código aqui pode ser melhor, eu sugiro isso .."

    
por 11.11.2011 / 17:08
fonte
2

Não espere pelo engenheiro de software sênior orientando você . Eles não são bons ou estão muito ocupados! (se eles são bons).

Se você realmente quer aprender algo, eu sugiro que você faça um projeto de hobby sozinho - e coloque-o em código aberto!

Você ganhará o seguinte:

  1. Com liberdade e interesse - você escolherá um assunto para aprender sobre algo.
  2. Ao tentar montar um produto inteiro, você inevitavelmente aprenderá o significado real de como o design e a arquitetura funcionam.
  3. Ao colaborar com as pessoas, você receberá o feedback das pessoas sobre o que é realmente importante.
  4. Se você criou poucas iterações de trabalho e libera código, aprenderá os princípios do processo de desenvolvimento de software.

É claro que outras recompensas estão por aí, se o seu produto for bom.

EDITAR:

Dado o seu comentário, senti que tinha sido um pouco tendencioso. Mas se você já passou pelo processo de fabricar um produto inteiro - então é hora de parecer algo maior e mais profundo. Eu acho que agora eu sabia o que você está pedindo.

Eu sugeriria a área seguinte para dominar - e deixar até você como você planeja / implementa seu aprendizado.

  1. Conhecer mais sobre a perspectiva mais ampla da Arquitetura de Software - eu sei que tantas pessoas recomendariam isso e não vou enfatizar demais. Mas eu acho que o ponto que estou fazendo é olhar para o papel do Arquiteto para visualizar como as coisas evoluem quando o produto cresce muito. Muita literatura está lá fora, escolha qualquer coisa para começar - mas este é um passo crucial que irá transformar você.

  2. Conhecendo muitos outros aspectos da tecnologia - você ficou curioso sobre como - kernel do sistema operacional, banco de dados, tempo de execução Java ou .NET, sistemas de arquivos, servidores Web, navegadores, sistemas distribuídos - as coisas diárias que usamos - como funciona de dentro? Como é a arquitetura deles? Quais são os principais critérios de design?

  3. Aprenda sobre o processo de adoção de tecnologia. Muitas pessoas irão diferir em opiniões individuais se você perguntar por que JAVA ou .NET é melhor e porque CORBA nunca alcançou o que os serviços web fizeram, e se o Android irá ofuscar (ou matar) as próximas gerações do iPhone. Como engenheiros que estão tão ocupados pensando como as coisas funcionam - muitas vezes precisamos nos aprofundar e ver profundamente por que certas coisas funcionam na vida e por que não.

Todos eles precisam de você para escolher tópicos específicos de seu interesse e obter um pouco mais do que o rastreamento da Web para ler livros ou aprofundar o assunto.

Eu sei que lhe dou respostas bastante amplas do que dicas / sugestões específicas - mas essa é precisamente a ideia.

    
por 11.11.2011 / 17:04
fonte
2

Você já está fazendo as coisas direito. Você está codificando, tem um trabalho estável e tem clientes satisfeitos.

  1. Sugiro continuar com o que você está fazendo certo.

  2. Eu adicionaria na revisão do código Open Source. Atualmente, o que fiz foi importar o Spring Framework para o meu ide e vejo isso, por exemplo. Eu também faço buscas em código aberto com o link

  3. do Koders.
  4. Eu também trabalharia em rede com outros desenvolvedores nos grupos de usuários locais para o que você está codificando ou com quem gostaria de trabalhar no futuro.
por 11.11.2011 / 18:37
fonte
0

Tente trabalhar com uma variedade de desenvolvedores em projetos que você leva a sério e tente aprender com seus pontos strongs e reconhecer suas fraquezas. Não importa se eles são melhores ou piores do que você, ensinar também é uma ótima maneira de aprender.

    
por 11.11.2011 / 20:38
fonte
0

Não subestime a experiência de aprendizado envolvida na orientação dos outros. Você tem experiência suficiente que existe um monte de desenvolvedores com menos conhecimento e menos experiência. Orientar os outros pode ser muito desafiador para o seu próprio conhecimento e prática, já que exige que você verbalize para os outros por que você faz as coisas de uma certa maneira.

Eu também concordo com o que os outros mencionaram aqui, adotem outro idioma com um paradigma significativo diferente. Pessoalmente, Erlang tem trabalhado muito bem para eu estender meu próprio pensamento em torno de programação e há muitos aspectos que podem ser aplicados em uma linguagem imperativa.

    
por 13.11.2011 / 19:03
fonte