Blog Bugginho Academy

Entrevista com Vinícius Thiengo, fundador do blog thiengo.com.br e autor dos livros Refatorando Para Programas Limpos e Receitas Para Desenvolvedores Android

Essa entrevista faz parte de uma série de entrevistas com alguns dos principais nomes da TI no Brasil.

Vinicius Thiengo é Bacharel em Sistemas de Informação pelo Instituto Federal do Espírito Santo, criador do Blog thiengo.com.br, atualmente um dos maiores, quiçá o maior acervo de conteúdo sobre Android em português e autor de dois super livros sobre desenvolvimento de softwares. Confira abaixo a entrevista cedida para o Blog Bugginho Academy.

Você é uma das pessoas que mais gera conteúdo relacionado ao desenvolvimento Android na atualidade, como foi o seu primeiro contato com a área de desenvolvimento de software e quando e como você acabou caindo no mundo mobile?

Apesar de ter formação na área de TI, meu primeiro contato com desenvolvimento foi quando eu estava no ensino médio e fazia também um curso técnico de Automação Industrial.

Se me lembro bem o nome do software era VisualProg e o resultado nem era realmente um software como os desenvolvidos nas populares linguagens de hoje em dia. Mas para mim já era um primeiro contato com desenvolvimento.

Depois disso acabei entrando em duas faculdades, onde optei por continuar na área de TI. Até pensei em ser corretor da bolsa de valores, mas meus objetivos nesta área foram por água abaixo também quando comecei a acompanhar um site de desenvolvimento Web, percebi que eu deveria era seguir na TI.

Durante a faculdade foquei meus estudos em Web, pois o mobile ainda estava engatinhando no Brasil.

As tecnologias PHP, MySQL, Apache, HTML, CSS, JavaScript (jQuery) e Notepad++ foram as que mais utilizei no período de foco no dev Web.

Na jornada de desenvolvedor Web, na graduação, desenvolvi um site de classificados: http://www.villopim.com.br/

A falta de conhecimento em UX e em contabilidade fez com que em pouco tempo eu mudasse de foco, deixando de lado a ideia do Villopim. Nessa época o famoso BomNegócio se chamava Balcão.

Ao final da graduação, já no mercado, continuei criando softwares que eu via como oportunidade de negócio. Mas nesse tempo eu já sabia que teria de ter uma audiência me seguindo para que os lançamentos de novos projetos fossem mais efetivos.

Assim se iniciou o contato com o Dev Android. Eu já tinha iniciado os estudos e optei por começar a publicar conteúdos sobre Android em meu Blog e canal, locais onde já haviam conteúdos sobre empreendedorismo e dev Web.

Acabou que os artigos e vídeos sobre Android se destacaram e eu também me interessei mais por este sistema operacional (SO), assim foquei mais nele, porém ainda desenvolvi outros dois sistemas Web:

  • Uma rede social de perguntas, o Peffans, que hoje somente resta vídeos e uma página no Facebook;
  • Um marketplace para profissionais do marketing digital, o BirdingBox. Também só restam vídeos e página no Facebook como conteúdos públicos.

Existem inúmeros casos de pessoas bem-sucedidas na área de TI sem formação superior, porém no Brasil muitas empresas (não todas) dão muita importância à graduação. Qual a sua formação acadêmica? Você de fato acha importante ter uma graduação na área de TI para atuar como desenvolvedor Android/Mobile?

Sou bacharel em Sistemas de Informação pelo Instituto Federal do Espírito Santo. Sobre a formação na área de TI: pode lhe ajudar, mesmo sendo um curso técnico ou tecnólogo, mas não é crucial, principalmente se você quer empreender como desenvolvedor.

Para ser profissional Android eu realmente não acho que você precise de um curso formal para isso. Estudar por conta própria as documentações, livros e bons artigos na Internet vai lhe ajudar em muito, sem sombra de dúvidas. Pois você estará focado em apenas uma área: desenvolvimento Android.

Mas a pergunta que vem a mente é: até quando você vai querer ficar como desenvolvedor mobile, estudando e trabalhando somente com isso?

É ai que um curso de TI pode lhe agregar mais oportunidades.

Os cursos de TI têm muito mais do que somente a base da informática para lhe oferecer. Você amplia seu Network, conhece novas áreas de atuação dentro da TI e tende a ter mais chances de indicações confiáveis de amigos e profissionais que conhecem seus trabalhos dentro e fora da sala de aula.

Um curso de TI não é somente programação e tecnologia, infelizmente. Até mesmo matéria de ética e sociedade você encontrará pela frente, sem falar das matérias de álgebra e cálculo. Mas a parte boa é que você não precisa começar com um curso pesado.

Se você não está com muito tempo pela frente e também não é muito fã de sala de aula, inicie com um curso de auxiliar de técnico de Informática, depois um técnico em Informática, depois um tecnólogo, … tão logo você estará com ainda mais cursos no currículo.

A ideia é que: somente estudar atualização de API, documentações e livros de linguagens de programação pode lhe atrapalhar no médio longo prazo.

Uma oportunidade de engenheiro projetista ou até mesmo de gerência em TI pode ter como exigência um mínimo possível em curso formal na área de TI.

Resumo: você não precisa de formação para já conseguir colocar as suas ideias para funcionar e começar a fazer o seu dinheiro, como empreendedor ou como CLT. Mas sempre também pense no longo prazo, pois o “gás” que você tem agora para aprender
novas linguagens e tecnologias pode não ser o mesmo em alguns anos.

Usar ferramentas como: Ionic, React Native, Native Script, Xamarin, etc… tem mais a ver com a necessidade do projeto do que com gosto pessoal, mas é nítido que muitas pessoas optam por algumas dessas ferramentas devido a facilidade em ter um App em poucas horas, disponível para “todas as plataformas”. Qual a sua opinião em relação às pessoas aprenderem essas ferramentas antes de aprenderem desenvolvimento nativo (sem intermediários)?

Quando eu iniciei no desenvolvimento Android a tecnologia cross-plataform mais popular era o PhoneGap.

Confesso que fiquei animado com este framework, pois eu mesmo estava vindo do dev Web e tinha já uma bagagem com tecnologias front-end, as mesmas utilizadas no PhoneGap.

Porém notei o problema do dev cross-plataform quando busquei aplicativos modelo desenvolvidos não somente com o PhoneGap, mas também com o Titanium, que era uma outra tecnologia que permitia o desenvolvimento cross utilizando o Ruby.

Na época não gostei da qualidade dos aplicativos e também dos sérios problemas que encontrei expostos na comunidade Android, o principal deles sendo: o delay de carregamento de telas.

Depois da experiência com o PhoneGap ainda não recebi pontos fortes o suficiente que me fizessem largar alguma das linguagens oficiais (Java, Kotlin, C, C++) para adotar alguma dessas tecnologias de desenvolvimento cross / híbrido.

Porém, das citadas: Ionic, React Native, Native Script e Xamarin. Destas, eu ouço somente boas coisas do React Native. Mas sei que o AirBnb, a pouco tempo, deixou de utilizar esta tecnologia por motivos que eles explicaram no seguinte post: https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a

Aos finalmente, o que eu tomo como principio é que se você almeja se tornar um desenvolvedor especialista, de alto nível, no Android a melhor rota é escolher alguma das duas linguagens oficiais de maior produção (Kotlin ou Java – eu particularmente indico a escolha do Kotlin, pois a briga Google x Oracle não parece com um final feliz para a dupla Java Android) e seguir nos estudos e prática.

Mas se você quer rapidamente entrar no mercado, então conhecendo alguma tecnologia de desenvolvimento cross provavelmente você terá mais oportunidades (não necessariamente as melhores), isso, pois você estará atendendo a necessidades Android e iOS, ao menos.

Mas note que você também estará assumindo o risco de essa tecnologia cross escolhida, tecnologia não oficial, deixar de atender alguma das plataformas que você mais está envolvido.

Acredito que hoje o seu blog (www.thiengo.com.br) é o site com maior acervo de conteúdo sobre Android do Brasil. Como surgiu a ideia do blog? Você hoje se dedica exclusivamente a ele?

A proposta inicial do Blog era a de criar uma audiência que pudesse rapidamente ser atingida por mim quando eu lançasse algum novo software.

Porém acabei descobrindo que eu gostava de trabalhar os conteúdos daquela forma: estudar, testar e publicar.

Por um bom tempo ainda mantive o Blog como um criador de audiência, porém em certo ponto vi que na verdade eu deveria começar a levar aquilo de maneira mais profissional, me dedicando para liberar cada vez algo mais completo e consistente.

Hoje o trabalho com o Blog e as redes sociais dele é todo profissional. Com isso também trabalho como consultor (algo que nem nos mais remotos pensamentos eu teria planejado), além de ainda ter clientes de desenvolvimento, apesar de ultimamente eu
mais indicar do que ficar com algum deles.

Pretendo publicar mais livros, realmente gosto de escrever sobre assuntos de tecnologia, Android e Web em especial.

Existe algum motivo especial para você focar mais no Android que no IOS em seus posts? Você tem/teve experiência com IOS? Quais as principais diferenças para o desenvolvedor?

Confesso que até pensei em também estudar o iOS, mas não cheguei nem mesmo a fazer um “Hello World”.

Hoje trabalho com um computador da Apple, mas mesmo assim continuo somente com o Android.

Isso é um principio meu. Não acho que me tornarei melhor no meu ofício se eu começar a abraçar várias tecnologias. Os experts fazem muito isso: estudam algo até se realizarem como especialistas, ai sim eles tentam também outros ares, sem deixar o atual.

Se eu tenho duas oportunidades de contratação, uma para desenvolvedor Android e outra para desenvolvedor iOS, certamente eu buscarei por um desenvolvedor somente Android e um outro somente iOS. Obviamente que vou pesquisar o portfólio deles.

Fazendo isso eu tenho que as possibilidades de obter excelentes desenvolvedores para as vagas que eu tenho são maiores.
Ao menos na área de tecnologia, se o desenvolvedor conhece muitas linguagens / plataformas as chances são de que ele é no máximo medíocre em cada uma delas.

Mas é aquilo: isso é somente um principio que eu tenho baseado no que eu vejo e pratico.

Não tenho artigos científicos para provar que estou certo.

… e com o objetivo de evoluir cada vez mais no Android, optei por ficar somente nessa plataforma mobile.

Mas claro, sei que existem os “pontos fora da curva”, que são excelentes em várias tecnologias.

Como você vê o mercado de trabalho para quem quer atuar como desenvolvedor Android no Brasil? O que você consideraria pré-requisito?

Vejo o mercado bem positivo para desenvolvedores Android, principalmente porque é difícil encontrar empresas que não reconheçam a realidade e necessidade de já ter ao menos um aplicativo Android para atender aos clientes.

Só que também vejo um mercado muito competitivo, pois há muitos cursos que ensinam ao menos o “beaba”, em poucas semanas.

E esse “beaba”, para mim, é:

  • Entendimento sobre os principais componentes Android:
    • Activity;
    • Application;
    • Service;
    • BroadcastReceiver;
    • Fragment.
  • Saber o que é e também a importância da Thread Principal, ou Thread UI;
  • Conhecer o Material Design e saber trabalhar com os principais componentes visuais
    em XML, incluindo o binding de dados via API nativa;
  • Saber consumir API, principalmente as de contexto remoto que trabalham em Thread
    diferente da Thread UI.

O Google anunciou na Google I/O de 2017 a Kotlin como linguagem padrão para desenvolvimento Android, o que gerou alegria para muita gente e fúria para os mais Xiitas da linguagem Java. Como você vê essa mudança? Você já aderiu à Kotlin? Hoje, um ano depois, você acha que a mudança foi positiva (no que tange a vantagens ao desenvolvedor) ou foi só “negócios”?

Certamente em termos de Google a mudança deve ter ocorrido devido a negócios, sendo que até mesmo a abertura do Android como open source ocorreu para que houvesse a rápida adoção dos desenvolvedores (isso está no Blog oficial deles, logo nos primeiros posts de 2007).

Sem falar no problema que a Oracle vem criando para uso do Java, com o Kotlin o Google não teria de enfrentar os mesmos.

Eu já conhecia o Kotlin, mas ainda não o utilizava no desenvolvimento Android, pois para mim era somente mais uma linguagem não oficial que permitia o desenvolvimento de aplicativos, até mesmo o Basic pode ser utilizado para o desenvolvimento de apps Android.

Depois do anúncio sobre o Kotlin ter se tornado também uma das linguagens oficiais da plataforma, resolvi estudar mais a fundo. Hoje, em Android, trabalho somente com o Kotlin. Sem sombra de dúvidas que é impressionante a modernidade da linguagem.

O aumento de produção é evidente, mas para isso ainda é preciso passar por uma curva de aprendizagem, curva que, por mais incrível que pareça, não é tão grande, tendo em mente que o necessário, o “beaba”, já está presente em inúmeros livros e cursos em português.

Obviamente que eu sei que um desenvolvedor Kotlin não está na frente de um dev Java, isso é pessoal e existem vários excelentes desenvolvedores Java que não vão mudar para o Kotlin e continuarão criando apps do mais alto nível possível.

Mas para aqueles que não são especialistas em Java ou que estão apenas iniciando no Android, eu seguramente recomendaria o Kotlin, pois os riscos com essa linguagem, tendo em mente os problemas entre Google e Oracle, são menores e, como informei:
para aqueles que não são especialistas em Java, a produção em Kotlin deve ser maior.

Hoje, um ano depois, se parte do objetivo era atingir ainda mais o mercado de desenvolvedores, no meu ponto de vista o Google acertou, pois com conhecimento de causa, devido ao Blog e ao canal, sei que a maioria das pessoas hoje no dev Android são iniciantes: um profissional contador que teve uma ideia de aplicativo e quer ele mesmo construi-lo, por exemplo.

Com o Kotlin, esses que estão iniciando no dev têm a entrada facilitada.

Vale ressaltar que o Kotlin também é uma linguagem JVM e têm 100% de interoperabilidade com o Java.

Você escreveu o livro “Refatorando Para Programas Limpos” que está em sua 2a edição. Sabemos que “Código limpo” é um tema de extrema importância para qualquer desenvolvedor de softwares, independentemente da plataforma que atue, mas infelizmente é um assunto muito negligenciado por grande parte dos desenvolvedores brasileiros. Fale um pouco dessa sua obra e como as pessoas podem adquiri-la.

Na verdade o código limpo e a engenharia de software em geral são muito negligenciados ainda em qualquer lugar.

Quando paramos para estudar sobre o assunto, as principais obras são as gringas. E lendo elas é percebível que o americano, o britânico, o russo, … têm os exatos mesmo problemas de “modo de codificar” que encontramos no Brasil, Argentina, …

Apesar de eu ter passado por matérias de engenharia de software na época da faculdade, entendi a importância dos padrões de projeto e codificação limpa somente quando entrei no mercado e comecei a fazer besteira.

Vi o problema que era atualizar um projeto sem normalização até mesmo nos rótulos de variáveis, métodos e classes.
Entender a importância dos rótulos com significado e da responsabilidade única de classes e métodos, isso já muda consideravelmente o nível de codificação de qualquer desenvolvedor profissional.

O livro “Refatorando Para Programas Limpos” nasceu depois de eu investir um bom tempo estudando somente isso: padrões de projeto, padrões de implementação, refatoração para padrões; e codificação limpa.

Eu até passei um tempo publicando no Blog conteúdos sobre engenharia de software.

Então resolvi fazer algo mais completo, explicando primeiro a importância de entender os benefícios da engenharia de software para depois partir para técnicas de código limpo, padrões e refatoração.

Fiquei feliz com a aceitação da primeira edição e então criei a segunda que veio com 10 novos capítulos e o texto todo revisado.

Todos os meus livros são registrados na Agência Brasileira do ISBN e é possível adquiri-los direto das páginas de venda que disponibilizo no Blog.

A página do “Refatorando Para Programas Limpos” é a seguinte: https://www.thiengo.com.br/livro-refatorando-para-programas-limpos

A vantagem do investimento no estudo de engenharia de software é que o conteúdo não fica depreciado. Um dos principais e mais vendidos livros da área até hoje é da década de 90.

Você pode conhecer um pouco mais e acompanhar o trabalho de Vinicius Thiengo nos links abaixo:

  • YouTube: https://www.youtube.com/user/thiengoCalopsita
  • GitHub: https://github.com/viniciusthiengo
  • LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180
  • Udemy: https://www.udemy.com/user/vinicius-thiengo
  • SlideShare: https://www.slideshare.net/VinciusThiengo
  • Facebook: https://www.facebook.com/thiengoCalopsita
  • Twitter: https://twitter.com/thiengoCalops
  • Google +: https://plus.google.com/+ThiengoCalopsita

Bugginho Developer

Comentar

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Your Header Sidebar area is currently empty. Hurry up and add some widgets.