Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Diminuindo sofrimento com código legado de linguagens não mainstreams

Diminuindo sofrimento com código legado de linguagens não mainstreams

Sistemas legados são o terror da maioria dos devs: código dos outros escrito muitas vezes sem seguir boas práticas e em uma linguagem quase completamente desconhecida. A proposta da palestra é discutir sobre:
o que é legado?
o que é linguagem não mainstream no contexto do dia a dia dos projetos?
indicar alguns caminhos a seguir quando se tem um legado a ser enfrentado, utilizando perl como exemplo de linguagem não mainstream.

Jacqueline Abreu

June 26, 2015
Tweet

More Decks by Jacqueline Abreu

Other Decks in Programming

Transcript

  1. Como deixar um dev chocado: Abordar um developer feliz, trabalhando

    com a sua tecnologia preferida e avisar que ele trabalhará com algum sistema legado
  2. O que é legado? Sistema feito pelos outros? Sistema feito

    em tecnologia antiga? Sistema com “cara” de antigo?
  3. O que é legado? Sistema feito pelos outros? Sistema feito

    em tecnologia antiga? Sistema com “cara” de antigo? Sistema sem testes?
  4. Tecnologia antiga? C++: 1985 (30 anos) Python: 1991 (24 anos)

    Java: 1995 (20 anos) Ruby: 1995 (20 anos)
  5. O que é legado? Ninguém tem conhecimento das regras de

    negócio. Não atende completamente às necessidades do negócio.
  6. O que é legado? Ninguém tem conhecimento das regras de

    negócio. Não atende completamente às necessidades do negócio. Evolução arriscada ou muito custosa
  7. “fui alocado sozinho num […] pequeno sistema "legado" extremamente mal

    feito. [...] E eu posso dizer "mal feito" porque efetivamente ele não executava como devia, ou seja, era tecnicamente falho e devolvia muitos erros.” Fabio Akita O Mito do Legado http://www.akitaonrails.com/2012/08/15/off-topic-o-mito-do-legado
  8. O quão popular é uma linguagem? ✓ Google Trends ✓

    Resultados de busca ✓ Empregos ✓ Projetos no GitHub ✓ Tiobe ✓ PYPL PopularitY of Programming Language ✓ RedMonk Programming Language Rankings
  9. O que que o legado tem? Abordagens diferentes nos diferentes

    módulos do sistema Frameworks próprios
  10. O que que o legado tem? Abordagens diferentes nos diferentes

    módulos do sistema Frameworks próprios Débitos técnicos acumulados
  11. “Faça qualquer coisa, pois legado ninguém vê” “É legado, não

    precisa se preocupar, pode fazer de qualquer jeito”
  12. Fazer “qualquer coisa” de “qualquer jeito” leva a perder o

    controle do sistema Não se dê ao luxo de perder o controle
  13. No caso de Perl (with lasers) ✓ Metacpan https://metacpan.org A

    modern CPAN search site, with an open source backend
  14. Não é porque é antigo que não tem boas práticas

    Perl::Tidy Parses and beautifies perl source
  15. Não é porque é antigo que não tem boas práticas

    Perl Best Practices Standards and Styles for Developing Maintainable Code. Partes desatualizadas após o Moo/Moose, mas ainda vale a leitura.
  16. Não é porque é antigo que não tem boas práticas

    Perl::Critic Critique Perl source code for best-practices Módulo que implementa as indicações do Perl Best Practices - contempla Moo/Moose
  17. Não reinvente a roda Frameworks coorporativos são válidos em casos

    muito especiais e se mantidos por uma equipe e não por uma pessoa.
  18. Não reinvente a roda Se necessário, “forke” um framework mais

    próximo às necessidades do projeto e adapte.
  19. Seja um bom escoteiro Legado não é bagunça. Um trecho

    de código bem escrito vale mais do que nenhum. O próximo dev irá te agradecer.
  20. 1. http://www.itexto.net/devkico/?p=2073 2. http://www.itexto.net/devkico/?p=2106 3. http://www.computerworld.com.au/article/393903/cobol_dead_yet/ 4. http://www.akitaonrails.com/2012/08/15/off-topic-o-mito-do-legado 5. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

    6. https://github.com/search?utf8=%E2%9C%93&q=language%3APerl&type=Repositories&ref=searchresults 7. http://www.tiobe.com/index.php/content/paperinfo/tpci/programminglanguages_definition.html 8. http://sogrady-media.redmonk.com/sogrady/files/2015/01/lang.rank_.plot_.q1152.png 9. http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/ 10. http://www.cbsi.net.br/2015/03/dada-como-em-extincao-cobol-ainda-ta.html 11. https://en.wikipedia.org/wiki/Measuring_programming_language_popularity 12. http://pypl.github.io/PYPL.html 13. https://www.blackducksoftware.com/resources/data/this-years-language-use 14. http://trendyskills.com/ 15. http://pt.slideshare.net/garux/communities-perl-edition-riojs 16. http://pt.slideshare.net/garux/descobrindo-a-linguagem-perl 17. https://help.github.com/articles/where-can-i-find-open-source-projects-to-work-on/ 18. https://github.com/trending 19. http://blog.microfocus.com/news/the-legacy-myth-legendary-it/2218/ 20. http://search.cpan.org/~shancock/Perl-Tidy-20140711/lib/Perl/Tidy.pod 21. http://shop.oreilly.com/product/9780596001735.do 22. https://github.com/search?utf8=%E2%9C%93&q=framework 23. http://search.cpan.org/~thaljef/Perl-Critic-1.125/lib/Perl/Critic.pm 24. https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites 25. https://www.perl.org/ 26. http://onyxneon.com/books/modern_perl/index.html Referências