#dnad15 - diminuindo sofrimento com código legado de linguagens não mainstreams
TRANSCRIPT
Como deixar um dev chocado:Abordar um developer feliz, trabalhando
com a sua tecnologia preferida e avisar que ele trabalhará com algum sistema legado
O que é legado?Sistema feito pelos outros?
Sistema feito em tecnologia antiga?
Sistema com “cara” de antigo?
O que é legado?Sistema feito pelos outros?
Sistema feito em tecnologia antiga?Sistema com “cara” de antigo?
Sistema sem testes?
Feito pelos outros?
https://github.com/jruby/jruby
+ =
Tecnologia antiga?
C++: 1985 (30 anos)
Python: 1991 (24 anos)
Java: 1995 (20 anos)
Ruby: 1995 (20 anos)
O que é legado?Ninguém tem conhecimento das
regras de negócio.
Não atende completamente às necessidades do negócio.
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
“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 AkitaO Mito do Legado
http://www.akitaonrails.com/2012/08/15/off-topic-o-mito-do-legado
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
O que que o legado tem?
Abordagens diferentes nos
diferentes módulos do sistema
Frameworks próprios
Débitos técnicos acumulados
“Faça qualquer coisa, pois legado ninguém vê”
“É legado, não precisa se preocupar, pode fazer de qualquer jeito”
Sistema utilizado é sistema observado.
Sistema utilizado é sistema passível de requisições de evolução.
Fazer “qualquer coisa” de “qualquer jeito” leva a perder o controle do
sistema
Não se dê ao luxo de perder o controle
No caso de Perl (with lasers)
✓ Metacpan https://metacpan.orgA modern CPAN search site, with an open source backend
Não é porque é antigo que não tem
boas práticas
Perl Best PracticesStandards and Styles for Developing
Maintainable Code.Partes desatualizadas após o Moo/Moose, mas ainda vale a leitura.
Não é porque é antigo que não tem
boas práticas
Perl::CriticCritique Perl source code for best-practicesMódulo que implementa as indicações do
Perl Best Practices - contempla Moo/Moose
Não reinvente a rodaFrameworks coorporativos são válidos em casos muito especiais e se mantidos por uma equipe e não por uma pessoa.
Não reinvente a rodaSe necessário, “forke” um framework
mais próximo às necessidades do projeto e adapte.
Seja um bom escoteiroLegado não é bagunça. Um trecho de código bem escrito vale mais do que
nenhum. O próximo dev irá te agradecer.
Testes de negócioEscreva testes automatizados de
negócio para garantir que entende o que o código faz.
1. http://www.itexto.net/devkico/?p=20732. http://www.itexto.net/devkico/?p=21063. http://www.computerworld.com.au/article/393903/cobol_dead_yet/4. http://www.akitaonrails.com/2012/08/15/off-topic-o-mito-do-legado5. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html6. https://github.com/search?utf8=%E2%9C%93&q=language%3APerl&type=Repositories&ref=searchresults7. http://www.tiobe.com/index.php/content/paperinfo/tpci/programminglanguages_definition.html8. http://sogrady-media.redmonk.com/sogrady/files/2015/01/lang.rank_.plot_.q1152.png9. 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.html11. https://en.wikipedia.org/wiki/Measuring_programming_language_popularity12. http://pypl.github.io/PYPL.html 13. https://www.blackducksoftware.com/resources/data/this-years-language-use14. http://trendyskills.com/ 15. http://pt.slideshare.net/garux/communities-perl-edition-riojs16. http://pt.slideshare.net/garux/descobrindo-a-linguagem-perl17. 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=framework23. 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_websites25. https://www.perl.org/ 26. http://onyxneon.com/books/modern_perl/index.html
Referências