Antes de adentrarmos nas complexidades técnicas da inteligência artificial (IA), é imperativo compreender o lugar dessa tecnologia no contexto humano. A tecnologia, incluindo a IA, não é apenas uma ferramenta, mas uma extensão de nossa capacidade de criar e inovar, transformando fundamentalmente a maneira como vivemos, trabalhamos e interagimos uns com os outros. No entanto, essa transformação é acompanhada por desafios éticos e sociais
que precisam ser abordados com uma abordagem humanista e realista.
No contexto humano, a tecnologia e, em particular, a IA, desempenham um papel ambivalente. Por um lado, a IA pode aprimorar significativamente nossa qualidade de vida, aumentar a eficiência em diversas áreas, como medicina, finanças e transporte, e até mesmo salvar vidas através de diagnósticos médicos mais precisos e tratamentos personalizados. No entanto, por outro lado, ela levanta questões preocupantes, como a privacidade de dados, a segurança cibernética e o temido desemprego tecnológico, à medida que sistemas automatizados substituem certas funções de trabalho.
Aqui, a filosofia humanista possui um papel crucial. O humanismo coloca o indivíduo no centro de suas preocupações, enfatizando o valor intrínseco de cada ser humano. Essa filosofia defende a ética, a razão e o respeito pelos direitos humanos como princípios fundamentais. No contexto da IA, o humanismo nos lembra da importância de desenvolver e utilizar essa tecnologia de forma responsável, considerando sempre seu impacto nas pessoas. Isso significa garantir que os algoritmos de IA sejam justos, transparentes e não discriminatórios, e que o uso dos dados seja feito com respeito à privacidade e à dignidade dos indivíduos.
Além disso, o humanismo também ressalta a importância da educação e do acesso equitativo à tecnologia. À medida que a IA se torna mais onipresente, é vital que todos tenham a oportunidade de entender e se envolver com essa tecnologia, para que possamos colher seus benefícios de forma igualitária e construir uma sociedade mais justa. No entanto, enquanto abraçamos o humanismo, também devemos adotar uma abordagem realista em relação à IA. O realismo nos lembra de que a tecnologia, incluindo a IA, não é uma panaceia para todos os problemas humanos. Ela pode apresentar limitações e desafios, como o viés nos algoritmos e a dependência excessiva de sistemas automatizados. Para lidar com essas questões, precisamos de uma abordagem equilibrada e pragmática.
No contexto da IA, o realismo nos incentiva a reconhecer os riscos e limitações da tecnologia e a trabalhar proativamente para mitigá-los. Isso envolve a implementação de regulamentações adequadas, o desenvolvimento de estratégias de segurança cibernética e a contínua monitorização dos sistemas de IA para detectar e corrigir possíveis vieses ou erros. De forma geral, a Inteligência Artificial é um campo multidisciplinar que busca criar sistemas e máquinas capazes de realizar tarefas que, normalmente, exigiriam inteligência humana, como aprendizado, raciocínio, tomada de decisões e reconhecimento de padrões. No
entanto, quando pensamos em IA de forma utópica, podemos ser tentados a imaginar máquinas dotadas de consciência e autoconhecimento, capazes de replicar plenamente a complexidade da mente humana.
Esse idealismo muitas vezes é retratado na ficção científica, na qual a IA assume características quase mágicas, como compreensão emocional, criatividade ilimitada e uma compreensão profunda da natureza humana. Embora essas representações sejam fascinantes, é importante lembrar que a IA atual está longe de atingir esse nível de sofisticação, sendo, na realidade, um conjunto de algoritmos e sistemas projetados para executar tarefas específicas com base em dados e regras programadas.
O conceito quase distópico da IA se distancia da realidade técnica, destacando a importância de abordagens humanistas e realistas em seu desenvolvimento e aplicação. Enquanto o humanismo nos lembra do valor intrínseco da humanidade e da ética na utilização da IA, o realismo nos orienta a encarar a tecnologia com objetividade, reconhecendo suas limitações e desafios. Em meio às expectativas utópicas, é essencial mantermos uma visão equilibrada da IA, reconhecendo-a como uma ferramenta poderosa, porém, que ainda está em evolução, e que sua aplicação deve ser guiada por valores éticos e uma compreensão realista de suas capacidades atuais. Assim, podemos buscar benefícios tangíveis e, ao mesmo tempo, enfrentar os desafios complexos que a IA apresenta à nossa sociedade.
Para ilustrar, suponha que você deseja um assistente virtual em sua casa para ajudar com tarefas diárias. O idealismo hollywoodiano seria ter um assistente que não só executa suas ordens, mas também compreende suas emoções, sugere atividades com base em suas preferências e até mesmo faz piadas para animar seu dia. Esse assistente, na visão futurista, seria como um amigo virtual perfeito, sempre atento às suas necessidades e desejos.
No entanto, na realidade, a IA atualmente disponível é mais semelhante a um assistente robótico prático, como um aspirador de pó autônomo. Ele pode realizar tarefas específicas, como limpar o chão de forma eficaz, mas não possui consciência, emoções ou capacidade de compreender profundamente seus sentimentos. Ele não pode fazer sugestões criativas nem entender suas nuances emocionais.
Sistemas como o ChatGPT se aproximam muito mais de um “assistente robótico prático” do que de uma entidade com consciência e compreensão emocional. Isso ocorre devido às limitações tecnológicas subjacentes a essas tecnologias. O ChatGPT e sistemas similares operam com base em algoritmos de aprendizado de máquina e processamento de linguagem natural, o que lhes permite gerar respostas contextuais e úteis, mas sem consciência, sentimentos ou uma verdadeira compreensão do mundo e das emoções humanas.
Eles funcionam a partir de padrões estatísticos aprendidos a partir de dados, fornecendo soluções práticas para tarefas específicas, mas não são capazes de replicar a complexidade da mente humana. Portanto, ao considerarmos o uso da IA, é importante manter expectativas realistas sobre suas capacidades e limitações, reconhecendo sua utilidade prática, mas também sua ausência de consciência e emoção.
Em um mundo onde a tecnologia, em particular a Inteligência Artificial, desempenha um papel cada vez mais central, é vital que adotemos uma abordagem humanista e realista para sua utilização. O humanismo nos recorda da importância de colocar os valores humanos, a ética e o respeito pelos direitos individuais no centro de nossas ações, garantindo que a IA seja desenvolvida e aplicada de maneira responsável, justa e equitativa. Além disso, o realismo nos
lembra de reconhecer as limitações e desafios dessa tecnologia, sem cair em idealizações utópicas.
À medida que a IA continua a desempenhar um papel cada vez mais significativo em nossa sociedade, devemos permanecer vigilantes, garantindo que essa ferramenta poderosa seja usada para melhorar nossas vidas e enfrentar os problemas complexos que enfrentamos. Devemos promover a transparência, regulamentação adequada e educação para que todos tenham a oportunidade de compreender e se envolver com a IA.
O verdadeiro perigo da Inteligência Artificial não reside em uma possível dominação física em escalas mundiais, como frequentemente retratado na ficção científica, mas sim na possibilidade de um uso desgovernado, inconsciente, incontrolável e socialmente deslocado dessa tecnologia. O risco iminente não é uma rebelião de máquinas, mas sim a potencial criação de uma lacuna social insuperável. Um uso inadequado da IA pode resultar em uma desconexão devastadora entre o avanço tecnológico e as necessidades humanas básicas.
Pode criar uma sociedade onde a tecnologia avança rapidamente, enquanto muitos são deixados para trás, tanto digital quanto socialmente. Esta disparidade pode gerar uma avalanche de desabrigados sociais e digitais, marginalizando indivíduos e comunidades inteiras que não têm acesso às oportunidades proporcionadas pela IA. Portanto, é imperativo que avancemos na implementação da IA com consciência, responsabilidade e consideração pelas implicações humanas, garantindo que essa tecnologia beneficie a humanidade como um todo, em vez de aprofundar ainda mais as divisões em nossa sociedade.
O Tribunal de Justiça do Piauí (TJ-PI) lançou, o sistema JuLIA (Justiça AuxiLiada pela Inteligência Artificial). O objetivo desse projeto é otimizar a rotina do tribunal e automatizar tarefas, trazendo maior eficiência e acessibilidade à Justiça.
Desenvolvido pelo Laboratório de Inovação do Tribunal, o OpalaLab, a JuLIA é uma solução computacional projetada para aprimorar os processos jurídicos.
A IA foi desenvolvida sob supervisão do nosso professor e coordenador de Engenharia de Software, Dimmy Magalhães , a IA está em funcionamento desde o dia 11 de outubro. Mais um exemplo de como a IA pode facilitar a nossa vida.
De acordo com Dimmy Magalhães, servidor do OpalaLab, o sistema JuLIA é resultado de nove meses de trabalho e contempla tanto a otimização dos processos internos do tribunal quanto a melhoria no atendimento aos juízes e partes envolvidas.
“Nós definimos a JuLIA como um conjunto de soluções de inteligência computacional que trabalha coordenado, visando melhorar a eficiência e a acessibilidade da justiça piauiense”, destacou.
O sistema é composto por quatro áreas principais: processual, análise de dados, acesso à informação e comunicação ativa.
A principal função do sistema é a comunicação ativa, integrada ao WhatsApp. A ferramenta permite que a Justiça se comunique de maneira rápida e eficiente, assemelhando-se ao modelo do ChatGPT. Ela tem a capacidade de responder questões sobre o próprio Tribunal, a base de dados do sistema está alimentada com 2,2 bilhões de dados.
Por meio do uso de inteligência artificial e processamento de linguagem fácil, a JuLIA fornece informações sobre o tribunal e o progresso dos processos.
Uma das funcionalidades é a intimação automática. O módulo de intimação da JuLIA identifica qualquer julgamento, colegiado ou monocrático, calcula o prazo de Intimação e movimenta o processo no PJe. Os processos serão intimados automaticamente em menos de 24 horas no projeto piloto.
Dimmy Magalhães destaca que processos que demoravam até um ano para serem baixados, agora são identificados e baixados em poucos dias. Além disso, a JuLIA irá contribuir para reduzir custos, melhoria das métricas de qualidade da prestação jurisdicional e maior proximidade com a população.
As startups vêm diversificando suas atuações para atender nichos específicos de mercado, para além dos formatos tradicionais. Diversos setores estão fazendo uso dos recursos tecnológicos para trazer inovações em suas áreas. No ramo da educação, as edtechs (empresas de tecnologia voltadas para o setor educacional) vem ganhando espaço.
De acordo com um mapeamento realizado pelo Centro de Inovação para a Educação Brasileira (CIEB) e a Associação Brasileira de Startups (Abstartup), existem 364 edtechs no Brasil, espalhadas por 25 estados brasileiros, atuando principalmente na educação básica. A Associação Brasileira de Startups define as edtechs como startups que fazem o uso de alguma forma da tecnologia, como facilitadora de processos de aprendizagem e aprimoramento dos sistemas educacionais.
Presidente da organização, Amure Pinho explica que o mercado das edtechs tem mostrado um grande potencial de desenvolvimento. “Inclusive é o segundo maior mercado de startups, perdendo apenas para as fintechs. Temos uma população gigantesca e durante muitos anos houve um grande incentivo e apoio governamental na formação acadêmica”, aponta. O potencial das edtechs é tão grande que o setor cresce, em nível mundial, 17% ao ano, e deve faturar US$ 252 bilhões até 2020, segundo o relatório EdTechXGlobal.
O empreendedor Jan Krutzinna é o CEO da EduSim, edtech voltada para melhorar o ensino de inglês na educação básica. “A educação é minha paixão porque caminha com minha história pessoal e abre muitas portas para as pessoas. Essa área chama muito atenção em termos de idealismo por causa do contato humano. Existe uma necessidade de aumentar as habilidades das pessoas cada vez mais porque as economias estão ficando mais sofisticadas e demandando mais dos profissionais”, observa.
Para Jan, essa exigência maior é uma tendência positiva para o setor educacional. “Temos muitas pessoas querendo colaborar. O que importa é trazer pessoas com experiência em sala de aula, que conheçam a realidade de um professor e a consigam traduzir em produtos digitais. Eu vejo um potencial realmente enorme nas edtechs se conseguirmos alinhar as forças entre o governo e setor privado”, pondera.
CEO da Trybe, escola voltada para as profissões digitais mais procuradas pelo mercado de trabalho, Matheus Goyas já possuía experiência nos setores de tecnologia e educação quando se juntou com amigos de infância para observar os desafios da educação conectados a transformação do mundo digital.
“Vimos o mundo passando por uma mudança de paradigma econômico, mas sem ter a mão de obra necessária para atender essa demanda. No Brasil, o problema é ainda maior por não ter formação em digital skills. Temos uma grande número de pessoas desempregadas e sem qualificação e empresas que não conseguem contratar. Isso prejudica o desenvolvimento do país”, salienta.
Matheus percebe que as pessoas, em geral, estão se conscientizando que é a educação é a pauta do momento. “Nos empreendedores não têm refletido tanto como na população, porque existem outros setores mais atrativos. Mas tem gente apaixonada atuando na área, mas ainda não é a agenda de preferência dos empreenderes”, avalia.
À frente da plataforma de ensino on-line voltada para empreendedores EduK, Eduardo Lima observa uma quebra de paradigma em relação à educação à distância. “As pessoas estão percebendo que ela é tão boa quanto, e às vezes até melhor, do que o modelo tradicional. Tem empresas construindo conteúdo de muita qualidade e professores de altíssimo gabarito que estão ensinando pela internet. É uma transição natural, porque elas tornam a educação mais acessível e flexível. As edtechs tem um propósito muito transformador, mas ainda é um mercado muito jovem”, explica.
Juntando educação, saúde e tecnologia, a MedRoom vem com a proposta de fazer treinamentos na área da saúde com realidade virtual. CEO da edtech, Vinicius Gusmão percebe que o setor possui vários problemas, o que se traduz em muitas oportunidades.
“O grande desafio é escalar o projeto. A tecnologia é incrível e dá para fazer muita coisa com ela, mas não garantir o acesso democratizado a todo mundo, o que seria o ideal do ponto de vista educacional. Então temos limitações, ainda mais em um país que não tem ainda uma cultura muito forte em inovação tecnológica.”
Amure Pinho opina que um dos maiores obstáculos de se trabalhar com edtechs ainda é a falta de regulamentação. “O controle do governo em alguns requisitos ainda engessa um pouco a educação que pode ser transformada na ponta. Também temos uma formação que ainda é um pouco distante das necessidades do mercado, fazendo com o que o profissional precise se especializar mais. Outro desafio é que nós temos uma geografia e economia muito complexas e grandes, então você não consegue levar o mesmo nível de acesso à informação à todos os lugares”, analisa.
Matheus Goyas ressalta que é importante que o empreendedor tenha a humildade para reconhecer que a solução da edtech dele não vai resolver todos os problemas da educação. “Solucionar esse gargalo só vai ser possível com um trabalho em conjunto entre empreendedores, empresas, governo e educadores. A educação por si só é muito complexa”, garante. Ele também percebe que a questão geográfica é um grande limitador, tanto em questões culturais como de infraestrutura.
Jan Krutzinna concorda que a distribuição é um dos maiores desafios dos empreendedores de edtechs. “Muitas empresas são criadas com ótimas ideias mas têm dificuldades de entregar no ponto final. O sistema público também é difícil de colaborar. Tem muito potencial para crescer, mas é preciso evoluir em muitas coisas tecnológicas e conseguir recrutar talentos, o que ainda é outra dificuldade que encontramos”, revela.
Para Eduardo Lima, o maior desafio é encontrar uma proposta de valor suficientemente boa para que os clientes consumam e gerando caixa para a empresa. “São modelos que muitas edtechs ainda não conseguiram alcançar. Depois disso, é fidelizar o cliente, como em qualquer outra empresa”, opina.
Vinicius Gusmão acredita que as edtech estão no bom caminho, mas ainda falta aparecerem mais e serem criados mais incentivos para que elas deslanchem. “Talvez o Brasil ainda não tenha abraçado totalmente a onda das edtechs. O que talvez falte é um bom case de sucesso que mostre o potencial do mercado”, pondera.
Para quem trabalhar no setor, especialistas afirmam que características como ser apaixonado por transformar a vida das pessoas, focar na qualidade, ter uma conexão pessoal com a área da educação, ser empático, paciente, resiliente, ter compromisso e foco ao longo prazo e gostar de se relacionar com as pessoas, além de ter um profundo alinhamento e foco obsessivo nos clientes/estudantes.
Profissionais nas áreas de desenvolvimento de software, programação, análise de dados, front end, design, interface, marketing digital, marketing de conteúdo, mídias sociais, vendas e experiência do usuário encontrarão muitas oportunidades de trabalho nas edtechs.
Publicado por Blog Na Pratica
Pesquisadores desenvolveram sistema baseado em Inteligência Artificial (IA) que permitiu a uma mulher com paralisia grave falar por meio de avatar digital. A equipe implantou 253 eletrodos conectados à superfície do cérebro da paciente, interceptando os sinais cerebrais e enviando-os para análise.
Os algoritmos de IA foram treinados para reconhecer os sinais cerebrais de fala e criar sistema que decodifica palavras a partir de fonemas. A voz utilizada foi uma gravação antiga da paciente.
Além do uso na fala, os implantes cerebrais também têm sido aplicados para recuperar movimentos e sensações de pacientes tetraplégicos. A tecnologia utiliza chips para ler e interpretar a atividade dos neurônios do paciente, permitindo o controle dos braços por meio do pensamento.
Outro caso impressionante envolve um homem com paralisia que voltou a andar após um implante cerebral. O dispositivo implantado é capaz de detectar a atividade neuronal relacionada ao movimento das pernas, permitindo ao paciente recuperar sua mobilidade.
Além desses casos, os implantes cerebrais também estão sendo utilizados no tratamento de câncer no cérebro. Nessa aplicação, um dispositivo de ultrassom é combinado com a administração de remédios quimioterápicos para direcionar o tratamento aos vasos sanguíneos cerebrais, tornando o tratamento mais eficaz e direcionado.
O curso de Engenharia de Software iCEV é o primeiro e melhor do Piauí! Aqui o aluno estará apto a entrar no mercado, mas também pronto para pesquisar inovações, aliando conhecimento e prática – ele escolhe o caminho ou os caminhos que quer seguir.
O iCEV sempre traz convidados de peso e realiza verdadeiras aulas-experiências para acrescentar na formação acadêmica e na prática dos futuros engenheiros de software. Confira:
No iCEV o estudante de engenharia de software já aprende programação nos primeiros períodos e começa a desenvolver seus próprios games desde cedo! A metodologia do curso é diferenciada e aposta em eventos internos de tecnologia na qual os alunos têm que resolver problemas complexos e elaborar seus próprios produtos inovadores de tecnologia.
Eventos como Chess Challenge, Code Battle, Game Jungle e Game Jam aguçam as soft skills e hard skills dos alunos.
Conheça mais sobre cada evento:
O Campeonato de Xadrez, reuniu mais de 50 participantes em 22 equipes que desafiaram seus conhecimentos computacionais numa batalha de Inteligência Artificial.
Os participantes construíram programas de Inteligência Artificial (IA) e ensinaram as melhores decisões a serem tomadas num jogo de xadrez. Essas IAs competiram entre si.
Os estudantes foram desafiados com problemas que exigem sólidos conhecimentos em algoritmos e estruturas de dados. Além de testar os conhecimentos dos alunos, a competição era premiada e valia pontos na prova para os ganhadores.
“Game Jungle”, uma competição interna de programação de jogos.O desafio era construir um game do zero levando em consideração diversos critérios comojogabilidade; originalidade; gráficos; trilha sonora; entre outros.
Nossos alunos de Engenharia de Software participaram da Hackathon, a Maratona de Programação iCEV. A atividade foi uma competição interna dos estudantes de Tecnologia, de todos os períodos. O termo hackathon é uma junção de duas palavras em inglês: “hack”, que, nesse caso significa programar, e “marathon”, que é maratona.
O iCEV, sediou em Teresina o THE Game Jam – evento que aconteceu simultaneamente em todo o mundo. Em 48 horas, estudantes de tecnologia, desenvolvedores profissionais e apaixonados por jogos, elaboraram games com o tema “reparo”, tema escolhido pelo Global Game Jam 2020.
É assim para o engenheiro de software formado pelo iCEV, que está preparado para muitas oportunidades nacionais e internacionais. Além de empreender, o profissional pode atuar com desenvolvimento de softwares, gerenciamento de projetos, arquitetura de produtos, etc.
A tecnologia é um dos mercados que mais cresce. O salário médio de um Engenheiro de Software no Brasil é de R$9.480 por mês, +303% acima da média salarial brasileira.
Fonte: jobbydoo
Só no iCEV o estudante conta com a Fábrica de Software BITICEV. O aluno alia teoria e prática no desenvolvimento de projetos e soluções para problemas reais, voltados para o mercado de trabalho.
O iCEV investe em internacionalização, estreitando os laços com grandes players do mercado mundial de tecnologia, assim como Red Hat, Oracle e Amazon.
A Stability AI ficou famosa nos últimos meses com o Stable Diffusion, modelo de geração de imagens com inteligência artificial. Agora, ela vai partir para o campo da escrita. A empresa anunciou uma alternativa ao ChatGPT chamada StableLM, com código aberto.
O StableLM gera texto prevendo qual o próximo token, como é chamado o fragmento de palavra. A sequência começa com uma informação fornecida por um ser humano.
O funcionamento é bem parecido com o GPT-4, modelo grande de linguagem (LLM, na sigla em inglês) que serve de base para o ChatGPT.
“Modelos de linguagem formarão a espinha dorsal da nossa economia digital, e queremos que todo mundo possa opinar nesses projetos”, diz a Stability AI no blog post anunciando a novidade. “Modelos como o StableLM demonstram nosso compromisso com tecnologias de inteligência artificial transparentes, acessíveis e solidárias.”
Por enquanto, o StableLM está em fase alpha. Ele foi disponibilizado no GitHub, nos tamanhos de 3 bilhões e 7 bilhões de parâmetros. A Stability AI promete que os modelos de 15 bilhões e 65 bilhões de parâmetros serão liberados em breve.
Os parâmetros são variáveis que um modelo usa para aprender a partir dos dados de treinamento. Números menores significam que os modelos podem ser mais eficientes, podendo rodar localmente em notebooks ou smartphones.
Por outro lado, eles precisam de projetos mais elaborados para conseguir entregar bons resultados usando menos recursos.
O StableLM é mais um dos modelos grandes de linguagem a prometer desempenho próximo ao do GPT-3, da OpenAI, com número menor de parâmetros — o GPT-3 usa 175 bilhões.
Outros são o LLaMA, da Meta; o Alpaca, de Stanford; o Dolly 2.0; e o Cerebras-GPT.
Os modelos foram disponibilizados sob a licença Creative Commons BY-SA-4.0. Isso significa que projetos derivados devem dar créditos ao autor original e ser compartilhados usando a mesma licença.
Por enquanto, é possível testar uma versão do modelo de 7 bilhões de parâmetros já customizada para chatbots no Hugging Face.
Para analisar a evolução da internet, é possível dividir a história da Web em alguns estágios principais com base nas tecnologias e transformações aplicadas no período. É nesse contexto que surge o termo Web3, indicado para apontar uma nova fase entre as formas de conexão.
A Web3 é um conjunto de tecnologias que representa um novo marco durante a evolução da internet. Tem como grande premissa a descentralização da Web, reforçada por conceitos como o blockchain e a tokenização digital, indo na contramão de um cenário em que dados e plataformas ficam concentradas em Big Techs.
O termo foi criado por Gavin Wood, fundador da plataforma de blockchain Ethereum, em 2014. Vale a pena ressaltar que o conceito é muito abstrato e, em algumas situações, ainda reside no campo teórico. Mas, antes de entender o que significa essa terceira etapa, é preciso definir o que veio antes.
Esses termos foram usados para definir outras grandes evoluções no uso da internet. Não há um único ponto de partida que separa as épocas, mas pesquisadores analisam um conjunto de características semelhantes entre os períodos.
O início da World Wide Web, entre o final da década de 1980 e a década de 1990, marca esse primeiro estágio. Os sites eram principalmente estáticos, limitados a textos, hiperlinks e poucas imagens.
Por conta dessas características, a Web1 limitou a experiência dos usuários somente à leitura, com poucas opções de interação e dificuldade para obter um site próprio.
No início dos anos 2000, já era possível vivenciar a segunda evolução da internet: a Web 2.0 abria espaço para a interação entre usuários. Mensageiros instantâneos, espaços de comentários em sites e plataformas de blogs viabilizavam a criação de conteúdo próprio.
O grande salto veio com as redes sociais — as plataformas protagonizaram a experiência de ficar online e ampliaram as formas de produção (e monetização) de conteúdo. Enquanto a Web 1.0 se limitou à leitura, a etapa seguinte permitia ler e criar ao mesmo tempo.
Além disso, a Web 2.0 também representou a chegada da portabilidade e dos aplicativos. Com a opção de acessar a internet em qualquer dispositivo, foi possível desenvolver plataformas versáteis e que atendessem a diferentes demandas.
O resultado é a mudança nas formas convencionais de consumo: o pedido de comida por telefone foi substituído pelo app de delivery, o táxi deu espaço para o Uber e por aí vai.
Uma das principais consequências da “Web2” foi a centralização dos dados nas Big Techs. Meta, Amazon, Google e outras gigantes da tecnologia concentraram as informações dos usuários e mantiveram o controle dos hábitos na internet entre poucos produtos.
Se a Web2 centralizou o fluxo de dados entre grandes empresas, a Web3 surgiu para descentralizar esse processo. A ideia envolve usar tecnologias de blockchain para dar poder aos usuários e permitir que eles gerenciem os próprios dados.
De forma resumida, o blockchain pode armazenar as informações sobre a propriedade de um ativo digital e disponibilizar os registros publicamente. Assim, as pessoas não dependeriam dos servidores de uma grande empresa para acessar essa informação, enquanto toda a comunidade de usuários pode manter o registro ativo, sem a participação de empresas na intermediação.
“A Web3 elimina a necessidade de intermediários porque oferece a possibilidade de realizar transações seguras diretamente entre os usuários (peer-to-peer), por meio das novas tecnologias baseadas na blockchain, como os smart contracts”, explica a CEO da consultoria especializada em Web3 Go Digital Factory, Adriana Molha. “É a era da propriedade, da descentralização e das comunidades”, complementa a executiva.
Muitos dos conceitos da Web3 já são aplicados nos mercados de criptomoedas, tokens não fungíveis (NFT) e outros ativos digitais — por isso é muito difícil falar sobre um sem mencionar o outro. Esse estágio da web promete que todos poderão ler, criar e possuir alguma propriedade digital dentro da internet.
Adriana Molha reforça a importância do blockchain para essa função. “Ao mesmo tempo em que oferece a privacidade dos dados, também garante a propriedade do conteúdo produzido pelo usuário”, explica. “Em outras palavras, aquilo que é seu na Web3, é seu mesmo. Está registrado nestas redes descentralizadas chamadas Blockchains e não no servidor de alguma empresa”, prossegue.
A Web3 possui alguns pilares principais:
Aqui, a resposta fica um pouco mais complicada. Existem alguns teóricos que usam uma separação entre Web3.0 e Web3: nesse caso, a nomenclatura “3.0” representa alguns padrões de acesso a sites, enquanto a Web3 é usada para englobar todas as outras tecnologias.
Um conceito muito atribuído à Web 3.0 é o de web semântica, ou seja, uma padronização da internet que pode ser compreendida por humanos e máquinas. Isso muda a interpretação dos dados e permite que os algoritmos desenvolvam respostas e antecipem problemas.
Então, é comum que alguns pesquisadores usem o termo Web 3.0 para abordar a web semântica e Web3 para definir os processos de segurança e descentralização.
Quando o assunto é a criação de novas experiências para a internet, o metaverso é um exemplo mencionado com frequência. Apesar do espaço virtual não ser um conceito recente, ele pode ser combinado com as tecnologias da Web3 para aumentar sua popularidade.
Esses dois temas se interligam quando envolvem token e ativos digitais. “O metaverso está inserido dentro do contexto da Web3 a partir do momento em que as transações nesse metaverso são feitas via tecnologia Blockchain”, reforça Adriana Molha.
“Quando é mencionado que a Web3 será uma web imersiva, podemos entender a proposta de metaverso como a interface possível para esta realização”, completa a executiva.
A forma mais prática de entender o funcionamento da Web3 ainda envolve o uso de criptomoedas. Como essas tecnologias costumam ser operadas em blockchain, já é possível compreender as etapas dessa rede.
Alguns navegadores, como o Opera e o Brave, já adaptaram a própria interface para receber recursos voltados ao Web3, como uma carteira própria de criptomoedas.
Fora do mercado financeiro, o blockchain também é utilizado para proteger assinaturas digitais, por exemplo, além de adicionar camadas de criptografia no armazenamento em nuvem. Há, inclusive, um projeto de criação de sistema de blockchain nacional para uma moeda virtual desenvolvido pelo Banco Central do Brasil, chamado Real Digital.
Por outro lado, ainda existem outros recursos que dão seus primeiros passos ou nem saíram do papel. O conceito de dApps, aplicativos criados em uma rede descentralizada e protegida por blockchain, pode ser uma resposta aos apps convencionais, mas ainda existem poucos modelos disponíveis.
Ao mesmo tempo em que procura resolver problemas gerados pela Web 2.0, o Web3 também levanta alguns questionamentos sobre o próprio jeito de funcionar.
O primeiro envolve a capacidade de processamento de dados: a tecnologia de blockchain demora para concluir uma transação e não consegue operar com tantas informações ao mesmo tempo. Por isso, servidores de Google, Amazon e outras empresas são opções mais consolidadas e com maior poder de armazenamento.
Há, ainda, a questão ambiental de todo esse processo. O blockchain depende da mineração e da presença de supercomputadores, que geram problemas a partir do consumo de energia e da necessidade do espaço físico para comportá-los.
Os riscos com a privacidade também chamam a atenção: uma carteira de criptomoedas poderia armazenar todas as informações do usuário com gastos pessoais. Nesse caso, ainda não existem métodos para ocultar alguns dados de visitantes.
(Imagem: Freepik)
Os desenvolvedores de software são divididos em três categorias principais: júnior, pleno e sênior. Cada categoria tem habilidades e responsabilidades diferentes, e é importante entender essas diferenças para saber em quais posições os desenvolvedores se encaixam melhor.
São aqueles que acabaram de entrar no mercado de trabalho ou têm pouca experiência em programação. Eles geralmente trabalham em tarefas simples, como correção de bugs ou manutenção de código existente. Eles também podem atuar em projetos pequenos e simples, mas geralmente sob a supervisão de um desenvolvedor pleno ou sênior.
São aqueles que já têm alguma experiência como desenvolvedor, mas ainda estão sempre aprendendo e aprimorando suas habilidades. Este grupo geralmente trabalha em tarefas mais complexas e podem ser responsáveis por partes específicas de um projeto, podendo também ser responsáveis por orientar e supervisionar desenvolvedores júnior, ajudando-os a crescer e maximizar suas habilidades.
São aqueles que têm muita experiência como desenvolvedores e possuem habilidades avançadas. Eles geralmente trabalham em projetos complexos e são responsáveis por tomar decisões importantes em relação ao projeto e à equipe. Eles também podem ser responsáveis por orientar e supervisionar desenvolvedores plenos e júnior, ajudando-os a crescer e se desenvolver.
Cada categoria de desenvolvedor tem suas próprias responsabilidades e habilidades, e cada uma é importante para o sucesso de um projeto. Desenvolvedores júnior fornecem suporte básico, enquanto desenvolvedores plenos e sêniors fornecem suporte mais avançado e tomam decisões importantes.
É importante ter em mente que essas classificações são baseadas na experiência e habilidade dos desenvolvedores e não são uma medida exata da capacidade de um desenvolvedor, nem mesmo no tempo de experiência. Alguns desenvolvedores júniores podem ser muito talentosos e capazes, enquanto alguns desenvolvedores sêniors podem não ser tão habilidosos.
(Imagem: Freepik)
Há algumas habilidades e características que podem ajudar um desenvolvedor júnior a se tornar um desenvolvedor pleno:
👉Conhecimento técnico: Um desenvolvedor pleno deve ter um bom conhecimento das ferramentas, linguagens e técnicas utilizadas em seu trabalho. Conforme vai ganhando experiência, deve estar sempre buscando aprender novas tecnologias e aprimorar as já conhecidas.
👉Comunicação eficaz: Um desenvolvedor pleno deve ser capaz de se comunicar eficazmente tanto com os membros da equipe quanto com os clientes ou usuários finais. Isso inclui a capacidade de explicar complexidades técnicas de forma simples e clara.
👉Habilidade de resolução de problemas: Um desenvolvedor pleno deve ser capaz de resolver problemas técnicos e encontrar soluções para problemas com pouca ou nenhuma orientação.
👉Habilidade de trabalhar em equipe: Um desenvolvedor pleno deve ser capaz de trabalhar em equipe e colaborar com outros desenvolvedores e profissionais de outras áreas.
👉Autonomia: Um desenvolvedor pleno deve ser capaz de tomar decisões e trabalhar de forma autônoma. Isso inclui a capacidade de priorizar e gerenciar suas tarefas, bem como a capacidade de lidar com mudanças e adaptar-se a novos desafios.
Essas habilidades e características não são exigidas de forma simultânea, e a evolução de um desenvolvedor júnior para um desenvolvedor pleno pode levar algum tempo. No entanto, trabalhando nessas áreas, é possível desenvolver as habilidades necessárias para se tornar um desenvolvedor pleno e eficaz.
Os salários para desenvolvedores de software variam amplamente no Brasil, dependendo de fatores como localização, tipo de empresa, habilidades e experiência. No entanto, é possível dar uma ideia geral das faixas salariais para cada categoria de desenvolvedor:
(Imagem: Freepik)
Desenvolvedor júnior: pode ganhar entre R$ 2.500 e R$ 4.500 por mês, dependendo da localização e do tipo de empresa. Isso pode aumentar para R$ 5.000 a R$ 7.000 por mês para desenvolvedores com habilidades mais avançadas e/ou experiência anterior.
Desenvolvedor pleno: pode ganhar entre R$ 5.000 e R$ 8.000 por mês, dependendo da localização e do tipo de empresa. Isso pode aumentar para R$ 8.000 a R$ 12.000 por mês para desenvolvedores com habilidades mais avançadas e/ou experiência anterior.
Desenvolvedor sênior: pode ganhar entre R$ 8.000 e R$ 12.000 por mês, dependendo da localização e do tipo de empresa. Isso pode aumentar para R$ 12.000 a R$ 15.000 por mês para desenvolvedores com habilidades mais avançadas e/ou experiência anterior.
Existem algumas áreas de TI que geralmente oferecem salários mais elevados para desenvolvedores juniores. Essas áreas incluem:
Desenvolvimento de jogos é uma área em crescimento e pode oferecer salários atraentes. Isso pode incluir desenvolvimento de jogos para dispositivos móveis, consoles e computadores pessoais.
Desenvolvimento de inteligência artificial (IA) e aprendizado de máquina (ML) está em alta demanda e podem oferecer salários mais elevados para desenvolvedores juniores com habilidades em IA e ML.
Segurança da informação é uma área crítica e pode oferecer salários mais elevados para desenvolvedores juniores com habilidades em segurança de rede e criptografia.
O desenvolvimento de blockchain também está em crescimento e requer pouca experiência para início na carreira.
Desenvolvimento de aplicativos móveis tem alto acoplamento para desenvolvedores juniores e é uma excelente porta de entrada para uma carreira promissora.
(Imagem: Freepik)
Neste contexto, é importante frisar que a área de TI que engloba esses níveis profissionais está em franca expansão. Pode-se afirmar isso devido a vários fatores, dos quais destacamos:
Crescimento do setor: A tecnologia está se tornando cada vez mais importante em quase todos os setores, e isso está impulsionando o crescimento do setor de TI. Isso significa que há uma grande demanda por profissionais de TI qualificados, o que aumenta as oportunidades de carreira e salários.
Inovação contínua: A tecnologia está sempre evoluindo e há sempre novas tendências e inovações emergentes.
Ampla variedade de carreiras, desde desenvolvimento de software e segurança da informação até gerenciamento de projetos e gerenciamento de TI.
Salários atraentes: Profissionais de TI geralmente ganham salários mais elevados do que profissionais em outras áreas, especialmente para aqueles com habilidades e experiência avançadas.
Oportunidades globais: A tecnologia é utilizada em todo o mundo, o que significa que as oportunidades de carreira em TI são globais. Isso pode incluir trabalhar para empresas multinacionais ou viajar para trabalhar em projetos em outros países.
Oportunidade de trabalhar remotamente: A pandemia aumentou a necessidade de trabalhar remotamente e muitas empresas estão adotando essa modalidade como uma forma de trabalhar. Isso oferece aos profissionais de TI a flexibilidade de trabalhar de qualquer lugar, o que pode ser uma grande vantagem.
A própria construção desse artigo é um exemplo de como a revolução digital é imparável. Este artigo foi escrito em conjunto com a ajuda de ChatGPT, um modelo de linguagem de grande porte treinado pela OpenAI. O processo funcionou da seguinte maneira:
O usuário forneceu um conjunto de perguntas ou tópicos para o qual desejava obter informações.
O modelo de linguagem ChatGPT foi utilizado para gerar uma resposta baseada em seu conhecimento prévio e sua capacidade de compreender e produzir texto natural.
O modelo de linguagem ChatGPT forneceu um conjunto de respostas, que foram revisadas, validadas e editadas pelo usuário para garantir precisão e clareza.
O usuário pode continuar perguntando e o modelo de linguagem ChatGPT continuaria gerando respostas para continuar o artigo.
É importante notar que, embora o modelo de linguagem ChatGPT seja capaz de gerar respostas precisas e informativas, ele não possui opiniões ou sentimentos próprios e pode não estar completamente atualizado com as informações mais recentes. Portanto, é importante verificar e editar as informações geradas pelo modelo antes de usá-las. A revolução não para.
Engenharia de Software é, por definição, a aplicação de técnicas, conhecimentos e ferramentas à construção de software de qualidade. A função do engenheiro de software é produzir aplicações que atendam às necessidades dos clientes dentro do prazo e orçamento disponíveis.
Software é construído através do processo de programação. Embora o processo de desenvolvimento envolva outros passos anteriores à codificação, o software não fica pronto sem programação.
(Imagem: freepik)
Programação é o processo de criar e descrever um conjunto de instruções que informem a um computador o que fazer para resolver um dado problema. Para programar, é necessário entender a lógica básica de programação (algoritmos) e alguma linguagem de programação que possa ser “entendida” pelo computador.
Diante da importância da programação no desenvolvimento de software, cursos e discussões na área tendem a focar fortemente em desenvolver habilidades técnicas voltadas para essa atividade. De fato, basta olhar a grade de qualquer curso de engenharia de software ou computação e veremos disciplinas voltadas para programação em praticamente todos os blocos.
Com essa informação, parece que todo engenheiro de software precisa ser, acima de tudo, um programador. Mas será mesmo verdade?
Programação é uma habilidade complexa. É também uma atividade complexa e longa.
Programar envolve criar algoritmos. A base para a criação de qualquer programa é a definição da sequência de instruções que serão realizadas para resolver o problema do cliente. Esse conjunto de instruções é conhecido como algoritmo.
Criar algoritmos exige conhecimento das estruturas de comando e de lógica matemática, bem como a capacidade de visualizar e organizar a solução para problemas.
Além disso, programar exige o domínio de uma linguagem de programação. Linguagens de Programação são sistemas de notação que podem ser compreendidos pelo computador. Computadores não entendem o que chamamos de linguagens naturais (as que falamos no dia a dia, como o português). Por isso, é necessária uma linguagem que possa ser entendida tanto pelo programador quanto pelo computador. Diversas dessas linguagens existem no mercado, é cada software é desenvolvida em uma linguagem.
(Imagem: freepik)
Por esses motivos, nem todos desejam dedicar tempo ou esforço para a atividade de programação. Algumas pessoas não se interessam por aprender as habilidades necessárias. Outras, mesmo sabendo programar, não demonstram interesse pelo dia a dia da atividade.
Ainda assim, várias dessas pessoas se interessam pelo poder de inovação e solução de problemas que a área de engenharia de software pode trazer. Existem espaços para aqueles que não desejam ou não conseguem programar dentro do universo da produção de software.
Desenvolver software envolve programar, mas essa não é a única atividade envolvida na Engenharia de Software. Entender as necessidades, projetar as interfaces, controlar as equipes, acompanhar os usuários e muitas outras atividades são necessárias para a criação e manutenção de softwares em qualquer ambiente.
Essas atividades são melhor exercidas por pessoas com expertise na área de Engenharia de Software, mas não exigem habilidades de programação propriamente ditas. São atividades voltadas para o gerenciamento da equipe, para o contato com o cliente ou para a operação cotidiana do software.
Seguem alguns dos principais trabalhos que um engenheiro de software pode fazer sem precisar escrever código.
Geralmente o cliente de uma equipe de desenvolvimento de software não é um profissional da área. Clientes são, em última análise, usuários finais. Assim, eles não entendem o linguajar e os métodos envolvidos no desenvolvimento de software. Isso pode dificultar a comunicação entre as partes envolvidas.
Entra em cena o Product Owner, profissional responsável pela comunicação entre a equipe e o cliente. Mais que a comunicação, o P.O. funciona como um representante do cliente junto à equipe.
(Imagem: freepik)
A função do Product Owner é garantir que o software atenda as necessidades dos clientes. O P.O. precisa entender não apenas o que o cliente afirma querer, mas o que ele efetivamente precisa para resolver seus problemas. Um bom P.O. consegue visualizar o produto de forma estratégica para direcionar o trabalho da equipe.
O trabalho cotidiano do Product Owner consiste em especificaras funcionalidades do software a serem desenvolvidas, tirar dúvidas da equipe sobre as necessidades do cliente, atribuir prioridades diferentes para cada funcionalidade e avaliar as funcionalidades entregues.
O desenvolvimento de um software se encaixa perfeitamente na definição tradicional de um projeto (“Um esforço finito com o objetivo de produzir um produto ou serviço novo”). Por isso está sujeito às mesmas restrições que qualquer projeto: Prazo, custo e escopo. Está, também, sujeito a riscos e a restrições de pessoal. Alguém precisa controlar essas restrições e riscos.
Essa função cabe ao Gerente de Projetos. Ele é o responsável final pelo sucesso do esforço de desenvolvimento. Cabe ao gerente planejar e estimar o projeto, bem como se preparar para riscos e controlar e facilitar o trabalho da equipe.
As atividades do dia a dia de um gerente de projeto são estimar o prazo e o custo do processo de desenvolvimento, estabelecer o cronograma de desenvolvimento, montar a equipe do projeto, identificar e criar planos de contingência para possíveis riscos e controlar e liderar a equipe de software.
Por controlar e liderar a equipe de software entende-se acompanhar o trabalho, garantindo que o mesmo cumpra o cronograma estabelecido, e ajudar a equipe a manter o ritmo, tanto motivando a equipe como removendo eventuais obstáculos que a equipe encontre, mas não tenha autoridade para remover.
O nível de autonomia e de poder que gerentes de projeto possuem variam entre organizações, mas de forma geral eles operam como líderes e chefes de equipes. Bons gerentes de projeto devem ter capacidades de liderança, negociação e resolução de conflitos.,
Um produto de software não existe no vácuo. Ele tem a função de resolver um problema enquanto é usado pelo usuário, bem como de existir no ecossistema de T.I. da empresa. Em resumo, um sistema oferece um conjunto de experiências ao usuário.
Essa lógica não se aplica somente a software. Qualquer produto existe, ao fim e ao cabo, para oferecer um conjunto de experiências ao usuário. Mesmo produtos simples, como uma roupa, existem em função do que eles oferecem quando usados.
Produtos podem, e devem, ser projetados a partir de suas funcionalidades, mas podem, também, ser projetados com a experiência do usuário em mente. Todo o produto pode ser pensado de forma a otimizar a forma como o usuário se sente e como ele interage com o produto.
(Imagem: freepik)
A título de exemplo, olhemos o caso do Iphone. Smartphones já existiam antes dele, como o Blackberry ou o Sidekick. O que a Apple fez com o primeiro Iphone foi visualizar uma experiência mais agradável, com o touchscreen, a aparência mais bonita e a tela com cores mais vivas. Perceba-se que as funções básicas de um smartphone já eram atendidas pelos antecessores, mas a experiência oferecida pelo Iphone era diferente. Por isso, o produto revolucionou o mercado.
Essa mesma lógica se aplica ao desenvolvimento de software. Produtos de software podem ser pensados com foco na experiência que o usuário final terá ao utilizá-lo. Esse é o trabalho do User Experience Designer (Designer de Experiência do Usuário, em uma tradução livre), ou UX Designer.
Bons UX Designers deve ter a capacidade de se colocar no lugar do usuário, foco na satisfação e boa comunicação. Precisam também ter a capacidade de enxergar o produto como um todo. Conhecimento de técnicas de design de soluções também pode ser um diferencial.
É comum confundir UX Design e UI Design. Enquanto o UX Designer foca na experiência como um todo, o UI Designer foca especificamente na maneira como o usuário vai interagir com o sistema. O termo UI significa User Interface, ou Interface de Usuário.
O UI Designer tem um trabalho mais técnico, projetando e desenhando as interfaces que o usuário visualizará ao lidar com um sistema. Ele vai se preocupar com telas, ergonomia, organização da informação, cores e coisas similares.
O trabalho do designer de interfaces exige capacidade de organização visual e capacidade de entender seus usuários. O bom UI Designer consegue entender a diferente facilidade ou dificuldade de cada grupo de usuários com cada tipo de interface.
Vale ressaltar que muitas equipes de software colocam o trabalho de UI Designer sob a mesma tutela do UX Designer, para minimizar a quantidade de membros. Embora isso seja comum, não significa que sejam a mesma coisa. UX Designer foca na experiência do usuário e UI Designer foca exclusivamente nas telas.
O projeto de software é o processo de tomar decisões acerca de como o software será feito. Geralmente pode ser entendido em vários níveis de detalhamento diferente. Desde o projeto extremamente detalhado descrevendo estruturas de dados, algoritmos ou classes, até o mais amplo, que descreve tecnologias e partes básicas do sistema.
Esse último tipo de projeto, considerado um projeto de alto nível (pois mais distante da implementação propriamente dita), é conhecido como arquitetura do software. A arquitetura do software vai descrever a pilha tecnológica usada, quais as partes do sistema e como essas partes falarão entre si.
Um projeto de arquitetura pode, por exemplo, especificar em quantos componentes o sistema será dividido, em que linguagem cada componente será implementado, quais frameworks de desenvolvimento serão utilizados, onde e como serão hospedados os componentes e como cada componente se comunicará com os outros.
(Foto: Denise Nascimento)
Para citar um exemplo mais prático: Uma arquitetura bastante comum hoje em dia é criar o sistema com três componentes. Um banco de dados em algum sistema gerenciado de bancos de dados moderno (sistema de armazenamento de dados), um “backend” em Java utilizando framework Springboot e hospedado através de um servidor de aplicações Wildfly e um “frontend” em TypeScript, utilizando plataforma Angular e hospedado em um servidor Node.js. O frontend se comunica com o backend via HTTP resdtfull (tecnologia para comunicação simples via WEB) e o backend se comunica com o sistema gerenciador de bancos de dados utilizando JDBC (tecnologia própria para a comunicação entre aplicações Java e sistemas gerenciadores de bancos de dados).
O trabalho de criar, manter e comunicar esses projetos de arquitetura é responsabilidade do arquiteto de software. Esse profissional se dedica a, com o auxílio da equipe, decidir quais serão os componentes, quais funcionalidades serão implementadas em cada componente e como cada componente será implementado.
Bons arquitetos de software devem conhecer linguagens de modelagem, entender as tecnologias e tendências do mercado, ter noção básica de vantagens e desvantagens de tecnologias e linguagens de programação, além de ter capacidade de resolução de problemas, organização e priorização.
Um clichê comum sobre a tecnologia da informação é que os dados serão o próximo petróleo. A frase significa que as novas fortunas surgirão de empresas que manipulam e extraem informação. Embora clichês tendam a ser frases sem sentido, esse tem mais que um pé na realidade.
Parte importante das necessidades dos clientes atuais é entender os dados é transformá-los em informações. Dados são fatos individuais enquanto informação é a organização e interpretação desses fatos.
Um dos profissionais responsáveis por interpretar dados e extrair informações e conhecimento deles é o analista de informação. Analistas de informação utilizam ferramentas de dados e de análise para interpretar os dados de diversas fontes e encontrar padrões e narrativas a partir das informações.
É o analista de informação que vai utilizar os dados para entender o comportamento de clientes, prever tendências a auxiliar na tomada de decisões.
Para realizar o trabalho, um profissional da área precisa ter capacidade de comunicação e de previsão, além de conhecimento razoável de estatística e, preferencialmente, álgebra linear.
Se analistas de informação e cientistas de dados vão acessar dados de diversas fontes diferentes para executar suas funções, alguém precisa organizar esses dados. Essa função pertence ao engenheiro de dados.
Engenheiros de Dados tem a responsabilidade de gerenciar fontes de dados tanto estruturadas (como bancos de dados) como não estruturadas (como textos ou bancos de imagens) e organizar ferramentas que permitam cientistas ou analistas trabalhar com esses dados.
Um engenheiro de dados deve ter conhecimento de bancos de dados e outras arquiteturas de dados. Ele precisa, também, conhecer ferramentas de big data e de conversão de dados. Além disso, é interessante que o engenheiro apresente habilidades de colaboração e criatividade. Por fim, conhecimento básico das áreas de ciência de dados ou análise de informação, conforme a área em que se trabalha, pode ajudar.
Sistemas gerenciadores de bancos de dados são a ferramenta número um para armazenamento de dados no mercado moderno de T.I. Esses sistemas são ferramentas que permitem, com relativa facilidade, armazenar, recuperar e manipular dados de forma concorrente e segura.
As estruturas de dados armazenadas dentro de um banco de dados precisam ser criadas, otimizadas e mantidas. Criadas para que se possam armazenar os dados dentro delas, otimizadas para garantir que a recuperação dos dados se dê da forma mais eficiente possível e mantidas para garantir que as estruturas de dados atendam às eventuais mudanças do software.
Os administradores de bancos de dados (e seus auxiliares, os operadores de bancos de dados) são os responsáveis por essas tarefas. Eles vão operar e manter os bancos de dados da empresa, bem como tomar decisões sobre a organização das estruturas de dados.
Em muitas organizações o administrador de bancos de dados acumula as funções do engenheiro de dados ou até do analista de informações, mas essas são funções tecnicamente diferentes.
(Imagem: freepik)
Dado o tema desse artigo, é preciso ressaltar que essa não é uma função 100% livre de codificação. É comum se usar linguagens de consultas, como SQL, para realizar as funções do administrador. Decidimos incluir essa função no artigo por dois motivos. Primeiro pois as ferramentas modernas de administração de bancos de dados permitem realizar quase todas as operações sem necessidade de codificação e segundo porque linguagens de consulta são formas bastante simplificadas e domínio bastante restrito de linguagens de programação.
Além de conhecimento de bancos de dados e das ferramentas de bancos dados, um bom administrado de bancos dados precisa ter capacidade de organização e visão analítica dos problemas.
Uma vez desenvolvido o software, ele vai ser colocado para funcionar (ou em produção, como se diz no jargão de T.I.) e ser operado no dia a dia pelos usuários finais. Esses usuários podem vir a precisa de ajudas ou pequenas operações administrativas no sistema, como correção de erros ou cadastro de usuários. Além disso, operações administrativas de menor porte, como backups e restauração de sistemas podem ser necessárias.
Os responsáveis por todas essas operações é o analista de suporte e sua equipe. Esse é um profissional de perfil técnico, que tomará as decisões referentes ao suporte ao usuário, as regras e padrões desse suporte, o hardware e os softwares auxiliares instalados na organização e a forma como se farão as operações administrativas.
Vale ressaltar que o analista de suporte não é, necessariamente, a pessoa que vai realizar as operações de suporte ou administração, mas o responsável por discutir e implementar regras e políticas para essas operações. Em geral., ele terá em sua equipe pessoas responsáveis pela implementação manual ou pela automatização dessas tarefas.
Por ser uma das funções com maior número de atividades, é também uma das que requer maior número de habilidades técnicas. Conhecimento de softwares e hardwares existentes no mercado, conhecimento dos softwares a que se dá suporte e de ferramentas e metodologias de suporte são essenciais para esse profissional. Além disso, ele deve ser focado no cliente, ter boa capacidade de comunicação e de gerenciar relacionamentos, bem como resposta rápida aos problemas.
Como se pode ver, existem diversas funções que podem ser exercidas por engenheiros de software sem necessidade de programação. Essas funções permitem a engenheiros de software continuar participando do processo inovativo sem necessidade de se dedicar ao trabalho de codificação.
Vale ressaltar que, embora esses trabalhos normalmente não exijam programação propriamente dita, um conhecimento básico de lógica de programação e das tecnologias de programação podem auxiliar na comunicação com a equipe e na capacidade de avaliar o software.
Análise de dados, machine learning, inteligências artificiais e computação quântica, todas essas tecnologias têm como base o inglês, tanto nas linguagens de programação, como na comunicação entre os profissionais de TI de todo o mundo.
Dominar bem o inglês, principalmente o técnico, é uma exigência imprescindível para os bons profissionais da área de tecnologia.
A disciplina estará presente em todos os períodos do curso de Engenharia de Software
O iCEV quer formar os melhores profissionais de Tecnologia do Piauí, por isso o curso de Engenharia de Software agora oferta para seus estudantes a disciplina de “English for Technology”, que estará presente em todos os períodos, desde o primeiro período.
Professor Ney Rubens
Quem vai comandar a disciplina é o professor Ney Rubens, que é mestre em Educação pela Universidad del Atlántico (Barcelona, Espanha), é especialista em inglês acadêmico com experiência na área do ensino de idiomas há mais de 20 anos, além da experiência prática após anos morando no exterior.
“Inglês é a porta do mundo globalizado para os profissionais de tecnologia. Saber Inglês escancara portas para empresas de todo o mundo. Tudo isso aliado ao conteúdo dinâmico e moderno da faculdade”, afirma Dimmy Magalhães, coordenador do curso de Engenharia de Software do iCEV.
Com isso, o iCEV está preparando os futuros profissionais para oportunidades internacionais, já que muitas empresas globais de tecnologia procuram profissionais de qualquer lugar do mundo para atuar de forma remota. Assim, o domínio da língua inglesa se torna essencial.
Aqui estão alguns termos e siglas em inglês que todo profissional de TI deve conhecer. Confira:
Bit
Bit é a menor unidade de informação que pode ser armazenada ou transmitida por um dispositivo.
Internet of Things – IoT
Internet of Things ou Internet das Coisas é um termo utilizado para a conectividade de diversos equipamentos à internet, como geladeiras, tênis, lâmpadas, produtos que até pouco tempo não utilizavam a internet.
Com a expansão do 5G, é esperado que a internet das coisas se expanda no Brasil e no mundo.
Information Technology – IT
IT é o acrônimo em inglês para a TI (Tecnologia da Informação), termo que abrange todas as soluções tecnológicas para facilitar o acesso e o gerenciamento de informações.
Bug
A palavra bug tem como tradução inseto, mas também é empregada na área de tecnologia para situações em que o software ou hardware não funciona conforme esperado. O termo entrou em uso na área de TI na década de 40, quando um computador teria parado de funcionar pela presença de um inseto no equipamento.
Hypertext Markup Language – HTML
É uma linguagem utilizada para a construção e desenvolvimento de websites, por meio de textos que serão interpretados pelos navegadores. Podemos traduzir a sigla HTML como Linguagem de Marcação de Hipertexto.
Cascading Style Sheets – CSS
Cascading Style Sheets, ou Folhas de Estilo em Cascatas, é um mecanismo utilizado para personalizar um documento web por meio da mudança de estilo, cores e fontes, por exemplo. O CSS trabalha em conjunto com o HTML na construção do layout de um website.
Business Intelligence – BI
A sigla BI significa Business Intelligence, ou “inteligência de negócios”, em português. É uma área em grande expansão no Brasil e no mundo, abrangendo todo processo de coleta, análise e gerenciamento de informações que darão suporte à tomada de decisões estratégicas.
Cloud Computing
Cloud Computing ou computação em nuvem abrange recursos tecnológicos que não estão presentes no computador, mas totalmente on-line. Com a expansão da internet e o aumento da velocidade de conexão, surgiram muitos serviços em nuvem que oferecem armazenamento de dados on-line, como o Google Photos, por exemplo.
Uniform Resource Locator – URL
Uniform Resource Locator ou localizador uniforme de recursos é o termo referente ao endereço no qual se encontra um arquivo, website ou dispositivo periférico. Na internet é utilizado como sinônimo de link.
Structured Query Language – SQL
Pode ser traduzido como linguagem de consulta estruturada. Na área de TI, query é utilizado para toda consulta ou pedido de informação realizado em um banco de dados através de comandos específicos.
Domain Name System – DNS
Domains Name System, ou Sistema de Nomes de Domínios, em português, é o sistema que converte sites (exemplo: www.lfidiomas.com.br) em endereços de IPs para serem lidos por máquinas (por exemplo, 192.1.2.44.42).
Cache
Cache é a área de armazenamento de dados e processos, visando economizar tempo e uso de hardware. Muitos navegadores costumam utilizar a memória cache para guardar dados dos sites mais acessados para posteriormente abri-los com maior rapidez.
Database
Termo em inglês para banco de dados, o conjunto de arquivos que guardam informações de forma estruturada.
Malware
Esse termo vem da junção de malicious (malicioso) com software. É todo programa criado para causar danos a dispositivos, roubar dados e prejudicar os usuários. Os vírus são os exemplos mais conhecidos de malware.
Spyware
Spyware é um malware criado para rastrear informações do usuário sem que ele saiba. Muitas vezes são utilizados por parceiros abusivos, governos antidemocráticos ou para apresentar propagandas segmentadas.
Ransomware
Ransomwares são malwares que funcionam como um programa de extorsão, exigindo algo do usuário (geralmente dinheiro) em troca da integridade dos dados no dispositivo. O backup também é utilizado na prevenção de ataques de ransomwares
Foram muitos eventos marcantes pra galera de Engenharia de Software. Por isso, preparamos uma retrospectiva para relembrar o quanto 2022 foi incrível! Confira:
(Foto: Denise Nascimento)
Logo no primeiro dia de aula da disciplina de Empreendedorismo, ministrada pelo prof. Thiago Rodrigo, os estudantes de Engenharia de Software visitaram o Sebrae Lab – ambiente de networking e inovação do Sebrae. Além disso, todo o material e metodologia utilizadas na disciplina são do Sebrae. O papo sobre inovação com o empresário e mentor Diego Silva foi bem dinâmico e interativo.
(Foto: Denise Nascimento)
O Startup Day foi só sucesso. Estivemos no evento do Sebrae com professores, colaboradores e alunos fazendo networking, participando das discussões e espalhando a mensagem do iCEV, claro! Alguns dos nossos professores de Administração e Engenharia de Software também palestraram no evento.
Além de ser um encontro de empresas de tecnologia e inovação, o Startup Day foi um momento de formação e troca de experiências para quem se aventura ou quer se aventurar no mundo das startups.
(Foto: Denise Nascimento)
A maratona aqui é diferenciada! No dia 4 de julho rolou a Hackathon iCEV, maratona de programação do curso de Engenharia de Software. Durante toda a tarde as equipes tinham 10 desafios bem difíceis para resolver.
Quem levou a melhor foi a equipe “Mendigos do ponto”, que ganhou livros, pontos em avaliações do semestre e outros mimos! Fizeram bonito demais.
(Foto: Denise Nascimento)
Esse é um espaço com máquinas modernas pra galera da Tecnologia colocar os conhecimentos em prática. O laboratório é utilizado tanto para a graduação como para a pós-graduação.
(Foto: Denise Nascimento)
No Observatório das Eleições iCEV, os estudantes puderam visitar o Depósito Central das Urnas do Tribunal Regional Eleitoral do Piauí – TRE. A visita foi acompanhada pelo professor de Engenharia de Software do iCEV e servidor do TRE, Anderson Cavalcanti.
O intuito foi conhecer, na prática, como funciona a organização das eleições e a segurança das urnas para uma votação.
(Foto: Denise Nascimento)
Troca de experiência com quem sabe muito. A convite do prof. Dimmy Magalhães, a Tech Lead da Dasa, Thainá Mariani, apresentou aos nossos estudantes de Engenharia uma palestra sobre boa qualidade de códigos e o futuro promissor no mercado de software.
(Foto: Denise Nascimento)
O projeto é um grupo de pesquisa de Direito e Engenharia de Software, liderado pelos coordenadores dos cursos Horácio Neiva e Dimmy Magalhães, respectivamente, e pelo coordenador de pesquisa e extensão, Euzébio Pereira.
São 25 estudantes no grupo de estudos. Essa interdisciplinaridade entre os cursos permite uma maior compreensão de todo o processo, pois envolve as análises jurídicas e o tratamento de dados eleitorais.
O intuito foi realizar palestras, debates, estudos, pesquisas, avaliações e produção de conteúdos relacionados às Eleições de 2022, bem como ao papel e à estrutura da Justiça Eleitoral nesse processo.
(Foto: Denise Nascimento)
O Chess Challenge foi um sucesso! O Campeonato de Xadrez reuniu mais de 50 participantes em 22 equipes que desafiaram seus conhecimentos computacionais numa batalha de Inteligência Artificial.Os participantes construíram programas de Inteligência Artificial (IA) e ensinaram as melhores decisões a serem tomadas num jogo de xadrez. Essas IAs competiram entre si. O campeonato premiou o 1º e o 2º lugar com R$ 1.000 e R$ 500, respectivamente.
Os estudantes de Engenharia de Software viveram uma experiência no estilo do programa mundialmente conhecido “Shark Tank”. A atividade, comandada pelo professor Artur Veloso, envolveu os alunos do 1º e do 2º período, pela disciplina de Cenários II, e do 7º, pela disciplina de Gerência.
Durante todo o período de 2022.2, os alunos foram envolvidos com a proposta do professor que culminou com a atividade final e teve convidados de renome na tecnologia e gestores de startups piauienses.
A prática foi dividida na criação das startups, na gestão delas e na apresentação das ideias. Na última fase, os convidados José Artur e André Junhson fizeram o papel de “tubarões”. Eles avaliaram tanto as startups como a gerência de cada uma delas.
2022 foi um ano transformador para inovação tecnológica e transformação digital. A tendência continuará à medida que o ritmo de desenvolvimento de tecnologias emergentes potencialmente disruptivas aumenta exponencialmente a cada ano. Surge a pergunta: o que está por vir para a tecnologia para aprendermos e experimentarmos em 2023?
Embora existam muitos tópicos de tecnologia impactantes, como Internet das Coisas, 5G, Espaço, Genômica, Biologia Sintética, Automação, Realidade Aumentada e outros, existem quatro áreas de tecnologia para manter um olhar atento neste próximo ano, pois elas têm promessas e capacidades de curto prazo para transformar vidas. Eles incluem: 1) Open AI, 2) Inteligência Artificial, 3) Computação Cognitiva e 4) Computação Quântica.
Desde que o computador HAL2000 e o produtor Stanley Kubrick forneceram um vislumbre da capacidade independente (embora nefasta) da IA de pensar., esperamos ansiosamente pelo surgimento da inteligência artificial. Estamos agora próximos da IA muito além da ficção. Os elementos que compõem a IA consistem em aprendizado de máquina e processamento de linguagem natural e agora fazem parte do dia a dia de nossas vidas. Hoje, a IA pode entender, diagnosticar e resolver problemas – em alguns casos sem ser especificamente programada.
O foco e os desafios da inteligência artificial são claros. Os sistemas de IA buscam replicar características humanas e capacidades computacionais em uma máquina, além de superar as limitações e a velocidade humanas. Já está acontecendo. Sinapses artificiais que imitam o cérebro humano provavelmente irão direcionar a próxima geração de computação. Os componentes podem diferir, podem ser analógicos ou digitais e podem ser baseados em transistores, produtos químicos, biológicos ou possivelmente componentes quânticos.
Computadores com IA foram projetados predominantemente para atividades de automação que incluem emulação de memória, reconhecimento de fala, aprendizado, planejamento e resolução de problemas. As tecnologias de IA podem fornecer uma tomada de decisão mais eficiente ao priorizar e agir sobre os dados, especialmente em redes maiores com muitos usuários e variáveis. Num futuro muito próximo, a IA vai mudar a forma como fazemos negócios, como planejamos e como projetamos. Você pode vê-lo agora. A IA já é um catalisador para impulsionar mudanças fundamentais em muitos setores, como atendimento ao cliente, marketing, bancos, saúde, contabilidade empresarial, segurança pública, varejo, educação e transporte público.
Recentemente, uma caixa de bate-papo chamada OpenGPT chamou a atenção para o potencial da IA e suas correlações semelhantes às humanas, especialmente ao se expressar em análises escritas. O DALL-E , outro aplicativo OpenAI, mostrou a capacidade de criar imagens a partir de instruções básicas. A noção de IA escrevendo seu próprio código, criando suas próprias linguagens é intrigante e potencialmente alarmante.
Outra área muito empolgante de potencial avanço para a IA é a interface humano/computador que ampliará a capacidade e a memória do cérebro humano. A ciência já está fazendo grandes avanços na interface cérebro/computador. Isso pode incluir chips neuromórficos e mapeamento cerebral. As interfaces cérebro-computador são formadas por meio de dispositivos emergentes que possuem sensores implantáveis que registram sinais elétricos no cérebro e usam esses sinais para acionar dispositivos externos.
Foi demonstrado que uma interface cérebro-computador é capaz de ler pensamentos. Isso é feito quando uma placa de eletrodo chamada ECOG é colocada em contato direto com a superfície do cérebro para medir a atividade elétrica.
Uma publicação da Frontiers in Science envolvendo a colaboração de acadêmicos, institutos e cientistas resumiu a promessa da interface humano-computador. Eles concluíram que “podemos imaginar as possibilidades do que pode vir a seguir com a interface cérebro-máquina humana. Um sistema B/CI humano mediado por nanorrobótica neural poderia capacitar os indivíduos com acesso instantâneo a todo o conhecimento humano cumulativo disponível na nuvem e melhorar significativamente as capacidades e inteligência de aprendizado humano. Além disso, pode fazer a transição de realidades virtuais e aumentadas totalmente imersivas para níveis sem precedentes, permitindo experiências mais significativas e uma expressão mais completa/rica para e entre os usuários.
E com o surgimento de todas as tecnologias vem a fusão de como elas podem funcionar juntas. A inteligência artificial é, sem dúvida, um dos principais catalisadores envolvidos no aprimoramento de capacidades, especialmente na computação.
O mundo da computação testemunhou avanços sísmicos desde a invenção da calculadora eletrônica na década de 1960. Os últimos anos no processamento de informações foram especialmente transformadores em nosso mundo hiperconectado. O futurista Ray Kurzweil disse que a humanidade será capaz de “expandir o escopo de nossa inteligência um bilhão de vezes” e que “o poder da computação dobra, em média, a cada dois anos. Descobertas recentes em física, nanotecnologias e nos trouxeram para uma realidade de computação cognitiva que não poderíamos ter imaginado uma década atrás.
A computação biológica é a ciência avançada de usar produtos biológicos para executar ações que tradicionalmente seriam feitas usando componentes como fio de cobre e fibra de vidro. Componentes biológicos comuns usados nesses estudos incluem aminoácidos e DNA. Funções computacionais podem ser executadas pela manipulação de reações químicas naturais encontradas nessas substâncias. O que é Computação Biológica? (computerhope. com)
No futuro, os biocomputadores poderão ser armazenados no DNA de células vivas. Essa tecnologia poderia armazenar quantidades quase ilimitadas de dados e permitir que os biocomputadores realizassem cálculos complexos além de nossas capacidades atuais.
A civilização está agora seguindo os passos da computação quântica. Ela será capaz de fornecer velocidade computacional sem precedentes com análise preditiva para resolver problemas. A tecnologia quântica, que usa as caracterizações exclusivas de partículas subatômicas para processar entradas de dados, provavelmente revolucionará tudo, desde segurança cibernética até análises em tempo real. A computação quântica pode ser direcionada e aumentada por meio de inteligência artificial, operar em uma estrutura 5G ou 6G, oferecer suporte à IoT e catalisar ciência de materiais, biotecnologia, genômica e o metaverso.
Os estudantes de Engenharia de Software viveram uma experiência no estilo do programa mundialmente conhecido “Shark Tank”. A atividade, comandada pelo professor Artur Veloso, envolveu os alunos do 1º e 2º período, pela disciplina de Cenários II, e do 7º, pela disciplina de Gerência.
Atividade contou com convidados de renome na tecnologia
Durante todo o período de 2022.2 os alunos foram envolvidos com a proposta do professor que culminou com a atividade final e teve convidados de renome na tecnologia e gestores de startups piauienses:
José Arthur – programador há mais de 25 anos e CEO da empresa de desenvolvimento de software “Interprise App tech” e André Junhson – Sócio da Obsis, empresa responsável por sistemas renomados como OB MED (conecta pacientes com consultas em consultórios) e a GoJus (sistema de automação para advogados).
Os estudantes desenvolveram a ideia de startup, expuseram a viabilidade com técnicas avançadas de gestão, como MVP (Produto Viável Mínimo), prepararam e apresentaram o Pitch para a banca julgadora.
Estudantes do 1º, 2º e 7º período participaram da atividade
A prática foi dividida em duas etapas:
1 – Os estudantes de 1º e 2º período foram divididos em grupos e ficaram responsáveis pela criação de startups. Já os grupos do 7º por gerir essas startups criadas pelos primeiros períodos.
Cada time de gestores tinha 3 a 4 startups sob sua responsabilidade. Cada startup se apresentou aos seus gestores, que por sua vez escolheram uma para representá-los na etapa final.
2 – Na última fase os convidados José Artur e André Junhson fizeram o papel de “tubarões”. Eles avaliaram tanto as startups como a gerência de cada uma delas.
A batalha de pitchs foi comandada pelo professor Artur Veloso
“Essa atividade foi pra mostrar para os estudantes como funciona o trabalho real na área de tecnologia, sobre o empreendedorismo e como fazer pitch, fora o próprio conhecimento das tecnologias, trabalho em equipe e afins”, explicou o professor Artur Veloso, que além de professor do iCEV é CEO da Sturtup Fábrica de Gênios e já apresentou um pitch de destaque na Rio Inovation Week.
Os “jurados” avaliaram as startups e suas gestões
O Shark Tank é um programa bastante popular em todo mundo. Muitos empreendedores participam do programa, para apresentarem suas ideias, projetos, produtos, serviços e até mesmo sua empresa, com o propósito de conseguir uma parceria com algum dos investidores participantes da bancada.
Os investidores que também são jurados do programa, chamados de tubarões – tradução em português para Shark – estão lá para avaliar se gostam da proposta dos empreendedores e decidir se irão ‘’comprar suas ideias’’, ou seja, se vão ou não investir.
O iCEV abriu Processo Seletivo de Professores para compor o quadro docente do 1º curso de Engenharia de Software do Piauí! As inscrições acontecem até 08 de janeiro de 2023, somente online por este link: http://selecao.somosicev.com.br/professor
São vagas para as seguintes áreas de atuação: Linguagem de Programação – Programação Orientada a Objetos; Interface Humano-Computador; Gerência, Manutenção e Configuração de Software; Segurança e Auditoria de Sistemas; TCC e Metodologia Científica para Computação.
A seleção será dividida em quatro fases: 1º Etapa – Análise dos títulos; 2º Etapa – Realização de prova didática; 3º Etapa – Divulgação de resultado parcial e convocação para entrevista; 4º Etapa – Entrevista dos candidatos selecionados na terceira etapa.
O resultado será divulgado dia 23 de janeiro de 2023 no nosso site.
Confira mais detalhes sobre a classificação e pontuação no edital: https://www.somosicev.com/processos-seletivos/
No ato da inscrição, o candidato deverá apresentar a documentação comprobatória exigida para a disciplina a que está se habilitando. Deve, ainda, apresentar currículo da Plataforma Lattes, com suas experiências profissionais na área da disciplina e área da docência.
O primeiro e único curso de Engenharia de Software do Piauí espera por você. Faça sua inscrição para o Vestibular 2023.1.
Ingresse por meio de prova presencial, on-line, nota do ENEM, transferência ou portador de curso superior.
A Engenharia de Software é uma das áreas mais valorizadas da Tecnologia atualmente. Com o mercado em crescimento acelerado, os profissionais são disputados pelas empresas e recebem altas remunerações. Os valores podem ser ainda maiores nas oportunidades internacionais, inclusive com possibilidade de trabalho remoto.
Imagina ser disputado pelo mercado de trabalho antes de se formar? É assim para o engenheiro de software. Além de empreender, o profissional pode atuar com desenvolvimento de softwares, gerenciamento de projetos, arquitetura de produtos, etc.
Em um mercado aquecido, com muitas oportunidades e altas remunerações, nós temos o primeiro e ÚNICO curso de Engenharia de Software do Piauí. Aqui o aluno estará apto a entrar no mercado, mas também pronto para pesquisar inovações, aliando conhecimento e prática ele escolhe os caminhos para seguir. Os estudantes aprendem a encarar problemas tecnológicos de maneira criativa e inovadora, propondo soluções de software integradas e harmonizadas ao ambiente corporativo.
Atividades práticas, games e desenvolvimento de programas ainda na graduação: no iCEV os estudantes aprendem a programar desde o início e, com a Fábrica de Software bitiCEV, tiram do papel seus projetos de inovação tecnológica.
Buscando integrar academia e indústria, o iCEV tem parceria com uma das maiores empresas de Software Livre. O programa Red Hat Academy proporciona uma série de benefícios tanto para os alunos como para os professores, oferecendo programas de treinamento, ambiente para aprendizado na prática e programa de certificação com valores diferenciados.
A formação profissional em qualquer área, inclusive na de Engenharia de Software, diz respeito a adquirir novas habilidades. Seja através de aulas, estudos individuais ou atividades profissionais, o profissional que deseja ter sucesso deve estar o tempo todo se aprimorando, e isso significa aprender habilidades novas ou melhorar o domínio que se tem das habilidades já possuídas.
Sempre que se aprende uma nova linguagem, uma nova técnica de levantamento de requisitos, uma nova tecnologia de bancos de dados ou uma nova tecnologia, estamos adquirindo ou melhorando habilidades técnicas. Cada profissional vai desenvolver suas habilidades conforme a área da engenharia a que vai se dedicar. Dessa forma, um engenheiro de testes vai desenvolver habilidades ligadas a técnicas e ferramentas de testes de software, enquanto um programador vai desenvolver habilidades ligadas a algoritmos e linguagens de programação.
Essas habilidades, de caráter técnico, são indispensáveis para o andamento da carreira de qualquer engenheiro de software. Nenhum profissional conseguirá desenvolver um trabalho de qualidade se não for capaz de realizar as tarefas inerentes ao trabalho. As habilidades técnicas, ligadas à natureza do trabalho de Engenharia de Software em si são conhecidas como “Hard Skills”, que pode ser traduzido de forma literal como habilidades rígidas.
Enquanto para tornar-se um profissional de sucesso é necessário que o indivíduo possua um conjunto robusto de “Hard Skills”, é preciso lembrar que a Engenharia de Software é um trabalho com grandes características sociais. O engenheiro de software não é um eremita que cria sistemas do nada. Softwares existem para resolver problemas de clientes, com quem o engenheiro terá que se relacionar, e são geralmente desenvolvidos por equipes multidisciplinares, o que também exige bastante relacionamento interpessoal.
Dessa forma, além de habilidades técnicas, o bom engenheiro de software precisa contar com uma série de habilidades sociais e interpessoais. Habilidades que dizem respeito a como cada pessoa reage a situações, como ele lida com outras pessoas e como ela lida com o trabalho em si. Um profissional de qualidade deve, por exemplo, demonstrar capacidade de comunicação, planejamento e negociação.
Essas habilidades, de caráter não-técnico, parecem, à primeira vista, menos necessárias que as “Hard Skills”. Afinal, é mais importante que o programador saiba programar do que que ele saiba comunicar-se com os colegas. Embora essa noção não esteja de todo errada (um programador que não sabe programar não é um programador), também está muito longe de estar correta. Mesmo profissionais com grande capacidade técnica vão ter capacidade reduzida se não souberem, por exemplo, trabalhar em equipe. As habilidades de natureza social são conhecidas como “Soft Skills”, ou habilidades flexíveis, em uma tradução literal.
Se observarmos os currículos de engenheiros de software; as grades curriculares da maior parte dos cursos da área; a forma como a maioria dos profissionais da área se apresenta ou mesmo os requisitos de grande parte das ofertas de emprego ou estágio, veremos um foco muito maior em “Hard Skills “e pouca atenção às “Soft Skills”. Caso peçamos para qualquer engenheiro de software elencar quais suas habilidades, a maioria listará apenas habilidades técnicas. Por que isso acontece?
Para começar pelo óbvio, “Hard Skills” nos definem profissionalmente. Se um determinado profissional indica que tem várias habilidades na área de bancos de dados e Business Intelligence, é bem provável que ele será um bom engenheiro de dados. A área da engenharia em que temos condições de produzir melhor é definida pelas habilidades técnicas que mais dominamos.
Existem, no entanto, outros motivos. Primeiro, “Hard Skills” são mais fáceis de serem provadas ou verificadas. Em segundo lugar “Soft Skills” são mais difíceis de desenvolver. Observemos esses itens individualmente.
Como demonstrar para um colega ou um potencial empregador domínio de uma determinada habilidade técnica? Existem diversas formas. Podemos apresentar certificados de cursos ou certificações em testes da área. Podemos também simplesmente demonstrar nossas habilidades na prática.
Por exemplo, caso um engenheiro queira demonstrar que está habilitado para programar em Java, ele tem algumas opções:
1. Pode apresentar um certificado de curso em programação Java por uma instituição de treinamento reconhecida no mercado.
2. Pode apresentar sua certificação Oracle Certified Associate, Java SE 8 Programmer.
3. Pode simplesmente implementar um programa em Java, demonstrando assim sua capacidade de fazê-lo.
Da mesma forma, um potencial empregador que queira verificar se um candidato tem uma “Hard Skill” necessária, pode simplesmente pedir que ele demonstre possuir essa habilidade, utilizando qualquer uma das formas já citadas. Pode ainda fazer perguntas ou questionários para verificar o conhecimento do candidato.
Por outro lado, “Soft Skills” não podem ser verificadas de forma tão simples. Não existem autoridades certificadoras de iniciativa ou ética, por exemplo. E o fato de um engenheiro ter sido aprovado em um curso de, digamos, raciocínio lógico, não garante que ele tenha essa habilidade.
Da mesma forma, demonstrações de “Soft Skills” são muito complexas de serem analisadas. A maioria das habilidades não técnicas não podem ser facilmente avaliadas em curtos períodos, como uma entrevista de emprego, por exemplo. Na verdade, a maioria das “Soft Skills” podem ser convincentemente simuladas em espaços de tempo pequenos. Não é difícil para um candidato, por exemplo, fingir que tem ótimas habilidades de cooperação por alguns dias, mas se isso não é real ele não conseguirá manter a imagem indefinidamente.
Para verificação rápida de “Soft Skills”, as técnicas provavelmente mais eficientes são perguntas bem-feitas e observação das reações dos candidatos diante das perguntas ou em dinâmicas. Perguntas diretas, no estilo “Você se considera um profissional inovador?” não costumam dar bons resultados, visto que o candidato geralmente dará a resposta que se espera ouvir. As perguntas devem ser direcionadas a como o profissional trabalha e como ele resolveria ou resolveu situações que exigiam as “Soft Skills” desejadas, ou direcionadas a provocar reações específicas no candidato. Dinâmicas devem colocar os candidatos em situações que exigem as habilidades necessárias, para que se possa observar de forma simples como os candidatos se comportam.
Esses métodos, no entanto, são bem menos precisos e, portanto, bem menos eficazes do que os métodos de avaliação de “Hard Skills”.
O processo de aquisição ou melhoria de habilidades é conhecido como “desenvolvimento de habilidades”. Como podemos desenvolver “Hard Skills” e “Soft Skills”? “Hard Skills” podem ser desenvolvidas através de aulas, treinamentos, cursos e outras técnicas tradicionais. O aprendizado de uma nova linguagem pode se dar simplesmente pela leitura de manuais e tutoriais. Embora não seja necessariamente fácil, existem técnicas específicas e conhecidas que nos permitem desenvolver essas habilidades.
“Soft Skills” por outro lado são mais complexas de desenvolver. Embora existam cursos, palestras e outras atividades voltadas para o desenvolvimento dessas habilidades, a eficácia delas é menos previsível do que com atividades tradicionais. Atividades de coaching, por exemplo, podem ter efeito muito positivo para algumas pessoas, enquanto resultado praticamente nulo para outras.
Além disso, “Soft Skills” têm impacto muito maior da personalidade do profissional. Um engenheiro de software tímido, por exemplo, pode ter dificuldade de absorver ou demonstrar capacidade de liderança. Isso pode, ainda, tornar o profissional resistente a desenvolver certas habilidades, visto que envolve lidar com limitações da própria personalidade. Pessoas com autoimagem exacerbada podem, por exemplo, ter problemas para resolver conflitos e se recusarem a entender que isso seja um problema.
Por ser uma atividade social, várias “Soft Skills” têm alto impacto no trabalho do profissional de software. A importância de cada habilidade é subjetiva e variável.
Vários estudos podem ser encontrados sobre as “Soft Skills” mais importantes no mercado de Tecnologia da Informação. Um artigo de Gerardo Matturo analisa as habilidades mais pesquisadas na academia, enquanto trabalhos de Faheem Ahmed e Abigail Sanders analisam as habilidades mais requeridas no mercado. Apesar de terem abordagens e metodologias diferentes, os trabalhos encontram algumas “Soft Skills” em comum entre as mais citadas.
Observemos essas habilidades e suas características individualmente:
Em qualquer função que o engenheiro de software assumir, a comunicação com colegas de equipe ou clientes será extremamente necessária para completar o trabalho. O profissional precisa discutir problemas e soluções com os demais membros da equipe, negociar distribuição de tarefas com gerentes e, dependendo da função, discutir as necessidades dos clientes com eles.
Assim, a habilidade de expressar ideias de maneira clara e, preferencialmente, concisa, seja oralmente ou por escrito, é vital para manter um bom trabalho em equipe e um bom levantamento de requisitos. Habilidades de comunicação podem ser desenvolvidas através da leitura e de cursos de redação e oratória.
O desenvolvimento de software é comumente um trabalho coletivo. Em atividades assim, o trabalho de cada membro depende do trabalho e da atitude de outros membros da equipe.
Dessa forma, o engenheiro de software deve ter a capacidade de trabalhar de forma efetiva como membro da equipe e colaborar com os colegas para alcançar os objetivos do projeto.
Habilidades de trabalho em equipe podem ser desenvolvidas na prática, participando de diversos projetos. Pode, também, ser desenvolvida através de cursos ou atividades de coaching.
Vale ressaltar que a habilidade de trabalho em equipe é altamente influenciada pela personalidade do profissional. Por isso, pode estar entre as mais complexas de se desenvolver.
Habilidades interpessoais, às vezes chamadas de competência social, são as habilidades que usamos no dia a dia ao interagir com outras pessoas. São características como empatia, respeito e civilidade, entre outros.
Essas habilidades são claramente importantes em qualquer área de trabalho, em especial nas áreas que envolvem grande interação social. Dessa forma, engenharia de software, sendo um trabalho social, é altamente afetada por elas.
Não é difícil ver como a capacidade de interagir com outros pode interferir no trabalho do engenheiro. Manter um bom relacionamento com superiores, colegas e clientes é indispensável para o bom andamento dos projetos de software.
Habilidades interpessoais são, provavelmente, as mais intimamente ligadas à personalidade do profissional. Assim, podem ser bastante difíceis de desenvolver.
Algumas pessoas chegam a dizer que essas habilidades são inatas, mas isso não é de todo verdade. Embora uma parte importante do desenvolvimento delas se dê antes da vida profissional, na infância e juventude, é possível desenvolvê-las na vida adulta. Isso geralmente envolve reflexão pessoal e pode ser auxiliado por psicólogos ou coachees.
Desenvolvimento de software envolve encontrar e resolver problemas, sejam os problemas do cliente resolvidos pelo produto, os problemas de desenvolvimento surgidos durante o projeto, ou mesmo os problemas internos da equipe.
Por isso, o engenheiro de software deve ser capaz de localizar problemas e a estudá-los de forma crítica e analítica, levando assim a sugestão de possíveis soluções. Deve, também, ter a capacidade de avaliar diferentes soluções para poder escolher a melhor proposta possível.
Para desenvolver habilidades de solução de problema deve-se exercitar o raciocínio lógico, em especial o raciocínio analítico. Existem diversas atividades que permitem exercitar seu raciocínio, desde atividades formais até mesmo alguns jogos de lógica.
Essa também é a “Soft Skill” que mais pode ser ajudada por ferramentas. Aprender a lidar com ferramentas de decisão, como mapas mentas ou diagramas de fluxo podem auxiliar bastante na capacidade do profissional. Vale ressaltar que o conhecimento dessas técnicas e ferramentas conta como uma “Hard Skill”, fazendo da solução de problemas uma “Soft Skill” que pode se valer de “Hard Skills” para sua aplicação.
Assim, podemos observar que é importante estudar e desenvolver “Soft Skills” da mesma forma que se desenvolvem as “Hard Skills”. Vimos também que essas habilidades podem se apresentar mais difíceis de desenvolver e exigir esforços diferentes dos que a maioria dos profissionais de Engenharia de Software está acostumado.
Rua Dr. José Auto de Abreu, 2929 - Morada do Sol - 64055-260 - Teresina-PI
Telefone: (86) 3133-7070 - E-mail: contato.icev@somosicev.com