Categories
UoPeople

Polimorfismo em Java

Na unidade 6 do curso de Programação 1 aprendemos o conceito de polimorfismo, termo derivado do grego poli — muitos —, e morpheus — forma, estrutura. Uma das tarefas é discutir polimorfismo no contexto de programação orientada a objetos e dar um exemplo de como implementar essa funcionalidade em Java.

Revisando as anotações achei que a minha abordagem foi interessante. Segue para a apreciação, com pequenas modificações.


The world around us is polymorphic. We can see this almost everywhere: people, animals, cars, books, languages, houses. As humans, we seek to differentiate ourselves from others. We like to think and show that we are unique up to a point in which other people still recognize us as humans. Up to a point that they still can relate and interact with us.

Something similar happens with a programming language like Java. The ability to instantiate and handle multiple objects together make complex programs easier to handle, manage and develop. It is expected that complex software keeps evolving and including new functionalities with time. Imagine that if for each new functionality you have, you need to review previous objects and update old code to fit each new features included. It can easily become a complex and time-consuming task. Polymorphism is a powerful solution that avoids a lot of code rework and guarantee program fluidity. Citing Oracle Java documentation definition, “subclasses of a class can define their own unique behaviors and yet share some of the same functionality of the parent class.” (Oracle, 2017)

Imagine the following Language superclass and English subclass.

class Language {
    void toHear(Language hear) {
    // Method to hear some language
}
toSpeak(Language speak) {
    // method to speak some language
    }
}

class English extends Language {
	void toHear(English hear) {
	// specific instructions to hear and understand the English language.
	}
	toSpeak(English speak) {
	// specific instructions to hear and understand the English language.
	}
}

Imagine that in the example above you have multiple language subclasses and want then all to “work” in their own language. Of course that this is a simplified example, but the same method toSpeak would call a specific response for each object (aka each language), a unique behavior, while still sharing some functionality from the parent class.

Reference: Oracle (Ed.). (n.d.). Polymorphism. Retrieved October 18, 2017, from https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html

Categories
UoPeople

Programming 1 – Learning Journal

Escrevi isso no diário de classe de Programming 1 na University of the People. Idos de 2017. Estou revisando minhas anotações para o texto sobre o curso e achei interessante compartilhar isso aqui em separado. Segue.

Learning Journal – Unit 4

The process of developing a program with subroutines was very enlightening to me in the overall programming learning process. If in the Programming Fundamentals course we were presented to conceptual models like flowcharts and pseudocode, now we actually use the tools that break the problem into manageable steps and make complex ideas possible to handle.

I know that it can be a naive feeling, but it is a realization that programs are simpler than I originally imagined. Not in the sense that they are easy. Now it is also much more clear to me the amount of effort behind complex software and systems. But they are done in manageable steps. There are several foundations done many years ago that are still used as the basis to systems that are developed nowadays. I do not remember quite well where I read the phrase from one of the Unix OS developers that was surprised by seeing lines of his code in almost every operating system that we use today.

There is this concept of the human colossus: the realization that we build everything on the shoulders of many scientists and inventors that came before us. Being a “genius” in that sense is always a humble process. Humanity is a collective effort and somewhat this is especially intense when we study software development.

As you can see, my feelings on this unit are more philosophical. Routines and subroutines building on top one of another. Black boxes and the recognition that a lot around us have mysterious internal dynamics that we simply do not think about, just trust, use, and even put our lives on its hands. This makes me understand the importance of the work that I might decide to do and the projects that I might get involved in the future. In our times, lines of code can save many lives, but they also can kill many. If in the last learning journal I talked about the importance of studying math to be a better developer, now I see the importance of philosophy and ethics behind what we do and the tools that we have at our disposal. It should not be only about a good job and salary. I must be about us all, the humanity and the human colossus.

Categories
Recomendação Transformação Digital

O que é Design Humano?

Mês passado compartilhei uma entrevista com Yuval Harari e Tristan Harris. Nela, ambos discutem o poder da persuasão, os limites do intelecto humano e os impactos decorrentes da popularização de serviços digitais. Sociedade, política, economia, nada escapa de ser profundamente influenciado por tais serviços. Estamos aos poucos entendendo que as consequências são muito mais profundas do que alienação, influência indevida em processos democráticos e reorientação dos valores. O próprio conceito de humanidade e de ser “humano” está em transformação.

Temos visto nos últimos anos diversas análises na mídia especializada, especialmente em veículos internacionais. Elas revelam uma mudança de paradigma sobre as grandes empresas de tecnologia e o Vale do Silício. De “salvadores da pátria” para “culpados” por muitos dos problemas atuais. Foco na lucratividade e um modelo de negócios baseado na monetização de dados pessoais choca-se com valores básicos democráticos e individuais.

O que fazer para evitar isso? Existe uma alternativa?

Tristan Harris afirma que sim. Seu projeto “Center for Humane Technology” propõe que é possível alinhar o desenvolvimento tecnológico com as necessidades humanas básicas. A ideia principal é que podemos seguir um modelo que “acolhe” a natureza humana, ao invés de explorá-la.

No dia 23 de abril de 2019 a organização realizou o evento “Humane: A New Agenda for Tech”. Nele, foi apresentado um diagnóstico preciso do cenário atual, bem como sugestões para o caminho a seguir na implementação desse modelo nos produtos e serviços digitais. As ideias de Tristan já influenciam empresas como Facebook e Google nesse sentido. As propostas de Tristan e sua equipe são importantes para entender a direção que muitas empresas no setor de tecnologia estão tomando recentemente no desenvolvimento de seus produtos.

Me identifico pessoalmente com essas ideias e já procuro aplicá-las nos meus projetos. Sinto que é de extrema importância compartilhá-las com desenvolvedores e engenheiros brasileiros, pois os impactos desses serviços influenciam intensamente nossa sociedade. Em geral, consumimos com pouca visão crítica. Pesquisas demonstram, por exemplo, que o Brasil está segundo lugar no tempo gasto na internet: 9 horas e 29 minutos por dia, atrás apenas da Indonésia!

Quais serviços utilizados durante todo esse tempo? Qual é a qualidade do tempo gasto? O que consumimos?

Isso é assunto para outro texto. O interessante é o mapa que Tristan nos oferece para pensar diferente. Por exemplo, o site da iniciativa tem uma página intitulada “Tome o Controle”, que sugere ações concretas para reduzir o impacto dos aplicativos e das redes sociais sobre a nossa atenção e qualidade de vida:

  1. Desligar todas as notificações, exceto as que partem de pessoas.
  2. Desabilitar as cores do celular (Cinquenta Tons de Cinza).
  3. Manter a tela principal do celular apenas com aplicativos utilitários como mapas, calendário, câmera, agenda, etc.
  4. Recarregar o celular fora do ambiente onde relaxamos ou dormimos.
  5. Remover todos os aplicativos de redes sociais do celular.

Mas o principal item da iniciativa, na minha opinião, é o guia de design. É um documento útil para todos os profissionais envolvidos no desenvolvimento ou promoção de produtos digitais. É uma espécie de mapa que elenca as sensibilidades (e fragilidades) humanas e orienta o processo criativo de design posicionando o ser humano no centro.

As ideias de Tristan Harris são mais do bem-vindas, são essenciais. Gosto muito do fato de serem ideias propositivas. O objetivo central não deve ser orientado sob a maximização do tempo, o uso de anúncios e apropriação de dados pessoais. A internet pode ser muito mais do que isso. Na realidade, ela já oferece muito mais, porém é necessário um esforço ativo para explorar os serviços mais benéficos, enquanto é muito fácil cair na armadilha viciante das redes sociais.

Conhecer e aplicar estas ideias é um passo importante para melhorar a nossa qualidade de vida como indivíduos. Para engenheiros de software e designers, aplicá-las é um imperativo moral coletivo.

Categories
UoPeople

Estudantes da UoPeople: Greyce Riquinho

Foto de Greyce Riquinho no escritório da door2door em Berlim, Alemanha.
Greyce Riquinho, estudante da University of the People e programadora na door2door

O interesse por uma universidade ou curso normalmente envolve algumas questões previsíveis: O curso é difícil? Quanto tempo leva para se formar? Tem diploma no final? Quais são as matérias mais difíceis? Ele é reconhecido no Brasil?

Todas são perguntas válidas, porém acredito que elas focam em questões que não tocam no que deveria ser central em tudo o que envolve educação: o que os alunos fazem durante e depois do curso? Existem projetos multidisciplinares? Existe uma empresa júnior? Os alunos são engajados em alguma causa?

Para mim, educação deve gerar, na maioria das vezes (nem sempre, portanto), um produto prático. Educação deve falar com a população, deve desenvolver algo com a sociedade, deve empoderar o indivíduo e a comunidade em seu entorno.

É por isso que histórias como a da Greyce Riquinho, colega na UoPeople, merecem destaque. Histórias que revelam o impacto prático do poder da educação, especialmente quando a educação é flexível e acessível. Sua história está disponível em detalhes no blog oficial da empresa em que trabalha, door2door. É uma história inspiradora, e que revela o poder da educação em conjunto com a determinação de se reinventar. Sem dúvida é do interesse de todas e todos que se interessam em estudar, mas têm dúvidas se existe algum resultado “real” depois de tanto esforço. É claro que a universidade não é individualmente responsável pelo sucesso da Greyce. A história dela é o resultado de inúmeras variáveis, algumas que só ela sabe quais são. Mas não deixa de ser um exemplo de sucesso, e um exemplo de que temos colegas engajadas em projetos e empregos incríveis em todos os cantos do mundo.

Categories
Recomendação Transformação Digital

A entrevista mais importante de 2018: Yuval Harari e Tristan Harris

Yuval Noah Harari and Tristan Harris interviewed by Wired

Yuval Noah Harari, historiador-estrela, escritor aclamado, conselheiro global sobre o futuro da humanidade.

Tristan Harris, ex-designer do Google, diretor e cofundador do Centro para a Tecnologia Humana, um dos mais influentes pensadores na área de design persuasivo.

Os dois estão juntos, a convite da Wired Magazine, para uma interessante conversa a respeito do poder da persuasão em tempos digitais. Grande destaque é dado para os limites da mente humana e como ela é influenciável. É o reconhecimento de que os humanos são animais manipuláveis, e como a crença na escolha humana é uma ilusão.

A conversa é extremamente interessante por reunir um historiador e um cientista da computação, ambos preocupados com os rumos da humanidade. Na minha opinião, eles dão um diagnóstico preciso do momento presente e mostram possíveis caminhos para um futuro mais justo e próspero.

Yuval e Tristan são pensadores essenciais para entendermos o confuso momento do agora. Eles também são relativamente pouco conhecidos no Brasil e no mundo em desenvolvimento, o que é uma lástima. Portanto, fica a recomendação. Com certeza discutirei suas ideias com mais profundidade nas próximas postagens.