Do Python ao Infinito e Além!

qui 12 abril 2018

Disclaimer I: esse artigo completo é indicado para iniciantes em programação ou iniciantes nos estudos da linguagem Python.

Disclaimer II: se você já trabalha com Python, talvez a última parte desse artigo (Indo Além) seja a mais importante.

Trabalhando com Python por pelo menos os últimos 5 anos e envolvido com a comunidade, é comum aparecer diversas pessoas me perguntando como aprender Python, como começar a aprender ou mesmo até como encontrar um trabalho em que possa utilizar Python no dia-a-dia. Cada uma dessas perguntas possuem uma resposta diferente, mas que na realidade independem da linguagem de programação ou tecnologia que quer aprender ou com a qual quer trabalhar. Além disso, em especial ao questionamento sobre o trabalho com Python, vale a ressaltar que saber Python é uma pequena parte das exigências para de fato trabalhar com Python.

Começando estudar Python

Gostaria de começar falando sobre o questionamento que se refere a como aprender determinada coisa, no nosso caso, a linguagem de programação Python. Essa é uma questão complexa de responder absolutamente porque varia de acordo com o perfil de cada pessoa. Há aqueles que aprendem melhor lendo um livro do começo ao fim, outros que aprendem melhor indo capítulo a capítulo do livro não necessariamente em uma ordem, outros preferem assistir uma série de vídeo aulas ou talvez até se debruçar sobre a própria documentação da linguagem.

Independente qual seja o método de aprendizagem mais indicado para cada pessoa, uma das vantagens do Python é a abundância de material em diversos formatos. Há incontáveis livros estritamente sobre a linguagem Python ou mesmo envolvendo outros assuntos com aplicações e exemplos em Python. Algumas sugestões são:

  • Pense em Python. Downey, Allen – um livro que ensina programação para quem nunca programou, usando Python nos exemplos. Possui edição física do livro ou acesso gratutito através do site Pense em Python;

  • Python para Desenvolvedores. Borges, Luiz Eduardo – um livro com abordagem simples e linguagem direta. Uma ótima escolha para quem está começando com Python.

  • Python Fluente. Ramalho, Luciano – um dos melhores livros de Python lançado recentemente, aclamado tanto nacionalmente quanto internacionalmente. É a escolha certa para quem quer aprofundar o conhecimento em Python.

  • Learning Python. Lutz, Mark – livro para quem já sabe programar e gostaria de não ter somente uma abordagem superficial da linguagem. Um dos livros mais completos, porém não complexo para quem está começando estudar Python. O livro é antigo mas as ultimas edições já possui exemplos em Python 3.

  • Automate the Boring Stuff with Python. Sweigart, Al – livro também para quem já sabe programar e gosta de estudar com uma abordagem mais prática. Nunca li, mas já ouvi boas recomendações.

Outra possibilidade é aprender Python através de cursos online. Ainda que haja diversas opções dessa modalidade disponíveis, aqui vale ressaltar o belo trabalho do professor Fernando Massanori: o curso Python para Zumbis. O curso é completamente gratuito e vai desde as mais simples regras sintáticas de Python até programação orientada a objetos além de diversos outros apêndices com outros temas.

Eu costumo dizer que programação é um ofício ao mesmo tempo prático e intelectual. Uma pessoa se torna ótima programadora quando dedica tempo para estudos teóricos com livros, cursos e até mesmo conversas com colegas, mas também que dedique uma considerável parcela do tempo programando. Assim sendo, não limite-se as leituras e pratique! O próprio curso Python para Zumbis possui alguns exercícios interessantes. Outra opção é uma página na wiki da associação Python Brasil com centenas de exercícios separadas por temas como estruturas sequenciais, estruturas de repetição, operação com arquivos, classes, etc. A lista pode ser encontrada na wiki da Python Brasil.

A partir do momento que os tipos de exercícios de cursos de programação, como os que foram sugeridos acima, começarem a se tornar monótonos, há um próximo passo a seguir. Há diversas plataformas para exercitar a prática de programação de modo geral, independente da linguagem de programação escolhida. Muitas dessas plataformas são integradas com outras de busca de emprego, o que pode inclusive ajudar na busca do primeiro emprego com Python. Um dos exemplos mais expoentes dessas soluções é o Hacker Rank.

Como tantas outras atividades que podemos desempenhar, programar é uma das que a prática também ajuda alcançar a perfeição. Portanto tenha constância nos estudos e não se limite somente a leituras; PROGRAME!

Ainda que o conteúdo e atividades sugeridos para estudo até agora já sejam o suficiente para ocupar alguém por muito tempo (anos!), tenho uma realidade um pouco dura para lhe apresentar. Absorvendo e dominando todo esse conhecimento, você ainda será uma pessoa limitada profissionalmente. Isso porque o mercado moderno de desenvolvimento de software não exige somente o conhecimento aprofundado de uma linguagem de programação, mas de várias. Ainda dentro do mesmo contexto de uma tecnologia, como Python, há diversas outras bibliotecas e frameworks para se dominar visando tonar um profissional de relevância.

Conhecendo o Infinito

Independente do sub-segmento da programação que desejar se dedicar, uma coisa é certa: você irá ter que dominar o planejamento e implementação de testes automatizados. Por si só, a área de testes de software é imensa, sem contar todas as disciplinas englobadas dentro do contexto de Quality Assurance. Porém há uma considerável parcela dessas disciplinas que todo profissional de desenvolvimento de software precisa dominar.

Um dos destaques da linguagem Python é que ela já vem com as chamadas “baterias inclusas”. São as bibliotecas padrão da linguagem. Dentre elas há o framework para testes unitários, por exemplo. Uma boa leitura é a própria documentação do unittest para quem já tem alguma noção de testes unitários. Porém o framework padrão de Python para testes unitários não é a única opção. Existe uma alternativa, bastante utilizada dentro do ecossistema Python, que é a biblioteca pytest. Uma leitura recomendada pode ser o livro:

Uma outra característica marcante da linguagem Python é a sua simplicidade sintática e foco na legibilidade das pessoas que a utilizam. Esse é um dos fatores da comunidade Python possuir pessoas das mais variadas áreas do conhecimento e não somente da computação. É comum em conferências nacionais e internacionais sobre Python encontrarmos profissionais das áreas de estatística, biologia, geologia, jornalismo, dentre outros. Ou seja, sabendo programar em Python um profissional pode atuar em diversos segmentos e com diversas abordagens da computação moderna: data science, data mining, web scrapping, business intelligence, desenvolvimento web e de sistemas distribuídos, entre outros.

Dentro de cada uma das áreas de atuação citadas, há um universo vasto para ser explorado no quesito de conhecimento e ferramentas. Python pode ser uma das ferramentas fundamentais, mas para alcançar sucesso há diversas outras que precisam ser conhecidas e dominadas. Tomando como exemplo o segmento de desenvolvimento web, há vários framworks Python, por exemplo. Com destaque para Django, Flask, Pyramid e Bottle, para citar alguns. Se formos considerar outras ferramentas como CMS, a lista cresce em proporções altíssimas.

Apesar de super breve, a ideia aqui é ilustrar que “só saber Python” não é suficiente. Há diversas disciplinas e ferramental que precisam ser dominados para de fato se tornar um profissional produtivo e atuante dentro do segmento escolhido.

Indo Além

Mais uma vez não custa lembrar. Trabalhar ou se divertir programando em Python, ainda assim é programar. Mais do que nunca o ofício de se desenvolver software tem se popularizado cada vez mais, seja por parecer uma atividade divertida, necessária ou mesmo por dar a impressão de ser uma profissão lucrativa. Considerando o mercado de trabalho brasileiro, de fato várias dessas suposições podem ser verdadeiras, ainda que hajam muitas exceções.

Seja com Python ou com qualquer outra linguagem de programação, é importante lembrar que a atividade de desenvolvimento de software não é uma atividade trivial como algumas peças publicitárias podem dar a entender. Python (na minha opinião, claro), facilita muito a tarefa de codificar, porém para codificar é necessário antes ter a ideia do software. Essa ideia precisa estar minimamente estruturada e organizada de modo que seja possível comunicá-la. Dentro de um ambiente corporativo será necessário compartilhar a sua ideia com um time, exercitar suas habilidade de convencimento e de comunicação. Ainda que esteja em um trabalho pontualmente sozinho, suas ideias precisam ser organizadas de tal forma que você consiga comunicar para o computador em formato de um código fonte. Ainda que isso pareça trivial, na prática é um grande desafio considerando as dimensões de problemas reais que precisam ser solucionados.

Além do exercício intelectual, criativo e de comunicação descrito acima, desenvolver software também é uma atividade de sucessivas tomadas de decisão. Seja um profissional de nível iniciante, intermediário ou avançado, a tomada de decisão está presente diariamente no cotidiano profissional do desenvolvimento de software. Seja decidindo a arquitetura de uma nova solução, a melhor implementação dentre as diversas possíveis para um problema, seja decidindo a ordem que as tarefas serão executadas pelo time ou por você mesmo, decisões estão em todo lugar a todo momento. Saber lidar com essa necessidade, analisar os riscos e os benefícios, conhecer padrões de pessoas que já passaram por momentos semelhantes e, mais importante, aprender a lidar com os erros de uma tomada de decisão, é crucial para uma evolução saudável profissionalmente.

Estamos em um momento da nossa história como sociedade e como profissionais onde ao mesmo tempo que vemos carros no espaço, foguetes pousando, também vemos um carro autônomo tirar a vida de uma pessoa que andava de bicicleta. Não chegaríamos em nenhuma das situações se não fosse pelo desenvolvimento de software e pelas atividades, incluindo as decisões, de diversos programadores. Principalmente quando estamos iniciando na área de programação ou na carreira profissional, temos a falsa impressão de que nosso ofício diz respeito sobre a criação de programas de computador e escrita de código fonte. Talvez um dia de fato tenha sido, porém atualmente uma instrução escrita no editor de texto, é uma decisão tomada, com todos as implicações e desafios descritos acima.

Programe em Python ou em qualquer outra linguagem. Mas entenda que desenvolver software nos dias de hoje é uma atividade altamente complexa e com uma bagagem de responsabilidade que, como comunidade de profissionais, ainda não aprendemos a lidar.


Encontrou algum erro, gostaria de compartilhar algum comentário comigo ou fazer qualquer sugestão? Entre em contato através de alguma das formas listadas na página de contato.