Aprendendo linguagens de programação no processo: desenvolvedor de software sobre projetos complexos



De um tradutor: Este post é uma tradução do artigo original de David Harron, um desenvolvedor de software experiente. Ele costuma escrever artigos sobre o assunto de seu trabalho, incluindo o Node.js, com o qual David tem um relacionamento especial.

Como desenvolvedores de software, todos sabemos o quão rápido a tecnologia está mudando. Estamos tentando acompanhá-los, aprendendo constantemente novos métodos, ferramentas, linguagens e estruturas de trabalho. Temos constantemente que comparar seus pontos fortes e fracos, decidindo o que precisa ser dominado e o que deixar para trás. Esta não é uma tarefa fácil, você pode facilmente se perder no mar de opções.

A Skillbox recomenda: A profissão on - line "Profissão de desenvolvedor Web" .
Lembramos que: para todos os leitores de "Habr" - um desconto de 10.000 rublos ao se inscrever em qualquer curso Skillbox usando o código promocional "Habr".

Seja como for, para permanecer profissional, você precisa estar ciente das tecnologias atuais. Às vezes, uma função X ou Y deve ser adicionada a um aplicativo simplesmente porque o espírito da época exige isso.

O desenvolvedor é ajudado a manter livros à tona, tutoriais em vídeo, cursos. E é muito simples - gastar todo o seu tempo em treinamento sem ter começado a trabalhar no projeto.

O desenvolvedor Tony Mastrorio escreveu uma vez que tinha medo de iniciar um de seus projetos, porque não tinha conhecimento para implementá-lo. Portanto, em vez de trabalhar, ele começou a seguir curso após curso, esperando que cada material subsequente lhe desse o conhecimento necessário. Isso continuou até Tony escolher um caminho diferente, sobre o qual agora falamos.

Recentemente, no Quora, respondi à pergunta sobre a rapidez com que você pode aprender JavaScript e começar a desenvolver aplicativos nesse idioma. Eu escrevi que o programador não precisa conhecê-lo completamente para usá-lo. Muitos de nós escrevemos pequenos trechos em JavaScript para a Web, e apenas algumas linhas de código são suficientes para melhorar significativamente a funcionalidade do site. O mesmo pode ser dito para o Node.js: um pouco de código - e tudo fica melhor. O JavaScript é uma linguagem muito poderosa, e os módulos disponíveis no ecossistema Node.js. atenderão a praticamente qualquer solicitação.

O ecossistema JavaScript é muito desenvolvido, com essa linguagem você pode realmente fazer muito. A prova é que estou escrevendo este artigo no Google Docs, um editor de texto baseado em navegador.

Uma linguagem de programação deve ser estudada tão bem que possa executar determinadas tarefas.

Há alguns meses, comecei a estudar o Vue.js. Comecei com o curso Udemy, parecia apenas o suficiente para começar a trabalhar no projeto. Se precisar de mais informações, sempre posso voltar a estudar este tópico. Enquanto isso, estou fazendo meu aplicativo de desktop sem um conhecimento profundo do Vue.js - só estou estudando o que é necessário para preencher as lacunas de conhecimento sobre o tópico certo.

Deixe-me dar outro exemplo - minha experiência de aprender o Node.js.

Até janeiro de 2009, trabalhei na equipe Java SE da Sun Microsystems. Então eu escrevi um grande número de artigos técnicos. Como fã de Java, comparei-o com o JavaScript, mostrando as virtudes do primeiro. Meu próximo trabalho já estava no Yahoo, depois continuei a usar Java e, no final de 2010, mudei gradualmente para o Node.js - então era uma nova tecnologia.

Imediatamente mergulhei no JavaScript quando nossa equipe começou a trabalhar no Mojito / Manhattan, uma plataforma de hospedagem de aplicativos. Foi no final de 2010, um pouco antes, Ryan Dahl disse aos funcionários do Yahoo sobre o Node.js. Ao mesmo tempo, eu, juntamente com a Packt Publishing, trabalhei em um livro no Node.js como consultor técnico e, pouco depois, disseram-me que o autor do livro decidiu abandonar o projeto, o editor sugeriu que eu me tornasse um autor. Não tendo idéia de como os livros são escritos, concordei prontamente.

E agora, sabendo um pouco sobre JavaScript, comecei a usá-lo para resolver problemas de trabalho no Yahoo, enquanto escrevia um livro sobre o Node.js. Sua primeira edição foi lançada em agosto de 2011, a quarta - em junho de 2018.

Eu poderia muito bem ter medo da incerteza e parar de escrever. Eu conhecia o JavaScript o suficiente para essa tarefa? Definitivamente não. Além disso, eu não sabia escrever livros. No trabalho do autor, havia muitos aspectos desconhecidos para mim, mas gradualmente os estudei e os aceitei. Eu era capaz e adorava escrever - porque eu era um blogueiro. Por dez anos antes do início dos trabalhos do livro, escrevi artigos e notas. Ainda assim, as postagens não são um livro, escrevê-las parecia uma tarefa muito difícil.

No final, eu percebi: em vez de ter medo, você só precisa criar um plano de trabalho bom e claro. Depois disso, escrever um livro se transforma em uma série de ensaios. Bem, escrever ensaios, tutoriais ou postagens já é uma tarefa mais fácil. A única coisa é que cada um deles deve corresponder ao espírito geral do livro e do plano. Cada ensaio anterior (capítulo) deve passar suavemente para o próximo. Assim que entendi tudo isso, o trabalho no livro foi muito mais rápido.

Obviamente, muitos de nós têm medo de realizar tarefas complexas e esconder a cabeça na areia em vez de agir. Para seguir em frente, subir na carreira e se desenvolver, você precisa de uma vontade. De fato, não há nada complicado, mesmo nas tarefas mais volumosas. Por exemplo, quando uma pessoa se depara com o processo de compra de uma casa, o processo parece muito complicado, os corretores de imóveis são vistos como vigaristas, você acha que nada funcionará. Mas, de fato, tudo é mais simples do que parece.

Anteriormente, eu peguei várias coisas novas. Então, por exemplo, querendo contribuir para a popularização de veículos elétricos, comecei a escrever artigos sobre esse assunto. Eu nunca fiz jornalismo ou sei como tudo funciona. Mas no final, consegui escrever vários milhares de artigos de notícias. As pessoas dizem que tenho talento e gosto muito de me sentir como uma pessoa que está dizendo a verdade.

Vamos falar sobre alguns dos princípios principais antes de falar sobre o projeto em que estou trabalhando atualmente.

  • Objetivo claro. Para se concentrar em alcançá-lo, você precisa manter seu objetivo em mente o tempo todo. Você também deve articular isso claramente.
  • Divida o projeto em elementos. Eu já falei sobre isso acima. É melhor dividir um projeto grande, uma meta em várias tarefas separadas.
  • Pense em quais elementos, subtarefas você pode fazer agora e quais não.
  • Faça uma lista de subtarefas adicionando dados de suporte que possam ser necessários. É melhor escrever tudo em um planejador semanal ou de tarefas. A propósito, o Trello é uma ótima ferramenta para isso.
  • Use o Agile.
  • Seja positivo. Metas podem ser alcançadas mesmo que a princípio pareça impossível.

Acima, eu falei sobre o meu projeto. Este software, e a tarefa é bastante complicada. Vou criar um aplicativo de desktop que permitirá aos usuários criar e-books no formato EPUB3. O programa usará arquivos em vários formatos localizados em um diretório específico e os formatará de acordo com o padrão EPUB 3.0.1. O desenvolvimento será baseado em Electron, pretendo lançar a versão de lançamento nas lojas de aplicativos da Apple e Microsoft. Vou criar uma interface do usuário baseada no Vue.js usando a biblioteca de componentes Buefy.

Este é um projeto bastante arriscado, porque ainda não sei como executar algumas de suas partes. Por exemplo, embora seja possível vender a Electron em lojas de aplicativos, ainda não entendo como fazer isso. E essa não é a única tarefa difícil.

No entanto, espero concluir todas as partes do meu projeto.

Realização de cada objetivo, considero um evento teoricamente possível. Eu sei que algumas tarefas já foram resolvidas por outras pessoas, para que eu possa fazer o mesmo. E se eu não souber algo agora, tentarei descobrir em um futuro próximo.

Eu tenho o Trello para acompanhar as tarefas restantes. Tento manter o plano relevante e também estudo as coisas que preciso trabalhar.

Não preciso ser um especialista em tudo isso. O projeto tem objetivos claros, para os quais eu preciso de certos dados, elementos de conhecimento.

Algumas coisas já me são conhecidas agora, por exemplo, a especificação do padrão EPUB3. Há cerca de quatro anos, acordei com o entendimento de que o EPUB é apenas um arquivo ZIP de arquivos HTML. Por três dias, estudei a questão e percebi que o EPUB3 é uma coleção de arquivos XHTML, esse padrão usa elementos HTML5 e CSS e o ZIP usa um formato de empacotamento. Um pouco mais tarde, criei uma ferramenta no Node.js, que me permitiu compilar documentos EPUB. Uma versão um pouco mais complexa deste documento será o núcleo do meu novo aplicativo.

Recentemente, encontrei um problema bastante complicado. O fato é que meu aplicativo se resume a criar uma interface de configuração gráfica para arquivos XML com metadados. Um arquivo OPF (Open Package Format) contém vários elementos de dados, como dc: identifier ou dc: title, que podem ser considerados uma tabela. Um livro pode ter vários identificadores diferentes, incluindo ISBN, DOI, títulos curtos e longos, vários nomes em idiomas diferentes e assim por diante.

O aplicativo deve ter um método que permita ao usuário adicionar, editar ou excluir itens de diferentes tabelas de dados. Mas como

Desde o início, comecei a adiar essa tarefa. Escrevi tudo, exceto a parte em que você precisa encontrar uma solução para trabalhar com tabelas.

Mas é impossível adiar a tarefa indefinidamente - e eu procedi. No final, consegui alcançar o que queria com a ajuda dos componentes do Vue.js. para trabalhar com tabelas. Demorei alguns dias para descobrir. Foi o que aconteceu:



Aqui vemos algumas tabelas para o processamento das listas dc: creator e dc: contributor. Cada linha contém dois botões para editá-lo e excluí-lo. Um botão marcado com um sinal de adição adiciona uma nova linha, e a tabela suporta paginação se houver muitas linhas.

Talvez essa não seja a interface mais amigável, mas tudo funcione, e o projeto passou do estágio de "impossível" para "implementado".

Afinal, adiei a solução para esse problema tantas vezes, e ele acabou aparecendo - você só precisa usar o componente Vue.js / Buefy. E há muitas tarefas semelhantes - elas são encontradas em casa e no trabalho.

Agora, minha próxima tarefa "impossível" é lidar com a colocação de aplicativos Electron em diretórios. Vi outros desenvolvedores publicá-los de alguma forma, então isso é totalmente possível. O principal é descobrir isso.

Desconhecido pode causar preocupação. A tarefa, que não está clara como implementá-la, é um território completamente novo, ainda não desenvolvido, tudo aqui nos assusta. Mas os olhos estão com medo e as mãos estão fazendo. Este é o princípio correto, aplicável inclusive na codificação.

No começo, conversamos sobre mudanças rápidas na indústria de software. Tentamos constantemente acompanhar, não ficar para trás. Para fazer isso, dominamos novos “territórios” para nós mesmos - somos confrontados com um problema, sem saber como executar a tarefa, usando novas ferramentas. E mesmo se resolvermos esse problema com o conjunto de ferramentas anterior, agora, por algum motivo, ele pode não estar disponível. Por exemplo, o jQuery se torna obsoleto e precisamos reaprender.

Em última análise, somos todos heróis. Queremos alcançar um objetivo específico, chegamos a um lugar que parece intransponível, mas que ainda resolve o problema. E a solução, o processo de encontrá-lo, nos dá não apenas código funcional (estamos falando de programação, certo?), Mas também autoconfiança e nova experiência.
A Skillbox recomenda:

Source: https://habr.com/ru/post/pt425809/


All Articles