William Niemiec

Olá,
Eu sou William

eu trabalho com

Sobre Mim

Sobre Mim

William Niemiec - PMP | Full-Stack Developer | Ph.D. Student

Eu sou William Niemiec

PMP | Desenvolvedor Full-Stack Sênior | Estudante de Doutorado

William Niemiec tem 5 anos de experiência como desenvolvedor full-stack e é estudante de doutorado no Instituto de Informática da Universidade Federal do Rio Grande do Sul (UFRGS) desde 2024. Ele também trabalha como desenvolvedor de sistemas sênior na empresa Paytrack no Brasil. Ele gerenciou vários projetos, bem como desenvolveu diversos sistemas, incluindo aplicações back-end, front-end e mobile. Em paralelo, ele tem pesquisado engenharia de software em saúde desde 2021, participando de conferências de saúde e organizando workshops com profissionais de saúde. Seus estudos também incluem protocolos de interoperabilidade como HL7 e FHIR. Ele também tem interesses de pesquisa em Engenharia de Software, Engenharia de Software Baseada em Componentes, Desenvolvimento Dirigido por Modelos e Inteligência Artificial aplicada em saúde.

+5

anos de experiência

+35

projetos trabalhados

7

equipes lideradas

Habilidades & Competências

Linguagens

CC
C#C#
C++C++
JavaJava
JavaScriptJavaScript
PHPPHP
PythonPython
TypeScriptTypeScript

Frontend

AngularAngular
BootstrapBootstrap
CSS3CSS3
HTML5HTML5
jQueryjQuery
NextJSNextJS
ReactJSReactJS
SassSass
TailwindCSSTailwindCSS

Backend

AdonisJSAdonisJS
DjangoDjango
ExpressJSExpressJS
FHIRFHIR
LaravelLaravel
NestJSNestJS
NodeJSNodeJS
Spring BootSpring Boot
WordPressWordPress

Mobile

FlutterFlutter
React NativeReact Native

Bancos de Dados

FirebaseFirebase
MongoDBMongoDB
MySQLMySQL
PostgreSQLPostgreSQL

Infraestrutura & Nuvem

Apache ServerApache Server
AWSAWS
DockerDocker
GCPGCP
KubernetesKubernetes
NginxNginx
SentrySentry
UbuntuUbuntu

Inteligência Artificial

NLP, LLM, and MLNLP, LLM, and ML
Claude CodeClaude Code
GitHub CopilotGitHub Copilot
CursorCursor
Kilo CodeKilo Code

Ferramentas

FigmaFigma
Git VCSGit VCS
GitHubGitHub
JiraJira
NotionNotion

Minha Educação

Faculdade

Doutorado em Ciência da Computação

Universidade Federal do Rio Grande do Sul | UFRGS

2024-2028 | Em andamento

Faculdade

Bacharelado em Ciência da Computação

Universidade Federal do Rio Grande do Sul | UFRGS

2018-2024 | Concluído

Escola

Ensino Médio

Colégio Estadual Piratini

2014-2016 | Concluído

Escola

Ensino Fundamental

Escola Estadual de Ensino Fundamental Dr. Gustavo Armbrust

2005-2014 | Concluído

Alguns dos meus Projetos

Automaton Reader

Automaton Reader

Este é um projeto sobre autômatos. Consiste em uma aplicação que permite realizar certas operações em autômatos.

Barber Tracker

Barber Tracker

Aplicativo para pessoas encontrarem barbeiros próximos e agendarem cortes de cabelo. É desenvolvido usando React Native.

Plataforma de e-Commerce

Plataforma de e-Commerce

Um projeto de site de e-commerce construído usando PHP.

ExecutionFlow

ExecutionFlow

ExecutionFlow é uma ferramenta para rastrear caminhos de teste executados em código Java. A ferramenta é baseada no uso de um depurador, programação orientada a aspectos e um framework de testes.

Fitness Tracker

Fitness Tracker

Um aplicativo simples de exercícios feito usando React Native.

Plataforma de Aprendizado

Plataforma de Aprendizado

Projeto de site sobre uma plataforma de aprendizado construída com PHP junto com o framework Selenium para testes.

Mobilex Compiler

Mobilex Compiler

Um framework genérico para desenvolvimento mobile multiplataforma baseado em linguagem web.

Plataforma de Fórum

Plataforma de Fórum

Forum é um fórum web simples construído com servlets e páginas JSP junto com o framework Selenium para testes.

PacBros

PacBros

Um jogo estilo PacMan com música do Super Mario Bros.

PokeMaze

PokeMaze

Jogo simples de labirinto com tema Pokémon. O objetivo é pegar a Pokébola. Para isso, o jogador deve primeiro encontrar o pikachu para limpar o caminho até a Pokébola. Charizard (dragão) indica onde está a Pokébola.

Puzzle 5 Star

Puzzle 5 Star

Puzzle 5 Star é um jogo de quebra-cabeça construído com Ionic Framework junto com Angular.

Lista de Compras

Lista de Compras

Site construído com Ionic Framework junto com Angular para um sistema simples de compras. Esta aplicação foi feita com o único propósito de aprender melhor o framework Ionic.

SociaLine

SociaLine

Socialine é uma aplicação cliente-servidor simples inspirada em como o Twitter funciona. O principal objetivo de seu desenvolvimento foi aprofundar o conhecimento de aprendizado em programação concorrente e replicação passiva.

Rede Social

Rede Social

Um projeto simples de site de rede social construído com PHP.

Takere

Takere

Uma plataforma no-code para o desenvolvimento de aplicações mHealth baseadas em planos de cuidado.

Text Player

Text Player

Este é um projeto Java cuja funcionalidade consiste em gerar sons a partir de qualquer texto fornecido.

Travel Tracker

Travel Tracker

Um aplicativo de guia de viagem mobile construído com Flutter Framework.

UniversiTask

UniversiTask

UniversiTask é um gerenciador de tarefas acadêmicas focado em priorizar tarefas de acordo com seus prazos. A grande diferença em comparação com outros aplicativos similares é que eles focam mais em tarefas, enquanto no UniversiTask o foco está nos prazos.

Experiência

Desenvolvedor de Sistemas Sênior

Paytrack | Período integral

Nov 2025 - Presente

Desenvolvedor Full-stack & Gerente de Projetos

Cognitiva Brasil | Período integral

Nov 2022 - Nov 2025

Estágio docência

Universidade Federal do Rio Grande do Sul | Estágio

Out 2024 - Jun 2025

Desenvolvedor Full-stack

EVE | Freelance

Mai 2023 - Nov 2023

Desenvolvedor Full-stack

AVIWA | Freelance

Mar 2023 - Nov 2023

Iniciação Científica

Universidade Federal do Rio Grande do Sul | Estágio

Fev 2020 - Out 2022

Pesquisa & Publicações

Meus interesses de pesquisa incluem engenharia de software em saúde, protocolos de interoperabilidade como HL7 e FHIR, e inteligência artificial aplicada em saúde. Também tenho um forte interesse em engenharia de software baseada em componentes, desenvolvimento dirigido por modelos e desenvolvimento sem código. Além disso, coordeno o projeto Takere juntamente com a professora do Instituto de Informática da UFRGS, Érika Fernandes Cota, e o farmacêutico clínico do HCPA - Hospital de Clínicas de Porto Alegre, Douglas Nuernberg de Matos. O projeto Takere consiste em pesquisar formas de melhorar o tratamento de pacientes e respectivo acompanhamento por profissionais da saúde através do uso de técnicas de IA e de engenharia de software. O projeto é interdisciplinar, unindo as áreas de informática e saúde.

8

publicações

2

revisões em pares

9

orientações

2

bancas avaliadoras

2026

Improving Software Quality Through AI-Assisted Discovery in a Large Enterprise System
Simpósio Brasileiro de Engenharia de Software (SBES)

Improving Software Quality Through AI-Assisted Discovery in a Large Enterprise System

Sistemas corporativos de grande porte evoluem frequentemente por meio de atividades de manutenção contínuas, mudanças nos requisitos de negócios e contribuições de várias equipes, sem as atualizações correspondentes em sua documentação técnica. Com o tempo, esse processo leva a um conhecimento fragmentado, à redução da compreensão do sistema e a práticas de manutenção cada vez mais reativas. Este artigo relata a experiência de reestruturação do módulo de mobilidade do Paytrack, uma plataforma de gestão de viagens e despesas de grande escala. Para lidar com problemas operacionais recorrentes, uma equipe dedicada conduziu um processo sistemático de descoberta e engenharia reversa, combinando análise colaborativa de código, decomposição de histórias técnicas, documentação orientada à abstração, geração de artefatos por meio de inteligência artificial e sessões contínuas de compartilhamento de conhecimento. Uma das principais contribuições desta iniciativa foi a *Abstract Sketch Strategy* (Estratégia de Esboço Abstrato), uma abordagem focada em representar fluxos complexos do sistema utilizando abstrações de nível mais alto para melhorar a legibilidade e reduzir a sobrecarga cognitiva. Após quatro meses, a iniciativa resultou em uma redução de 75% nos *bugs* escalonados para a equipe de desenvolvimento e uma redução de 90,13% na taxa de contato relacionada ao módulo. Além disso, a iniciativa aprimorou o compartilhamento de conhecimento coletivo e aumentou a manutenibilidade do sistema, fazendo com que a equipe passasse de um desenvolvimento reativo para um preventivo.

A Methodology for Generating Mobile Applications Through Large Language Models
IEEE/ACM 13th International Conference on Mobile Software Engineering and Systems (MOBILESoft)

A Methodology for Generating Mobile Applications Through Large Language Models

A criação de aplicativos utilizando Grandes Modelos de Linguagem (LLMs) é uma área em rápido crescimento na engenharia de software. Embora a demanda por aplicativos móveis aumente, poucos estudos têm sido conduzidos para investigar como gerá-los por meio de LLMs, devido à complexidade de lidar com o ecossistema móvel. Neste trabalho, apresentamos e validamos uma metodologia independente de plataforma para a geração e avaliação de aplicativos móveis completos a partir de descrições de alto nível em linguagem natural. Nossa abordagem utiliza uma estrutura de LLM multiagente para gerenciar um processo de três etapas. Primeiramente, uma descrição detalhada do aplicativo móvel é gerada a partir de um documento escrito em linguagem natural. Em seguida, nossa metodologia converte a especificação em código-fonte executável. Após isso, avaliamos as funcionalidades implementadas e a qualidade do código-fonte. Esta metodologia é baseada em princípios importantes, incluindo cadeia de raciocínio (*chain-of-thought*) e simulação de papéis (*role-playing*). Nossos resultados mostram que a metodologia produz aplicativos compiláveis, estáveis e sem travamentos, com código-fonte de alta qualidade. No entanto, as taxas de implementação de funcionalidades variaram, com muitas funções incompletas ou totalmente ausentes, o que pode indicar os limites atuais da geração totalmente automatizada. Este trabalho fornece um processo padronizado e um *benchmark* reproduzível para a avaliação de aplicativos gerados por LLMs. De forma mais ampla, esta metodologia permite a criação de protótipos funcionais a partir de uma descrição de aplicativo de alto nível, acelerando, assim, o fluxo de trabalho de desenvolvimento.

2025

Leveraging Natural Language Processing for mHealth Development: A Component-Based Approach Using Nursing Taxonomies
IEEE International Symposium on Computer-Based Medical Systems (CBMS)

Leveraging Natural Language Processing for mHealth Development: A Component-Based Approach Using Nursing Taxonomies

Este artigo propõe a definição de componentes principais do domínio de saúde que podem ser usados como blocos básicos para o desenvolvimento de aplicações mHealth. Usando técnicas de Processamento de Linguagem Natural, analisamos sistematicamente todas as intervenções de saúde definidas na taxonomia de Classificação de Intervenções de Enfermagem para definir um conjunto abrangente de componentes básicos. Nossos resultados mostram que é viável definir um conjunto finito de componentes principais a partir da linguagem do domínio de enfermagem que podem ser posteriormente compostos em planos de cuidado de saúde, estabelecendo assim uma base para o desenvolvimento de soluções mHealth com esforço técnico reduzido.

Towards a component-based framework for mHealth apps: Bridging the gap between the nursing domain language and the computation domain
Journal of Systems and Software (JSS)

Towards a component-based framework for mHealth apps: Bridging the gap between the nursing domain language and the computation domain

Construir uma solução eficaz de saúde mobile é desafiador, exigindo uma base técnica sólida, colaboração próxima entre profissionais de saúde e desenvolvedores, atenção especial à experiência do usuário e manutenção contínua. Este artigo explora o potencial de uma solução de Engenharia de Software Baseada em Componentes adaptada para aplicações mobile de saúde, visando reduzir custos e complexidade de desenvolvimento. Primeiro investigamos a existência de elementos e comportamentos compartilhados entre diferentes estratégias de intervenção em saúde. Em seguida, avaliamos a possibilidade de criar um conjunto de elementos principais e reutilizáveis baseados na taxonomia NANDA-NIC-NOC, um framework padronizado para diagnósticos, intervenções e resultados de enfermagem. Nossos achados confirmam que é viável definir componentes principais derivados da taxonomia de enfermagem. Além disso, demonstramos que esses componentes podem efetivamente preencher a lacuna clínico-técnica, estabelecendo assim uma base para o desenvolvimento de soluções mHealth personalizáveis e específicas para pacientes com esforço técnico reduzido.

Avaliando a qualidade de aplicativos de saúde através da metodologia uMARS e do uso de personas
Simpósio Brasileiro de Computação Aplicada à Saúde (SBCAS)

Avaliando a qualidade de aplicativos de saúde através da metodologia uMARS e do uso de personas

Aplicações mobile de saúde tornaram-se ferramentas populares para auxiliar usuários com autocuidado. No entanto, há evidências limitadas sobre sua qualidade. Este estudo avalia aplicações de saúde gratuitas usando a metodologia User Mobile App Rating Scale (uMARS). Ao comparar características dos aplicativos com as expectativas de usuários típicos, a pesquisa identifica fatores que influenciam a adoção e retenção dessas soluções. Os resultados revelam variabilidade significativa na qualidade dos aplicativos, particularmente em usabilidade, credibilidade e alinhamento com necessidades individuais dos usuários. Esses achados destacam a necessidade de melhor alinhamento entre aplicativos de saúde e demandas dos usuários.

2022

Mobilex: a generic framework for cross-platform mobile development based on web language
Simpósio Brasileiro de Engenharia de Software (SBES)

Mobilex: a generic framework for cross-platform mobile development based on web language

Vários frameworks de desenvolvimento mobile permitem que desenvolvedores programem um único código para executar em diferentes tipos de dispositivos e sistemas operacionais. No entanto, o código da aplicação é dependente do framework escolhido, dificultando sua reutilização quando há necessidade de migrar para outros frameworks. Este artigo propõe um framework genérico para desenvolvimento mobile multiplataforma, que usa tecnologias web (HTML, CSS e JavaScript) como base para o desenvolvimento de aplicações. O uso dessa tecnologia para definir a aplicação e sua tradução automática para uma linguagem específica da plataforma facilita a produção e manutenção da aplicação em múltiplas plataformas. Este artigo discute a abordagem proposta e mostra, através de estudos de caso, que ela permite flexibilidade na escolha do framework de desenvolvimento multiplataforma, não sendo necessário alterar o código já desenvolvido em caso de mudança na plataforma de desenvolvimento. Apresentação em vídeo: https://youtu.be/ZS152tXUqBQ

Artificial intelligence discrimination: How to deal with it?
Workshop on the Implications of Computing in Society (WICS)

Artificial intelligence discrimination: How to deal with it?

O surgimento da inteligência artificial trouxe muitos benefícios para a sociedade através da automação de atividades como dirigir carros, entrega de produtos, classificação de itens e previsão de tendências com maior grau de precisão. No entanto, dependendo de como é usada, pode refletir problemas persistentes na sociedade, como discriminação. Neste artigo, discutimos discriminação por inteligência artificial. Começamos descrevendo esse problema e mostrando que é um problema recorrente e atual. Em seguida, mostramos a origem desse problema e propomos uma estratégia para lidar com ele a fim de evitar que aconteça novamente. Por fim, discutimos trabalhos futuros e como a estratégia proposta pode ser colocada em prática.

2021

ExecutionFlow: a tool to compute test paths of Java methods and constructors
Simpósio Brasileiro de Engenharia de Software (SBES)

ExecutionFlow: a tool to compute test paths of Java methods and constructors

Calcular a cobertura de código de um conjunto de testes depende da identificação dos caminhos de teste executados. Ferramentas de cobertura de código disponíveis são limitadas a algumas estratégias básicas de rastreamento e não fornecem essas informações como caminhos de teste adequados, impedindo seu uso em análises posteriores. Apresentamos ExecutionFlow, uma solução para rastrear caminhos de teste executados em código Java. A ferramenta é baseada no uso de um depurador, programação orientada a aspectos e um framework de testes. Através de validação empírica mostramos que é possível obter o caminho de teste de vários métodos e construtores, incluindo aqueles de alta complexidade. Demonstração em vídeo: https://youtu.be/2W5BjVuc6fw

Redes Sociais

William Niemiec © Todos os direitos reservados