O que você aprendeu depois de ler e assistir a esses links?

O que diabos aconteceu com a GERAÇÃO Y?!

Por que a indústria do empreendedorismo de palco irá destruir você.

“Todos os dias faça alguma coisa de que você tem medo.” Eleanor Roosevelt

Do Django Girls SJC ao DjangoCon Europe

Leandro Karnal | Minha Felicidade depende de mim

Como melhorar meu código em Python, tornando o mais pythonico, legível e fácil de dar manutenção?

Assisti a palestra do Raymond Hettinger sobre qualidade, legibilidade e discussões sobre a PEP 8.

A indico para aqueles que, assim como eu, tem conhecimentos intermediários em Python e deseja transformar seu código mais pythonico.

Para ser sincero, acho que todos devem assistir isso.

Mas o ponto mais legal e que quero compartilhar é essa lista de propostas de como criar códigos Python pythonicamente, de forma mais explícita e performática.

Quais ferramentas os desenvolvedores utilizam que não podem faltar?

Essa semana formatei meu notebook, e com isso perguntei no twitter para uma galera sobre quais programas que não poderiam faltar.
E acabei percebendo que uma das coisas que o pessoal tem dúvidas é sobre o que o pessoal utiliza no dia a dia, nisso meus amigos falaram as ferramentas que utilizam no dia a dia para desenvolver suas aplicações.

Veja o que o pessoal diz:

Ps: Sei que ficou meio zoado pq sempre aparece meu primeiro tweet, mas essa foi a única forma que o wordpress gratuito recebeu os tweets. My bad.

https://twitter.com/romulocollopy/status/659737691165212672

Os ciclos da vida e o amadurecimento involuntário

Tenho uma mania: Revejo alguns vídeos diversas vezes ao longo do tempo.

Aí você se pergunta: Mas porque isso?

Ciclos da vida

Querendo ou não, todos passamos por ciclos. Como a própria Wikipédia diz:

Ciclo de vida é o conjunto de transformações por que podem passar os indivíduos de uma espécie para assegurar a sua continuidade.

Passamos por diversas transformações ao longo do dia, a cada hora, minuto ou até segundos.

É algo involuntário, não temos como controlar, e isso nos afeta diretamente em nossos pensamentos, atos e sentimentos. Aos poucos, com todos esses ciclos passando por nós, é natural acumularmos experiências, e com elas iremos amadurecer.

O amadurecimento involuntário

Por exemplo, tem alguns vídeos que revejo de vez em quando e irei falar um pouco sobre cada um deles.

How badly you want to be sucessful

Esse vídeo me mostrou que se desejamos realmente algo, a determinação e o foco são fundamentais, independente do que seja.

Se você quer algo, simplesmente corre atrás. Não pensa no que pode dar errado, se dará certo; Simplesmente vai lá e faz. Se esquecermos tudo o que é de ruído e procrastinador, veremos que o que desejamos não é algo de outro mundo.

Vagas de Python – Vinícius Assef

O Vinícius não faz apenas uma reflexão sobre o mercado de Python, ele fala sobre diversos aspectos sobre escolhas na vida. Me mostrou que antes de me preocupar em ser o melhor programador do mundo, é necessário primeiramente ter opiniões e ideias, qualidades fundamentais em qualquer coisa.

Lifestyle

A cada palestra do Henrique aprendo algo novo. Muitas das loucuras dele também passam pela minha cabeça. O tempo é algo muito precioso que não podemos desperdiçar nenhum milésimo. É mais caro perder tempo do que dinheiro, até porque dinheiro recuperamos, tempo não.

Então focar em coisas que realmente façam sentido para você é fundamental para sua realização pessoal e profissional.

Por coincidência ele escrever há poucos dias falando a respeito disso: http://henriquebastos.net/oportunidade-ou-distracao/

No excuses

Todos nós já fizemos isso. Se não queremos algo, inventamos desculpas. Até porque não nos sentimos bem em falar que não queremos, criar desculpas é muito mais fácil.

E seus planos que você sempre deixa pra frente? Será que realmente não tem tempo? Até porque você vê aquela pessoa fazendo milhares de coisas e a quantidade de tempo (24h) é igual para todos. Como consegue?

É mais fácil gerenciar tempo do que dinheiro.

Tempo todos nós temos. Dinheiro nem tanto.

Enfim…

Esses vídeos tem significados diferentes a cada momento que assisto. Tudo isso tem a ver com o que aprendi nesse intervalo de tempo, onde começo a rever o que se passou e novos significados que os vídeos trazem.

Se parar para avaliar o que mudou de lá pra cá, você verá que seus ciclos mudaram e sem querer houve um amadurecimento interno.

Você consegue enxergar isso? Conte nos comentários seus ciclos e vídeos marcantes. 🙂

O impacto da síndrome do impostor nos profissionais de TI

A área de tecnologia é uma das que mais crescem no mundo. A todo momento surgem inovações e novidades que mudam completamente nosso cotidiano. E com isso são necessários profissionais especialistas em cada assunto. Mas e quem não é especialista, como ele se sente?

Por incrível que pareça, muitas pessoas podem estar com a síndrome do impostor e não sabem.

Mas o que seria isso? Para exemplificar melhor, deixo dois textos muito bacanas que ilustram bem esse sintoma:

http://exame.abril.com.br/revista-voce-sa/edicoes/189/noticias/voce-ja-se-sentiu-um-impostor

http://www.papodehomem.com.br/esta-se-sentindo-um-impostor-voce-nao-esta-so/

Muitos ouvem falar dos desenvolvedores “Rockstar”, aqueles que se destacam pelas suas atividades comunitárias, seja escrevendo artigos, ou dando palestras mundo afora, onde são considerados referências no assunto. O Diego Eis escreveu a respeito sobre essa ideia – http://tableless.com.br/nao-seja-o-proximo-zeno-rocha/. Mas algo que o Zeno relata em outro texto (https://medium.com/@zenorocha/ser-popular-e-uma-merda-b739836e4407) é algo que algumas pessoas podem não perceber:

Lembre-se sempre:popularidade é diferente de competência. Só porque alguém é referência em determinada área, não quer dizer que essa pessoa é melhor tecnicamente que você. De novo, pode parecer clichê mas a gente esquece disso o tempo todo.

E pelo fato de que há pessoas mais articuladas no mercado, que sempre dão as caras em eventos, não quer dizer que o que dizem seja mais importante do que você tenha a dizer.

Assim como a história do Python, a linguagem não foi feita apenas pelo Guido Van Hossun, foi feita por diversas pessoas que tinham o interesse genuíno de compartilhar e colaborar com algo que achavam interessante.

O vídeo abaixo mostra um pouco sobre a história do Python, onde o Guido encaminhou um e-mail para um grupo de amigos e todas as interações feitas são e-mails trocados e projetos que foram nascendo nesse meio tempo.

Não foque nos resultados, foque no processo!

Para chegar em algum objetivo, independente do que for, é necessário o primeiro passo. E o medo do fracasso, como descrito nos textos, é maior do que sua coragem de começar as coisas.

Com isso, é necessário foco e realmente querer, com isso, deixo novamente dois links muito importantes:

http://mel-meow.com/uma-longa-noite-aprendendo/

Conclusões

Muitos tem medo de compartilhar aquilo que sabem, pois o medo das críticas é enorme. Isso é normal e não tem problema algum com isso, mas saiba que o pouco que sabe pode mudar a vida de outra pessoa. Por isso, não deixe de interagir e compartilhar.

Ninguém nasceu sabendo. É meio clichê isso mas nós sempre esquecemos. Tudo leva tempo, e se a pessoa tem bastante capacidade, tenha certeza que isso levou tempo, e porque não podemos, aos poucos, também alcançar essa mesma capacidade? Até porque, precisamos de apenas 20 horas para aprender algo.

Conhece alguém que já teve a síndrome do impostor ou você já teve? Deixe nos comentários como foi constatar o problema e quais foram as soluções que encontrou nesse tempo.

O email que mandei para a comunidade do Grupy-SP

highres_439842687

Olá pessoal, tudo bom?

Antes de tudo, gostaria de agradecer a presença dos participantes do nosso encontro de ontem, foi show de bola. E também um agradecimento especial aos nossos palestrantes, o conteúdo apresentado foi de altíssima qualidade.

Com isso, gostaria de pedir seu feedback. Não deixe de comentar, sua opinião é indispensável!

http://www.meetup.com/pt/Grupy-SP/messages/boards/thread/49108985/#128267903

Aqui estão os slides e os contatos dos palestrantes:

https://github.com/grupy-sp/encontros/blob/master/2015-07-7comm.md

E as fotos:

http://www.meetup.com/Grupy-SP/photos/26269408/?_locale=pt

Este é um email muito importante. Ele é importante pois algumas coisas que irei falar podem mudar sua maneira de como olhar o Python e sua comunidade.

Antes de tudo, por que existe eventos de comunidade? O meu amigo Carlos Glória vai exemplificar:

https://www.youtube.com/watch?v=_epbbR4EtYw

Eventos de comunidade podem mudar a vida de uma pessoa. Por isso nos esforçamos para que haja esses encontros.

Algo que foi muito legal é saber que houve grande adesão de novos membros. Sejam muito bem vindos!!

Não gosto de fazer muito jabá do meu blog, mas para os iniciantes que tem interesse em saber um pouco mais sobre Python e sua comunidade, acredito que não há lugar melhor.

https://ericstk.wordpress.com/2015/02/16/guia-para-iniciantes-a-programacao-em-python/

Nesse artigo junto podcasts falando sobre a linguagem, sua história, o que ela faz e outras coisas. Logo após falo de cursos gratuitos, livros e etc. Dê uma lida com calma e depois comente sobre o que achou.

Depois disso, o convido a participar das redes sociais da comunidade e comece a trocar ideias e dúvidas:

https://groups.google.com/forum/#!forum/grupy-sp

https://groups.google.com/forum/#!forum/python-brasil

https://www.facebook.com/pythonbrasil

https://www.facebook.com/grupysp

Twitter: mesmos nomes

Slack: https://grupysp.herokuapp.com/

http://wiki.python.org.br/

Considerações finais:

Se tiver interesse, organize seu próprio encontro de Python, veja mais em: https://github.com/grupy-sp/encontros

Participe da Python Brasil, nosso maior evento nacional de Python. É imperdível! – http://pythonbrasil.github.io/pythonbrasil11-site/

Veja o que falei do evento – https://ericstk.wordpress.com/2014/11/09/python-brasil-10-porto-de-galinhas-recife/

Palestre! Ninguém sabe tudo na vida, então o pouco que você acha que sabe vale muito para outra pessoa. Não deixe de contribuir com suas histórias.

Quer um exemplo para verem que não estou mentindo?

https://parucker.wordpress.com/2015/02/18/ela-quer-respirar-quer-ter-sucesso/

Bônus: https://ericstk.wordpress.com/2014/12/23/como-foi-meu-ano-com-python/

Depois a gente senta em alguma mesa de bar e conto mais sobre essas coisas malucas.

Qualquer dúvida, nossos (Meu e do Diego) estão aí. Mande um email e vamos trocar ideias.

Grande abraço!

 

O que você está fazendo de errado na sua carreira de programador

O que você está fazendo de errado em sua carreira de programador

Cada pessoa é um indivíduo único, onde as formas de absorver informações são dos mais variados tipos. Por isso este blog busca diversas formas de ensino, seja através de cursos, tutoriais, artigos ou videoaulas. Mas isso não basta.

O que aprendi sobre aprender

Por que todo mundo está com pressa? E como aprender a programar em 10 anos.

O que está ficando óbvio a cada dia é que poucos sabem os caminhos a serem traçados, seja iniciantes ou quem já está na área há um bom tempo. Isso porque não conseguimos distinguir nossos momentos de escolhas. Mas o que são escolhas?

Como me tornar excelente naquilo que faço?

By Klaus Wuestefeld

1) Torne-se excelente.

Seja realmente bom em alguma coisa. Não fique só choramingando ou querendo progredir às custas dos outros. Não pense q pq vc sentou 4 anos numa faculdade ouvindo um professor falar sobre software q vc sabe alguma coisa. Jogador de futebol não aprende a jogar bola tendo aula. Ele pratica. Instrumentistas geniais nao aprendem a tocar tendo aula. Eles praticam. Pratique. Chegue em casa depois do trabalho e da aula e pratique. No final de semana, pratique.

Crie seu próprio virus, seu próprio jogo, seu próprio SO, seu próprio gerenciador de janelas, seu próprio webserver, sua própria VM, qualquer coisa. Várias coisas.

Não precisa ser só programação. Pode ser networking, vendas, etc. Só precisa ser bom mesmo. Tenha paixão pela coisa.

As melhores praticas do mercado são polinizadas primeiro nos projetos de software livre. Aprenda com eles.

Discípulo, Viajante, Mestre: Primeiro seja um discípulo, tenha mestres locais, aprenda alguma coisa com alguém realmente bom, qq estilo. Depois viaje, encontre outros mestres e aprenda o estilo deles. Por fim, tenha o seu estilo, tenha discípulos, seja um mestre.

Vou fazer o curso da Mary Poppendieck em SP semana q vem e qdo tiver o curso de Scrumban do Alisson e do Rodrigo quero fazer tbem.

“Torne-se excelente” também pode ser chamado de “Melhoria Continua” ou “Learning”.

2) Não seja deslumbrado.

Desenvolvimento de software é a mesma coisa há 60 anos: modelo imperativo. Há 30 anos: orientação a objetos. Bancos de dados relacionais: 30 anos. (“Web”, por exemplo, não é uma tecnologia ou um paradigma. É meramente um conjunto de restrições sobre como desenvolver e distribuir seu software).

Não corra atras da ultima buzzword do mercado. Busque a essência, os fundamentos.

Busque na wikipédia e grokke: determinismo, complexidade de algoritmos “O()”, problema de parada de turing. Pronto, pode largar a faculdade. Falando sério.

Trabalhe com software livre. Não dê ouvidos a grandes empresas, grandes instituições ou grandes nomes só pq são grandes.

Vc acha q vai aprender mais, ter mais networking e mais chance de alocação no mercado trabalhando em par comigo no Sneer por um ano, 8h por semana, ou passando 4 anos na faculdade, 20h por semana, pagando sei la qto por mês?

Vc acha q vai aprender mais trabalhando em par com o Bamboo 6 meses na linguagem boo e na engine do Unity ou fazendo um ano de pós em “a buzzword da moda”?

“Nao seja deslumbrado” tbem é conhecido como “Coolness”.

3) Mantenha-se Móvel.

Com a demanda q temos hoje no mercado, se vc é desenvolvedor de software e n consegue negociar um contrato com uma empresa onde vc é pago por hora e pode trabalhar qtas horas quiser com um minimo de meio periodo, vc precisa rever a sua vida.

É melhor ter dois empregos de meio-periodo q um de periodo integral, pq vc pode largar um deles a qq momento.

Vc nunca vai conseguir nada melhor se não tiver tempo, se não tiver disponibilidade pra pegar algo melhor qdo aparecer.

Vc sustenta seus pais e 7 irmãos? Não. Então para de ser ganancioso e medroso no curto prazo, para de pagar facu, mestrado, pós, MBA, sei-la-o-q e vai aprender e empreender.

Trabalhe remoto. Não é o mais fácil, mas é perfeitamente possível.

Não fique reclamando q está trabalhando demais. Aumente seu preço e trabalhe menos.

4) Emparceire-se Promiscuamente.

Participe de dojos, de congressos, de projetos de software livre. Tenha amigos, colegas, conhecidos. Seja conhecido. Não faça ruído em seis projetos e doze fóruns. Ajude de verdade em um ou dois projetos de cada vez. Ao longo do tempo, vc terá ajudado em vários projetos, trabalhado em varias empresas.

5) Mentalidade de Abundância.

Ajude seus amigos sem cobrar (a “camaradagem” do Vinícius). Dê palestras gratuitas. Cursos gratuitos. Participe de projetos de software livre.

Pare as vezes uma tarde pra receber um amigo seu e explicar seu projeto. Vá visitar seus amigos nos projetos deles. Viaje com algum amigo seu pra visitar um cliente dele, só pra conversar e fazer companhia.

Vc tem um espaço onde dá cursos? É uma Aspercom, Caelum da vida? Chama os brothers p dar curso. Porra, bola um modelo em q as pessoas podem se inscrever para cursos variados, pagando um sinal, e mantém tipo uma agenda pre-combinada: “Será numa terça e quinta a noite, avisadas com duas semanas de antecedencia”. Se rolar, beleza, se depois de meses nao der quorum, devolve o sinal. Pode ser curso de Prevayler, de Kanban, de Scrum, de Lean, de Comp Soberana, de Restfulie, de Cucumber, de Rails, de Teste Automatizado Mega-Avançado, qq coisa.

Chame amigos seus pra dar curso em dupla com vc. Divida clientes.
Divida projetos, mesmo q não precise de ajuda.

Dizia o pai de um brother meu de infância: “Tudo q custa dinheiro é barato.”

6) Busque modelos de custo zero.

Trabalhe em coisas q tem custo administrativo/burocrático/manutenção zero. Por menos ganho q tragam, depois de prontas, estarão tendo uma relação custo/beneficio infinitamente vantajosa.

7) Ganhe notoriedade.

Faça coisas massa. Participe de projetos de software livre. Dê palestras gratuitas. Promova eventos (dojos, debates, grupos de usuários, etc).

By Dairton Bassi:

8 – Não tenha medo!

Meta a cara. Arrisque empreender. Arrisque inovar. O que você tem a perder? No máximo um emprego, mas isso pode ser revertido facilmente em um mercado aquecido como o atual. O pior que pode acontecer é não dar certo. Mesmo assim você terá aprendido muito mais do que batendo cartão.
Saia da zona de conforto. Se o seu trabalho estiver fácil e sob controle, isso significa que ele não está mais agregando para a sua evolução técnica e pessoal.

Não desperdice a chance de trocar de função se a nova oportunidade for mais desafiadora. Isso fará você crescer tecnicamente e o preparará para desafios maiores ainda. Conhecer pessoas novas é tão importante quanto manter-se em contato com código.

Não se detenha por insegurança ou pela sensação de despreparo. Como você acha que vai ganhar experiência em alguma coisa se sempre adiá-la?

Deu para pegar algumas sacadas?

Não esqueça de deixar nos comentários o que descobriu. 🙂

Tudo o que um iniciante em programação python deveria saber

De uns tempos para cá ando enrolado. Tão enrolado que esqueço de atualizar sobre o que ando fazendo. Desde Dezembro aconteceram algumas coisas e que estão espalhadas por aí, e acredito que possa ajudar alguém (nunca se sabe).

Em dezembro tivemos o FalaAÊ, evento online para falar sobre qualquer coisa. Falamos sobre comunidade, Geolocalização, Pyladies e várias outras coisas.


Janeiro palestrei na Campus Party falando sobre desenvolvimento com Bottle.


E também vários Hangouts

Mesa de bar com Python – Segunda Edição


Web2py Faq


Python para iniciantes


Mesa de bar – Primeira Edição


Mesa de bar – Segunda edição


Palestra sobre comunidade no Grupy-SP

DSC00017

IMG_20150314_121041961

#7 João Bueno | Pythonistas que você devia conhecer

perfil_gimp_tintec

João Bueno, mais conhecido como JS, é uma das pessoas de grande importância na linguagem Python. Trabalhando há anos com a linguagem, ter participado da diretoria da Associação da Python Brasil, contribuidor do software de edição de imagens GIMP, por isso o convido para compartilhar suas experiências.

Como conheceu Python, lá em 2001?

Eu já usava Linux há alguns anos – sempre gostei de ter controle do computador, de poder dizer para ele o que fazer. Eu sabia C, e outras linguagens que tinham caído em desuso nos ambientes gráficos – tanto do Linux quanto do Windows: nenhuma delas deixaria eu fazer uso das capacidades de multimídia de um computador como o que existia na época. Criar uma janela gráfica para poder se desenhar com o mouse em C é uma tarefa para algumas semanas. Alguns anos antes eu havia tentado aprender um pouco de Java: applets para Web eram até “tranquilos”, mas para programas desktop eu abandonei a tentativa de aprendizagem após alguns dias tentando instanciar uma classe “Rectangle” da biblioteca padrão sem ter sucesso (nem documentação).

Python para mim era mais um nome de linguagem dentre tantos outros que “quando eu tivesse tempo, iria estudar”: Perl, TCL, Awk, C++ … Meu maior interesse era aprender Perl – na época ainda era o que “impulsionava a Web”. Mas um dia comprei um guia rápido de Python (da Novatec -já está fora de catálogo há vários anos) – e lendo o mesmo, havia um diferencial: o que eu vinha embutido na linguagem e na sua biblioteca padrão permitiam o desenvolvimento rápido, sem muitos meandros, de aplicações simples. Me lembro até hoje como me chamou a atenção a documentação do módulo “random” nesse guia: enquanto nas outras linguagens na época (e até hoje, 2015), tudo o que você tem de “random” é um número entre 0 e 1, que cabe a você massagera com 3 ou 4 expressões distintas até você ter um uso pra ele: você nunca quer um número aleatório entre 0 e 1.

Você quer escolher um elemento de uma lista, quer um número inteiro entre 0 e o número de colunas da sua tela gráfica – quer um número prático. Python não só incluía chamadas diretas para todos os usos práticos possíveis de um número aleatório – mas também chamadas para várias distribuições estatísticas distintas de números aleatórios (uniforme, gauss, triangular, …)Essa e outras coisas me empolgaram bastante. Um ou dois meses depois fui começar um projeto para uma pequena empresa, e fiz em Python para Web, usando CGI.

E como começou a se interessar e colaborar com o GIMP?

(Para quem não sabe, GIMP é o GNU Image Manipulation Progam – um programa livre para manipulação de imagens e fotos com muitos dos mesmos recursos do mais conhecido na categoria, o Photoshop)

Isso foi um pouco mais tarde, em 2004. Eu já usava Linux e Software Livre há bastante tempo – e sempre tinha gostado de programas de imagens – que deixassem você usar o computador para desenhar – quando tive meu primeiro computador na década de 80, a vontade era ter uma impressora pra ele, para poder passar meus desenhos para o papel. Ainda para o PC XT,que não tinha ambiente gráfico, tive um “mouse” – só servia para os programas de desenho.

E em 2004 me bateu a questão de – “nossa eu uso todos esses programas em Software Livre, já é hora de eu começar a contribuir com pelo menos um projeto”. Bom, a minha opção foi o GIMP, do qual eu já era um usuário frequente. Fui atrás da documentação e do código fonte, e consegui compilar o programa e entrar em contato com a comunidade de desenvolvedores. A tradução também estava parada, num momento entre versões estáveis do programa, e mesmo as partes já traduzidas tinham problemas sérios. Então junto com minhas primeiras contribuições, ou tentativas, assumi também a tradução do programa.

Como foi essa experiência de dar um curso sobre edição de imagens(http://timtec.com.br/course/edicaoetratamento/)?

Esse curso foi interessante por se tratar de um “MOOC” (“Massive Online Open Course”) completo, voltado para público inciante na edição de imagens. O projeto tinha um patrocínio grande, e foi executado profissionalmente – acho que o mais marcante nele foi o contato com a produção de vídeo “em nível de TV”: a gente ia para o Estúdio, a equipe de gravação era completamente diversa das pessoas com quem eu conversava sobre conteúdo-, havia uma fase de pós-produção dos vídeos. Muita correria,e devido a própria natureza e público alvo do curso, era sobretudo um curso “leve” – bem pouco denso, de conteúdo fácil, com o básico, repetido, feito para quem estivesse abordando o assunto pela primeira vez.

Por um lado deu para matar a vontade de ensinar as pessoas a “mandarem no computador” que é o que eu gosto, mas só pela interface do GIMP. Claro que isso não é o suficiente pra mim, então mesmo sendo um curso básico, nas últimas aulas dou umas dicas de como criar plug-ins em Python para o GIMP, e modificar arquivos de SVG manualmente para o Inkscape 🙂

Brython, como ele é e o que tem de interessante?

Brython é uma implementação de Python feita para rodar no Browser – no lado do cliente.

Ele funciona traduzindo scripts em Python para Javascript no browser, depois da página ser carregada.

Quando conheci o projeto, em 2013, achei interessante só pelo fato de se poder usar a sintaxe do Python, mais legível, direto no navegador: sem chaves, delimitação por identação – e já funcionavam os “import”s que são uma mão na roda, sem falar nas sintaxes para formatação de strings: Python tem duas formas nativas, ambas implementadas no Brython, e em Javascript a única forma ainda é intercalar pedaços de strings com aspas e operadores “+” de concatenação.

Desde 2013 o projeto acelerou bem, e deixou de ser só uma “sintaxe python like” para uma implementação completa – que permite usar toda a sintaxe da linguagem, inclusive a construção “yield” e “yield from” , permitindo programação assíncrona sem callbacks explícitos.

Desde 2001 sou um fã de Python e isso tem vários motivos: a legibilidade, flexibilidade e previsibilidade da linguagem talvez sejam os maiores – Brython é um projeto que permite o uso de tudo isso no Client Side. Só a funcionalidade de “import” já é um grande diferencial em relação ao javascript “cru” que faz tudo num namespace único,e não tem qualquer suporte direto a módulos ou carregamento programático de partes de um programa. (Em javascript você tem que criar um elemento “script” no HTML, ou carregar um arquivo usando ajax e executa-lo com “eval”). Já o “import” é uma construção natural de qualquer programa minimamente mais complexo.

Ele ainda é um projeto que depende de tração de usuários e uma comunidade para chegar ao mainstream – mas creio que se comparado a projetos Javascript que já ganharam tração no passado, ele oferece muitas vantagens: hoje num projeto Web desenvolvedores tem que incluir vários, as vezes mais de 10, projetos distintos de javascript para ter um pouco mais de funcionalidade que a linguagem em si não tem (e o fato de não ter uma biblioteca padrão é,talvez, a raiz desse problema).

Brython é um projeto que não só oferece a tradução de Python para javascript, mas uma biblioteca padrão adaptada da própria biblioteca do Python (precisa de collections.OrderedDict? é só usar!)., e nessa fase de “aquecimento” o projeto está aberto inclusive a mais funcionalidades para integrar o conjunto (por exemplo, um módulo específico para facilitar a programação multimídia, no estilo feito com Pygame, mas usando o Canvas do html5);

O interessante de ter Python no browser é que alguns dos projetos de Javascript são completamente desnecessários – a biblioteca “underscore_js” ou “lodash” por exemplo, é composta de cerca de algumas dezenas de funções que, podem ser rescritas em 3 ou 4 linhas, quando não numa única expressão de Python – devido a coisas que quando você descreve parecem poucas – mas tem a ver com a maior formalidade e precisão dada aos objetos no Python e a evolução ordenada da linguagem.

O que é Plone e porque ele é tão importante?

O Plone é um sistema de gerenciamento de conteúdos – ou “CMS”: primariamente um sistema que pode ser usado para manter um portal de notícias no ar, alimentado por vários jornalistas e editores, e com milhões de leitores. Ele é totalmente escrito em Python e tira proveito de quase tudo que a linguagem oferece, sendo construído em cima do “Zope” – que é um servidor de aplicações bem completo, com ênfase em segurança, e granularidade de aplicações.

Plone tabém pode funcionar como plataforma Web para alguns projetos que se expandam a partir da idéia de um CMS.

Por outro lado, tem uma frase que costumo dizer sobre Plone: “O que Python tem fácil, Plone tem de difícil” : ele tem várias camadas, algumas existentes apenas por motivos históricos e uma complexidade razoável. Por outro lado, numa instalação limpa, atende a requisitos de acessibilidade, internacionalização e padrões Web -e está pronto para funcionar como um portal de notícias com quase nenhuma customização.

Ele tem uma importância grande par ao eco-sistema de Python por que permite uma contribuição entre projetos muito forte entre pessoas trabalhando em projetos diferentes em países diferentes. O Plone todo se divide em centenas de pacotes Python, todos licenciados sob a G.P.L. – que obriga as pessoas que fazem uso dos mesos a contribuírem suas evoluções no software de volta à comunidade. Isso acabou por criar um ambiente bem próspero para os desenvolvedores. (Algumas pessoas de fora podem se preocupante alguém se “apoderar” de um pacotinho em que elas trabalharam por 3 ou 4 semanas…mas esse pacotinho só faz alguma coisa por que está construído em cima de um trabalho sólido de dezenas de pessoas ao longo de mais de 10 anos – então na verdade, mesmo para quem tem um pensamento egoista, ainda sai bem barato)

Em uma de suas palestras, você afirmou que dá para fazer tudo com Python, realmente dá?

É uma plaletra que ministrei algumas vezes – e mesmo em palestras introdutórias de Python costumo perguntar ao público alguma área da T.I. que acham que Python não seja usado. E não há. Desde a automatização de tarefas em servidores, renderização e vídeo, computação científica, aplicações Web, big data, Python _de fato_ perpassa todas as áreas.

E ainda que em alguns nichos possa haver ferramentas mais especializadas ou melhores, Python é a ferramenta que vai atuar naquele nicho e permitir de forma transparente uma interface com todos os outros.

Precisa guardar suas expressões de matemática simbólica numa base SQL para exibir num portal Web? Python faz as três coisas, sem modificações necessárias.

Agora — nem tudo são tão flores assim – há um nicho importantíssimo – crucial, na verdade, em que Python está bem atrás: o desenvolvimento de aplicações “mobile” – tanto para Android quanto para IOs e outras plataformas. No espírito da pergunta “tem como fazer?” a resposta ainda é “sim” – há projetinhos de Python que permitem o desenvolvimento para Android, a o Kivy focado em aplicações multimídia multiplataforma – mas não há uma “grande plataforma unificada”.

A tendência é que Python se infiltre e caminhe por aí – ainda em 2015 foi formada uma lista de discussão justamente para debater a disponibilização e facilidades – ao estilo da ‘biblioteca padrão” de Python em dispositivos móveis.

Também é um segmento em que eu vejo o Brython em dois ou 3 anos começando a chegar de forma contundente: afinal, rodando no browser ele pode tirar proveito diretamente das APIs disponibilizadas em HTML5 para os vários recursos dos dispositivos móveis. (mesmo hoje, scritps em Brython abrem em funcionam sem problemas nos navegadores Android – e suspeito que no IOs também)

Se uma pessoa estiver aprendendo Python para web hoje, qual framework você indicaria (Django, Flask, Bottle, Web2py)?

É difícil dizer — primeiro, conforme você conhece a linguagem mais a fundo, percebe que os frameworks são “sabores” diferentes para criar aplicações Web: todos eles vão cobrir um conjunto de necessidades que as aplicações web tem em comum. Além dos frameworks citados há vários outros: pyramid, o próprio Plone, Tornado, web.py , watson…

Tradicionalmente se pensa em Flask, Bottle e Web2py como “microframeworks” por que potencialmente uma aplicação Web pode estar autocontida em um arquivo, e em Django como algo “maior e mais sofisticado para projetos maiores”…

Essa divisão é um tanto artificial: embora você não possa colocar um projeto django num único arquivo .py,ele pode ser contido num único “.egg” de Python. O Deploy também não depende em nada do número de arquivos, e em geral acontece com uma atualização do repositório GIT no servidor. E as aplicações com Django ficam bem estruturadas, fáceis de acompanhar, e fáceis de crescer.

Outros como Pyramid e Flask dão bastante flexibiidade quanto à persistência de dados, sistema de login, até o engine de templates – e essa é a tendência, eu creio: frameworks com componentes “plugáveis” em que você pode colcoar um componente que melhor atenda seu projeto, ou mesmo desenvolver um quando os existentes deixam de atender.

Para quem está começando, acredito que o Flask seja uma boa opção – ele tem bastante coisa já integrada e é escalável para projetos maiores – mas, uma coisa que eu sempre enfatizo é: entender a linguagem Python e “como funciona” uma aplicação web é mais importante que qualquer framework em particular.

No Centro de Treinamento da Novatec você fez o primeiro de curso de Flask, o que foi falado? E porque Flask?

Não deixei de dar ênfase aos princípios que citei acima/; o Flask oferece uma série de facilidades para se criar uma aplicação Web. A grande ênfase do curso, além do foco em chegar ao final com uma aplicação Web completa, ainda que simples, foi entender os princípios por trás de uma aplicação Web.

Por exemplo, é fácil abrir um tutorial de Flask e ver que se você coloca uma linha com “@app.route(‘/’) precedendo uma função que retorna o texto “Hello world”, você tem uma aplicação de “hello world” para a web.

Mas aí essa linha fica parecendo mágica – principalmente para quem não está já bem familiarizado com Python: o que faz essa linha? Quem é “app”? Ela é mesmo necessária? E se eu quiser fazer uma aplicação em Flask, mas quiser declarar minhas rotas de outras formas?

Esse curso então procurou dar uma base de Python, e de como funciona uma aplicação Web para que todos os participantes pudessem entender essas questões – e ver quanto mais coisas tem que ser feitas, se esse método não fosse empregado para declarar as funções da aplicação. E também por que, mesmo com todas as facilidades que o Flask traz, uma aplicação Web completa ainda depende de tantos outros pacotes, como flask-login – com as facilidades para gerenciar o login de usuários, e flask-wtf, para gerar formulários.

Tudo levado em consideração o Flask é um ótimo framework – desenvolvido quando Python já contava com anos de estrada, e outros frameworks estavam sofrendo com decisões de projeto tomadas anos antes. Flask teve a oportunidade de ter um “início do zero” quando as pessoas já tinham aprendido com os erros. Como consequência disso temos sua burocracia e tamanho reduzidos, e a possibilidade de usar vários módulos diferentes para tarefas com tecnologias diferentes.

Por exemplo: é bem “fora do caminho” você querer usar uma base de dados não relacional no Django. Em Flask, se você deseja ter alguns tipos de objeto persistidos em SQL e outros de forma não relacional, é só a questão de escrever os modelos de objetos de acordo – não precisa nenhuma mágica, nenhuma configuração para funcionar tudo.

Esses cursos sempre são uma oportunidade de aprendizado – não só para quem faz,mas também para o instrutor, que nesse ambiente de forte interação consegue perceber onde estão as principais dificuldades. É bem provável que em continuidade ao mesmo tenhamos em breve um tratando do Framework, e ensinando a chegar rapidamente nos resultados desejados – e sem nunca tratar um assunto como “mágico”.

Algumas palestras:

#2 Júlia Rizza | Pessoas que me inspiram

julia_rizza

Uma das coisas que mais gosto é conectar pontos. Quando estava aprendendo Python, fiz um curso de Web2py como já comentei aqui, e na mesma época na minha turma estava a Júlia Rizza e o Cássio Botaro. Ambos deslancharam em suas carreiras, se tornando referências no assunto quando se trata de Python/Web2py, e vejo que o curso que fizemos foi um ponto de encontro onde pudemos trocar experiências e nos conhecerem.

Hoje entrevisto a Júlia Rizza (blog), ela ministrou um curso de Web2py na Pycursos. Web2py se destaca por ser o framework ideal de entrada no mundo de desenvolvimento web, e a Júlia irá contar um pouco sobre essa experiência.

Júlia, fale um pouco sobre você

Pois bem, além do meu nome, que você já conhece, tenho 17 anos e trabalho com Python há mais de 3. Sempre me interessei na internet e em como as coisas aqui funcionam, como são construídas, por isso desde os 12 venho descobrindo mais sobre o desenvolvimento voltado para a web. Uma das razões de eu ter procurado aprender Python, inclusive, foi para trabalhar com isso. Motivo pelo qual apenas um ou dois meses depois de começar a aprender a linguagem, já parti para o web2py e hoje exploro vários outros frameworks da linguagem dentro dessa área. Meus maiores motivos de orgulho atualmente envolvem programação em geral e, desde bem cedo, tenho a certeza que quero continuar envolvida nisso. Por isso, tenho orgulho de dizer que sou a mais nova bixete da Engenharia de Computação da UFU (Universidade Federal de Uberlândia), co-founder da Cacho.la e professora de web2py.

Por que Web2py? Quais são as principais vantagens diante outros frameworks como Django e Flask?

O web2py foi criado com uma proposta didática, pois seu criador, Massimo di Pierro, percebia a grande dificuldade de entendimento da turma sobre alguns conceitos. Dessa forma, foi criado um framework que já oferece um molde de aplicação para o programador, com ferramentas prontas, embutidas, e que direciona para boas práticas. Tudo isso, além de guiar o programador dentro do mundo do desenvolvimento web e fazer com que ele adquira conhecimentos mais profundos sobre o que ele realmente está fazendo, agiliza a produção de aplicativos, torna-a mais simples e prática.

Nada melhor que isso para começar a desenvolver para a web ou para agilizar seu desenvolvimento quando você já tem experiência na área, por isso a minha escolha do framework.

Não gosto da comparação entre frameworks, pois vejo que cada um tem suas características próprias e isso faz com que sejam melhores ou piores dependendo do seu objetivo final, da sua aplicação.

Mas, em geral, as vantagens do web2py estão no seu modelo didático, que molda o programador dentro das melhores práticas, como o modelo MVC, e o fato de ser “pronto-para-usar”, ou seja, você não depende de bibliotecas externas para desenvolver, ele já vem com todo o necessário para uma aplicação básica, e você já pode sair programando, além de ter um dos deploys mais fáceis que eu já conheci.

E desvantagens do Web2py, existem?

Como nas vantagens, as desvantagens do framework são consideradas dependendo da aplicação final que você deseja. Mas novamente, em geral, considero que as desvantagens do web2py estão na documentação, que muitas vezes não encontra-se atualizada ou não é bem explicada em determinado ponto, mas creio que isso ocorre pois a comunidade e o framework estão em pleno crescimento, portanto agora que as coisas estão começando a melhorar nesse ponto (e, de qualquer forma, você sempre ganha uma resposta quando recorre à comunidade); além disso, o que pode ser considerado tanto uma desvantagem quanto uma vantagem, dependendo da pessoa, é a pouca liberdade que o framework te dá visto que ele tem fins didáticos, ou seja, ele funciona dentro de um molde e não te dá muita liberdade para sair dele. Caso você esteja começando ou já tenha experiência e goste do molde, isso é bom; caso contrário, é incômodo, mas nada que te proíba de trabalhar com ele.

Como foi a experiência de ministrar um curso online?

Bom, essa foi a primeira turma na minha vida para a qual eu dei aula de alguma coisa, então eu fiquei ansiosa do início ao fim do curso, mas foi uma das melhores experiências que tive e é realmente gratificante poder repassar o meu conhecimento aos outros. Os alunos deram muitos feedbacks legais e a turma foi excelente, apresentando trabalhos e resultados incríveis. Tentei passar nas minhas aulas não só o conhecimento sobre o web2py, mas sobre o desenvolvimento web em geral. Assim, espero ter ajudado os alunos não só com o framework, mas com seus futuros projetos e até mesmo profissões na área. Pretendo seguir com o curso, abrindo novas turmas e melhorando o conteúdo, pois adorei essa experiência.

Quais são as ferramentas/plugins que o Web2py oferece que fazem parte do seu dia a dia desenvolvendo?

Geralmente, utilizo Sublime Text para qualquer tipo de desenvolvimento e pego dicas e snippets do web2py slices para funcionalidades básicas que outras pessoas deixaram prontas (por exemplo, a aplicação do plugin CKEditor), afinal não temos que reinventar a roda. Git é uma ferramenta indispensável para qualquer desenvolvedor, por isso também dei uma ênfase a isso nas últimas aulas do curso. Visto que o web2py já vem com tudo pronto para começar a desenvolver, preciso mesmo somente disso. Por fim, costumo fazer o deploy na PythonAnywhere, que oferece uma ótima estrutura, e tudo fica lindo!

Deixe dicas e comentários para as pessoas que desejam conhecer um pouco mais sobre Python e Web2py e suas considerações.

Conhecer Python e web2py não é difícil, visto que ambos têm crescido muito e tem vários materiais espalhados na web, inclusive recomendo altamente os materiais que você indica no seu blog, mas uma dica sempre importante é: aprenda inglês, independente se você irá fazer serviços apenas em português, que nunca use nada em inglês nas suas aplicações. A questão é, tem gente da Ásia, da Europa, da África, de todo o lugar do mundo contribuindo com materiais e conhecimento sobre essas ferramentas, e toda essa contribuição vem em inglês e você vai crescer muito mais na área se conseguir adquirir conhecimento delas. Junte esse conhecimento com dedicação e interesse na área e no seu próprio crescimento e logo vai estar com ofertas de emprego, projetos e oportunidades nas suas mãos.

E conheça o Web2schools, projeto da Júlia sobre gerenciamento de escolas com Web2py – https://ericstk.wordpress.com/2014/02/12/web2schools-gerenciamento-de-escolas-com-web2py/