Alguns alunos meus e amigos me perguntaram em diferentes momentos o que eu recomendaria como primeiros passos para quem esta comecando no mundo do desenvolvimento. Entao aqui vao algumas dicas:Convencao de CodigoSempre que eu lido com o codigo, eu fico impressionado com a criatividade de programadores em codificar. Infelizmente, essa criatividade e utilizada de maneira a complicar algo simples, o que vira a dificultar a manutenibilidade do projeto. Quando se esta aprendendo a programar, e comum se desenvolver de maneira desleixada se preocupando apenas com o resultado da execucao. Essa pratica deve ser evitada o quanto antes e uma das melhores maneiras de se fazer isso e se adotando uma convencao de codigo.Nao se espante ao discordar de algo da convencao. Praticamente todas as pessoas discordam da convencao em um ou mais itens, mas, ainda assim, e importante se aplicar a convencao combinada do comeco ao fim do projeto. Num proximo projeto , caso toda a equipe fique de acordo, pode-se aperfeicoar a convencao para o seu contexto, baseando-se tambem nas proprias licoes aprendidas dos projetos passados.Recomendo se comecar com alguma convencao madura como a da Zend ou da Sun.Controle de VersaoHoje em dia, e praticamente impossivel se trabalhar com programacao sem se utilizar uma ferramenta de controle de versao. A qualidade das informacoes que esse tipo de ferramenta traz para o controle das alteracoes e versoes do seu sistema torna-se imprecindivel quando se comeca a desenvolver projetos grandes, seja em equipe ou nao.Vantagens:Controlar "o que", "quando", "por quem" e "por que" de cada alteracao feita.Comparar versoes do sistema.Voltar a uma versao do sistema.Combinar alteracoes.Ver o historico de um arquivo ou pasta.Interface com varias aplicacoes que montam diferentes tipos de relatorios a partir dos dados do servidor.Interface com varias aplicacoes possibilitando o disparo de testes automaticos, criacao / alteracao de demandas via mensagens de envio.Dentre os mais famosos do momento temos o Subversion e o Mercurial.Documentacao automatica Documentar todos os metodos, classes e pacotes para possibilitar uma melhor manutencao e requisito minimo para um bom projeto. Quando se documenta utilizando algum padrao de de documentacao estilo javadoc, algumas ferramentas, entre elas o doxygen, possibilita a saida de relatorios muito ricos a partir da documentacao criada. Um exemplo disto pode ser visto aqui, onde a documentacao do projeto foi criada automaticamente a partir dos comentarios existentes.Teste Unitario Apesar de ser algo essencial para a criacao de softwares de qualidade, os testes unitarios ainda sao dificeis de serem encontrados em aplicacoes comerciais. Esses testes automaticos, tambem conhecidos como teste de fumaca quando aplicados a contextos pequenos, sao similares aos casos de teste so que feitos automaticamente desde de contextos pequenos, como pequenos metodos que alteram uma string, ate em contextos complexos, onde se pode testar todo um fluxo de funcionalidades, trabalhando em conjunto, num projeto.Ao escrever esses testes automaticos existem ferramentas que podem executa todos eles em seu sistema, informar quais testes falharam, quais classes, metodos e linhas nao foram executados, o que lhe informa que ou faltam testes no seu sistema ou existe codigo excedente.Essas validacoes automaticas podem ser feitas a cada atualizacao