<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vandemberg</title>
    <description>The latest articles on DEV Community by Vandemberg (@vandemberg).</description>
    <link>https://dev.to/vandemberg</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F152010%2Fba7db505-2134-4e15-9198-f6e506e16c9c.jpeg</url>
      <title>DEV Community: Vandemberg</title>
      <link>https://dev.to/vandemberg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vandemberg"/>
    <language>en</language>
    <item>
      <title>Review: Um guia ilustrado de algoritmos para programadores e outros curiosos</title>
      <dc:creator>Vandemberg</dc:creator>
      <pubDate>Tue, 20 Jul 2021 04:54:56 +0000</pubDate>
      <link>https://dev.to/vandemberg/review-um-guia-ilustrado-de-algoritmos-para-programadores-e-outros-curiosos-1b6k</link>
      <guid>https://dev.to/vandemberg/review-um-guia-ilustrado-de-algoritmos-para-programadores-e-outros-curiosos-1b6k</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Esse review não é um resumo do livro. É apenas minha opinião, visão e pontos que achei interessante na obra. Assim como assuntos que senti falta ou não gostei da abordagem.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Primeiras impressões
&lt;/h3&gt;

&lt;p&gt;A primeira vista achei que seria um livro semelhante a série de livro "Use a cabeça", ou seja, livros com bastante narrativa, storytelling e ilustrações. Que é um estilo que não curto muito por não gostar do formato realmente. &lt;strong&gt;Mas eu tive uma AGRADÁVEL surpresa&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;O livro trás excelentes exemplos sem se alongar muito, com ilustrações simples na medida certa junta a definições claras e diretas. Acho que o livro encontrou o equilíbrio perfeito entre exemplos, storytelling e teoria.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conteúdo
&lt;/h3&gt;

&lt;p&gt;O livro para mim pode ser separado em três partes, essas partes tem diferentes complexidades, podendo ser divida entre básica, média e avançada. A própria ordem dos capítulos é definida dessa forma, a medida que avançamos na leitura o livro aborda assuntos mais complexos, de certa forma sequer percebemos essa mudança sútil.&lt;/p&gt;

&lt;p&gt;Na primeira parte do livro é abordado os assuntos: arrays, listas encadeadas, notação big O, busca sequencial, busca binária, ordenação, Quicksort e hashes. Perceba que primeiro é apresentado duas estruturas de dados, depois a forma de como podemos analisar essas estruturas utilizando big O notation, então nos é apresentado algoritmos diferentes, com o conhecimento anterior podemos entender a vantagem de cada estrutura e cada algoritmo. Essa parte para mim é a de mais fácil entendimento e melhor custo benefício, com pouco conhecimento você se desenvolve bastante como programador.&lt;/p&gt;

&lt;p&gt;Agora avançando um pouco para estruturas mais avançadas é nos apresentado o conceito de grafo. Avançando para grafo direcional, árvore, algoritmo para achar menor caminho e algoritmo de Dijkstra. Por ser um assunto mais complexo nesses capítulos é necessário uma leitura cautelosa.&lt;/p&gt;

&lt;p&gt;Por fim o livro adentra em conhecimentos mais avançados e em algoritmos mais específicos, como k-vizinhos, problema do CACHEIRO VIAJANTE, programação dinâmica e outros. Possuindo também uma excelente explicação do algoritmo do cacheiro viajante, a forma que é abordado é incrível. Finalmente entendi esse problema é porque ele é tão complexo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;Excelente livro para programadores de qualquer nível, incrível para aprender conceitos, revisar conceitos e aparar arestas. A forma como o livro desenvolve e explica a estrutura de hashes é notável.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Porém senti falta de algumas coisas também, achei a explicação de pilha e fila bem superficial, sendo que hoje é um assunto muito importante, ainda mais com uma alta de micro serviços.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>algorithms</category>
      <category>structures</category>
      <category>programming</category>
      <category>review</category>
    </item>
    <item>
      <title>Review: As leis fundamentais do projeto de software</title>
      <dc:creator>Vandemberg</dc:creator>
      <pubDate>Thu, 08 Jul 2021 15:10:26 +0000</pubDate>
      <link>https://dev.to/vandemberg/review-as-leis-fundamentais-do-projeto-de-software-4d7c</link>
      <guid>https://dev.to/vandemberg/review-as-leis-fundamentais-do-projeto-de-software-4d7c</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Esse artigo não é um resumo do livro, é minha impressão sobre o conteúdo e quais foram os pontos que achei mais importantes. Assim como conteúdos que eu senti falta ou algo com que não concordei.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Esse livro para mim é sobre um projeto de software, porém encarando o projeto de software como uma ciência, e deixa claro que é possível encarar dessa forma.&lt;/p&gt;

&lt;p&gt;Os primeiros capítulos o autor decide definir o que é um software, depois o que é ciência, para então definir o que é um projeto. Depois de ter essa base o autor define o que é um um projeto de software. Para então começar a dar sua visão como criar um bom projeto de software. Dessa forma o livro consegue ser útil para um leque maior de pessoas, pois não exige um conhecimento prévio dos leitores.&lt;/p&gt;

&lt;p&gt;O livro defende que o software serve para ajudar pessoas, esse é o valor principal do software. Logo, um bom projeto de software é um projeto que mantém o software ajudando as pessoas pelo maior tempo possível e da melhor forma possível. Para isso os projetistas precisam transformar complexidade em simplicidade, desta forma a manutenção e extensão do software se torna um processo mais fácil, assim gerando menos bugs... consequentemente ajudando mais as pessoas.&lt;/p&gt;

&lt;p&gt;Muito bonita essa visão, mas passar essa visão é em certo nível, muito simplório, é preciso um conhecimento mais profundo para conseguir projetar um software com uma arquitetura simples resolvendo problemas complexos. Você imagina a complexidade de lidar em um software contábil que tem que lidar com leis municipais, estaduais, federais no setor tributário, contábil e trabalhista? Adianto que não é algo simples.&lt;/p&gt;

&lt;p&gt;Em minha visão o livro entrega esse valor mais técnico, mostrando exemplos de projetos que se tornam complexos, exemplos de projetos que falham antes de serem lançados e projetos que constantemente quebram por não ter a manutenção realizada de forma efetiva. Mostra até quando é válido refazer um projeto. Explica também quais técnicas devemos aplicar para manter nosso software simples.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;O livro entrega tanto a assunto mais conceitual quanto o assunto mais aprofundado, ao menos que focado mais na tomada de decisão do que nos código em si&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Se fomos generalizar temos dois tópicos que abrangem as leis fundamentos explicitas no livro, &lt;strong&gt;priorização&lt;/strong&gt; e &lt;strong&gt;over engineering.&lt;/strong&gt; São assuntos bem debatidos já na área de TI, mas é bom ver eles serem discutidos na literatura também.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Priorização:&lt;/strong&gt; Nos é apresentado como priorizar levando em conta manutenção da feature, esforço inicial, entrega de valor aos usuários a curto e longo prazo. Uma má-priorização das atividades do time de TI e uma má-compreensão de como o usuário enxerga cada funcionalidade pode custar alguns milhares/milhões de reais ou até mesmo reduzir a vida útil do software. O livro tenta nos afastar dessas más decisões.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Over engineering:&lt;/strong&gt; Um grande terror para o CTO, um sonho para o programador e uma confusão para o usuário. Temos exemplos do que pode ser considerado uma extrapolação do time técnico, muitos ligados a tentativa de evitar trabalho no futuro, tentando prever uma demanda que não temos certeza que virá. Ou, ás vezes, tentamos criar uma arquitetura tão genérica que ela se torna falha, quando originalmente deveria executar apenas uma função. O livro também nos guia como projetar o software na medida certa, evitando trabalhos desnecessários.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minha visão sobre o livro
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;No sentido de nos guiar nas tomadas de decisões relacionadas ao projeto de software o livro é bem definido, é um guia, principalmente para iniciantes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;O livro não alcança alguns outros tópicos relacionados ao projeto de software, como por exemplo, aspectos mais relacionados a implementação do código em si, e nem está em sua proposta dissertar sobre esses aspectos, e isso fica claro na leitura. Evitando frustar o leitor. Por exemplo, Como implementar uma transação bancária em nosso software de forma simples? Para buscar respostas nesse sentido será necessário buscar outras literaturas. E tudo bem.&lt;/p&gt;

&lt;p&gt;No geral é uma leitura recomendável e super bem-vinda em qualquer momento da carreira, tanto para programadores, mas também para qualquer profissional que influencie no direcionamento do software no dia-a-dia.&lt;/p&gt;

&lt;h3&gt;
  
  
  Minha crítica ao livro
&lt;/h3&gt;

&lt;p&gt;O livro se propõem a tratar o assunto como ciência, mas no final se mostra como uma visão pessoal do autor, que também seria válida desde que se encarasse dessa forma. O autor não revela de onde tirou suas conclusões, não demostra metodologia para suas afirmações e nem se apoia em nenhum trabalho passado, o que para o método cientifico é muito suspeito.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>software</category>
      <category>project</category>
      <category>review</category>
    </item>
  </channel>
</rss>
