Desenvolvendo planos de estudo eficientes

Neste artigo você vai ver:

Ao longo dos últimos dois anos a Zup Edu, o núcleo de Educação e Pesquisa da Zup, vem trabalhando para, entre outras coisas, oferecer treinos e programas de aceleração que apóiam a construção de um ambiente de evolução exponencial. E nessa história você vai ver como a criação de planos de estudos bem estruturados são importantes para acelerar a transferência de aprendizado e habilitar a construção de diferentes tipos de conteúdo.

No último semestre de 2021, começamos a trabalhar com o objetivo de aumentar nosso leque de conteúdo e facilitar também a evolução de carreira das pessoas desenvolvedoras de aplicativos para plataformas móveis.

De Android a iOS, viemos idealizando uma série de conteúdos que vão ajudar profissionais da empresa a dominarem conceitos, mas principalmente transferir o aprendizado para a vida real aumentando de forma concreta a performance entregue no campo de jogo. 

Neste cenário me inseri há aproximadamente 8 meses. Como missão: construir um programa de treinos que capacite pessoas desenvolvedoras para o trabalho com desenvolvimento iOS na Zup, ajudando assim a empresa a formar suas equipes com essa habilidade tão escassa no mercado atualmente. O problema: fazer isso tendo construído um mísero HelloWorld App diretamente sobre a plataforma da Apple.

Tem interesse em saber como foi possível essa jornada de aprendizado sobre a plataforma? Então pega uma xícara de café e se prepara que a história é boa. 

Contextualizando o desafio

Durante minha carreira como desenvolvedor, tive a felicidade de trabalhar na fronteira entre tecnologia e educação. Os pouco mais de três anos de experiência trabalhando no grupo Caelum Alura foram responsáveis por um aumento drástico na curva de aprendizado, tanto em capacidades técnicas, como também não-técnicas. A oportunidade de aliar engenharia de software ao esforço de estudo aprofundado, construção e curadoria de materiais didáticos e técnicas de ensino no tempo de trabalho foi fator fundamental para isso.

Após um tempo trabalhando exclusivamente com desenvolvimento de produto, recebi o convite para atuar na Zup Edu e topei o desafio de voltar a esse ambiente. A equipe precisava crescer para construir ainda mais acelerações demandadas pela empresa, e por vir trabalhando nos últimos dois anos sobre as plataformas móveis – ainda que a nível não-nativo – a ideia era trazer essas competências para o time.

Havia alguma incerteza sobre as primeiras acelerações necessárias. Desenvolvimento iOS ou sobre as abstrações providas por frameworks como React Native ou Flutter, eram algumas opções. No entanto, após algumas discussões a aposta que parecia mais certeira era investir na plataforma de base sobre a qual as outras dependem direta ou indiretamente do conhecimento. Com isso eu tinha meu desafio: preparar uma aceleração sobre desenvolvimento de aplicações iOS nativas, tendo que, antes disso, adquirir as competências de devs iOS.

De um lado, estava confiante pois já tinha passado por situações parecidas na experiência anterior. Por outro, dessa vez a ideia não era apenas estudar um framework ou conceitos avançados de uma plataforma já conhecida. Era preciso estudar uma plataforma do zero, suas características, especificação de linguagem, alguns frameworks base necessários para construir aplicações, e tudo aquilo que vem no pacote. ?

Todo esse trabalho deveria ainda ser realizado no período mais curto possível, para que as necessidades das áreas interessadas tão logo fossem endereçadas. Era preciso então alguma forma estruturada de guiar o aprendizado, capaz de acelerar essa transferência de conhecimento.

Construindo um método para aceleração do aprendizado

Assim que o processo de onboarding na equipe foi concluído, em meio àquela apreensão causada pela percepção ainda meio turva sobre o volume de coisas a serem estudadas, tivemos nossas primeiras conversas para traçar o plano de estudos. O primeiro desejo era ter mais visão sobre os tópicos fundamentais para dominar o desenvolvimento sobre a plataforma. Tendo isso em vista, poderíamos então dar os próximos passos.

Mapa de habilidades técnicas

Através de um brainstorming, foi possível criar um mapa de habilidades técnicas bem específicas divididas por tópicos organizados entre o que estava relacionado à especificação da linguagem Swift, ao desenvolvimento iOS, aos SDKs fundamentais da plataforma, qualidade de código, ferramentas de gestão e segurança.

Mapa de Habilidades Técnicas
SwiftiOSInfra SDKs: APIse FrameworksQualidadeGestão ePlataformaSegurança
Sistema de Tipos,Variáveis, Constantese OperadoresUIKitVídeo, Áudio e Biblioteca de MúsicasTestes UnitáriosGerenciamento de Dependências (CocoaPods)Gestão dePermissões
Tipos OpcionaisAuto LayoutBiblioteca de Fotose CâmeraTestes de IntegraçãoGestão deCertificados e ProfilesControles deAutenticação eAutorização
ColeçõesView CodeContatosTestes de Aceitação(end to end)Automação de Builde Delivery (Fastlane)2FA e Tokensde Acesso
Controle de FluxoControles deNavegaçãoCalendárioAnálise de Código (SonarQube)Beta Testing(TestFlight)Gestão de Senhas,Chaves e Secrets
FunçõesAPI de AnimaçõesGeolocationFormatação eStyle Guide (SwiftLint)PublicaçãoApp StoreRetenção Mínimade Dados
Classes, Structse ProtocolosSwift UISensoresDesign Patternscom SwiftVersionamento e Release ManagementTermos de Uso e Políticas de Privacidade
Extensions e Protocol ExtensionsDesign System (Voxel)Social SDKsDesign de Códigoe ArquiteturaObservabilidade(auto capture)SDKs e Patternsde Segurança
GenericsServer-Driven UI (Beagle)MapasModular ArchitectureLogging e ErrorTracing (Sentry)Comunicação Segura(TLS e VPN)
Error HandlingiOS Human Interface GuidelinesData FetchingHTTPCrash Reporting (CrashLytics Firebase)SSL Pinning
SubscriptingDeep LinkingCloud Messaging (Firebase)Ofuscação de Código (iXGuard, Obfuscator)
ClosuresWeb ViewAnalytics (Firebase)
Concorrênciae ParalelismoComunicação AppSandboxesA/B Testing(Firebase)
Tipos CustomizadosEstados e Ciclo deVida da AplicaçãoFeature Toggles e Remote Configs (Firebase)
Gerenciamentode MemóriaPersistênciaApp StoreReview Guideline
In-app Purchases
Push Notifications

Aqui foi muito importante recorrer ao conhecimento empírico construído na experiência trabalhando com desenvolvimento móvel, mas também utilizar a visão de especialistas da empresa conhecedores da stack utilizada.

Curadoria de fontes teóricas

Assim que identificamos as habilidades técnicas que se desejava desenvolver, foi possível avançar a um próximo passo:

  • Como e onde aprender sobre todos estes tópicos?
  • Quais fontes teóricas podem ser utilizadas para apoiar o estudo?
  • Qual nível de autoridade estas fontes têm sobre o tema?

Estas foram algumas perguntas que inspiraram um processo de curadoria de toda a fonte de conhecimento ofertada na internet e nas plataformas de ensino. Respondendo a elas conseguimos definir quais conteúdos poderiam ser consumidos, ordenados de forma a aumentar progressivamente a complexidade e cujas fontes foram classificadas e selecionadas levando em conta seu nível de autoridade sobre o tema.

As fontes teóricas foram classificadas por nível de autoridade e facilidade de consumo. No geral, quanto maior o coeficiente entre esses dois fatores, maiores as chances de um bom aprendizado sobre o tema. 

Quando pensamos em níveis de autoridade, idealizamos uma escala de 1 a 3, sendo 3 o maior grau, representando no geral materiais publicados oficialmente pela própria Apple:

  1. Formações Swift e iOS da Alura
  2. Livros e autores O’Reilly Learning e plataforma Raywenderlich
  3. Apple Books, Documentações e Tutoriais

Já avaliando a facilidade do consumo, levamos em conta o formato de mídia utilizado, nível de suporte e facilitação para a transferência do conhecimento, a qualidade da produção, idioma, entre outros aspectos. Por essa visão temos uma classificação praticamente inversa à anterior.

Estabelecemos então uma estratégia que visava combinar estes dois fatores, favorecendo a performance no consumo, mas sem abrir mão de consumir e validar o conhecimento junto à fonte de maior autoridade.

Imagem com o primeiro esboço do processo de análise das fontes teóricas.

Dado mais esse passo, temos uma ideia do que e onde estudar, mas ainda falta visão.

Onde esperamos chegar? Como organizar a sequência de eventos necessária para que tenhamos de fato um plano? Essas perguntas precisavam ser respondidas para gerar dois importantes elementos do planejamento.

Objetivos de capacidade

Precisávamos agora idealizar onde queríamos chegar e o que queríamos ser capazes de fazer com a tecnologia. Iniciar os estudos sem objetivos claros a serem atingidos poderia comprometer não só o andamento do processo mas também os resultados esperados ao final dele.

Depois desse exercício de olhar para frente e esboçar as capacidades desejadas, chegamos aos objetivos abaixo.

Objetivos de Capacidade
Ser capaz de desenvolveraplicativos com aparência e usabilidade reconhecidas através de avaliações de usuárioAprender Swift com profundidade.Ter domínio do iOS SDKe entender os objetivos das decisões de design da plataforma.Ter bons conhecimentos sobre os Guidelines da Apple para o desenvolvimento de apps.
Ter domínio sobre ferramentas e práticas de layout e usabilidade (UIKit, Swift UI).
Ser capaz de efetuar commits e tê-los aprovados através de Pull Request em projeto relevante para a plataforma iOS ou stack front da Zup.Aprender Swift com profundidade.Ter domínio do iOS SDKe entender os objetivos das decisões de design da plataforma.Conhecer interoperabilidade com Objective-C e heranças do modelo de desenvolvimento anterior.
Estudar projetos Open Source.Estudar e começar pelo Beagle.
Ser capaz de aplicar mentoria técnica (para JRs/PLs) com foco em desenvolvimento iOS de modo a contribuir coma evolução técnica de mentorandosAprender Swiftcom profundidade.Ter domínio do iOS SDKe entender os objetivos das decisões de design da plataforma.Ter bons conhecimentossobre os Guidelines da Apple para o desenvolvimentode apps.
Conhecer interoperabilidadecom Objective-C e herançasdo modelo dedesenvolvimento anterior.Ter domínio sobre práticas de qualidade com Swift/iOS.Ter domínio sobre ferramentas de gestão e segurança.
Estudar sobre mentoria técnica.
Ser capaz de impactara plataforma móvel da empresa e a comunidade com minhas opiniões sobre o temaAprender Swiftcom profundidade.Ter domínio do iOS SDKe entender os objetivos das decisões de design da plataforma.Ter bons conhecimentos sobre os Guidelines da Apple para o desenvolvimento de apps.
Conhecer interoperabilidade com Objective-C e heranças do modelo de desenvolvimento anterior.Conhecer funcionamento da LLVM e run time environment.Consumir conhecimento que está sendo produzido pela comunidade em seus eventos.
Seguir pessoas influentes na comunidade e consumir o que produzem. Interagir se possível.Conversar com pessoasda Zup e comunidade:slack ios dev br.

Além de elaborar os grandes objetivos de capacidade, foram listados elementos que se relacionam com as habilidades necessárias para atingi-los.

Com objetivos centrais de capacidade definidos, o quadro foi organizado por complexidade e o primeiro deles foi selecionado. “Ser capaz de desenvolver apps com aparência e usabilidade reconhecidas” que para viabilidade dado o contexto da Zup Edu pôde ser traduzido em “Ser capaz de reproduzir apps com aparência e usabilidade reconhecidas“.

Prática deliberada

Mesmo olhando para os objetivos de capacidade, algo ainda parecia fora do controle. Temos o objetivo, mas nada ainda que consiga guiar, de fato, o processo. Quais os passos que precisamos dar para chegar ao objetivo? 

As fontes teóricas selecionadas já apresentavam uma série de atividades práticas e exercícios para ajudar a fixar o conteúdo estudado, mas além de não estimularem a repetição e recuperação de conteúdo de forma suficiente ao longo do processo de aprendizagem, praticar apenas por estes meios nos faria caminhar através do objetivo de aprendizagem de cada material ao invés do nosso. 

Precisávamos de uma sequência de atividades práticas que aumentasse a dificuldade do desafio e alimentasse a busca por novas descobertas e desenvolvimento das próximas habilidades, nos aproximando do nível de complexidade necessário para atingir o objetivo de capacidade selecionado.

Prática Deliberada
Aplicativo da Casa do Código (simples – visão de admin)
– CRUD de Autor- CRUD Livro
CapacidadesrelacionadasAprender Swiftcom profundidade.Ter domínio do iOS SDK e entender os objetivos das decisões de design da plataforma.
Habilidades técnicasType System, Variáveis,Constantes e Operadores.Tipos Opcionais.Coleções.Controle de Fluxo.
Funções.Classes, Structs e Protocolos.Error Handling.Tipos customizados.
Closures.UIKit.Auto Layout.Controles de Navegação.
Data Fetching HTTP.Gerenciamento deDependências(CocoaPods).
Aplicativo da Casa do Código (visão cliente)
– Home com filtro- Tela de Detalhe (push/pop)- Tela de Checkout- Tela de Perfil
CapacidadesrelacionadasAprender Swiftcom profundidade.Ter domínio do iOS SDK e entender os objetivos das decisões de design da plataforma.
Habilidades técnicasHabilidades doprojeto anterior.Biblioteca de Fotos e Câmera.Persistência.View Code.
Design de Código.Controles de Autenticaçãoe Autorização.
Gym.app
– Splash Screen- Onboardinge Location Permissions- Login- Home (layout design)e Profile- Checkin (geolocation service;listagem de academiascom layout complexoe animações)
Capacidades relacionadasAprender Swift com profundidadeTer domínio do iOS SDK e entender objetivos por trás das decisões de design da plataformaTer domínio sobreferramentas e práticas de layout e usabilidade
HabilidadestécnicasHabilidades doprojeto anterior.Design Patterns com Swift.Arquitetura.Formatação e Style Guide (SwiftLint).
Testes Unitários.Testes de Integração.Testes e2e.Gestão de Permissões.
Gestão de Senhas, Chaves e Secrets (iCloud Keychain?)Gestão de Certificadose Profiles*Beta Testing com Testflight*Detalhes sobrepublicação na AppStore*
Aplicativo do ITI
– Login com Face Recognition/fingerprint scan- Abertura de Conta- Solicitação de Cartãode Crédito- Pix- Movimentações da carteira
Capacidades relacionadas
Habilidades técnicas

Além de planejar os desafios com progressão de complexidade, para ter clareza sobre o que se desejava colocar à prova, relacionamos cada um deles com o grupo de habilidades envolvidas no desenvolvimento, assim como os objetivos de capacidade que estavam sendo endereçados no decorrer do trabalho.

*Atividades apenas de estudo aprofundado, sem contexto de execução real ou submissão do aplicativo para a loja.

A escolha dos temas dos apps desafio levaram em conta o conhecimento do domínio dos produtos, focando assim apenas em desenvolver os aspectos técnicos em cada atividade durante a execução do plano.

Com esses quatro grandes elementos combinados tínhamos então nosso plano de estudos estruturado e com ele a possibilidade de encarar cada fase do desenvolvimento de forma mais assertiva.

Implementação do plano de estudos

A partir desse ponto do trabalho tudo estava suficientemente claro. Tínhamos fontes de conhecimento curadas, objetivos traçados, uma série de desafios práticos relacionados a eles e que trabalhavam sucessivamente os grupos de habilidades que precisava desenvolver. Com a adição de alguns prazos para cada “entregável”, agora era só uma questão de executar cada passo.

Em ordem, durante a execução do plano, foram realizadas as seguintes atividades de estudo teórico e prática deliberada:

  1. Formação Swift/iOS na Alura e leitura de partes específicas do Apple Book The Swift Programming Language. (estudo teórico)
  2. Desenvolvimento do primeiro desafio: visão de administração da Casa do Código. (prática deliberada)
  3. Leitura e codificação dos exercícios do livro iOS Programming: The Big Nerd Ranch Guide. (estudo teórico)
  4. Desenvolvimento do segundo desafio: visão de cliente da Casa do Código. (prática deliberada)
  5. Raywenderlich.com Pro Articles and Courses. (estudo teórico)
  6. Leitura de capítulos específicos do Programming iOS 14: Dive deep into Views, View Controllers and Frameworks (Matt Neuburg) – O’Reilly Learning book. (estudo teórico)
  7. Desenvolvimento do terceiro desafio: App réplica de um famoso serviço de academias e bem-estar. (prática deliberada)

? Durante todo o processo de desenvolvimento foram realizadas consultas ao conteúdo da documentação oficial para assegurar a validade do conteúdo consumido.

Gif com uma simulação de navegação do primeiro exercício.
Gif com uma simulação de navegação do segundo exercício.

? Os apps que foram construídos durante a prática deliberada dos conteúdos estudados podem ser encontrados nos links abaixo. A ideia era justamente codificar aplicações que explorem situações mais próximas da vida real e garantir a aderência dos conceitos.

Tudo correu bem e dentro do esperado. Mas não só graças a todo o planejamento. Como garantir que estamos caminhando na direção certa? Essa era a pergunta feita no início de cada fase de exploração e que levanta importantes pontos de atenção sobre o processo de execução de um plano de estudos.

Validando o aprendizado no decorrer do percurso

O plano serviu muito bem para iluminar o caminho, mas é sabido que durante qualquer jornada é muito possível que nos desviemos ao longo do percurso. Quando se trata então de uma jornada de aprendizado, o risco inerente é sempre o de ter uma falsa sensação de aprendizado, ou de forma mais simples o de “aprender errado”. Assim, um bom processo de estudos precisa contemplar formas de correção recorrentes. Só dessa forma conseguimos assegurar que estamos aprendendo de maneira adequada e avançando na direção do objetivo.

Correções recorrentes e a mentoria

Evidências apontam que as formas mais eficazes de aprendizado são aquelas que envolvem o acesso recorrente a um mestre especialista no assunto, como por exemplo, ter um professor particular nos guiando em todo o processo, fazendo as correções e ajustes necessários. No lado oposto dessa linha que representa a eficácia da forma de estudo se encontram os modelos com menor suporte de especialistas no tema, onde podemos imaginar o estudo de forma autodidata

Fica clara a importância dessa variável na transferência de aprendizado. Quanto maior o acesso à correção externa, mais confiável tende a ser o resultado.

No nosso caso, como não era possível um modelo com suporte de um mestre totalmente dedicado ao processo de aprendizado, optamos pelo modelo com o maior suporte possível, adotando mentoria técnica.

A mentoria durante o processo de aprendizado se mostrou fundamental para a evolução do plano de estudo. Através de encontros semanais eram debatidos pontos da implementação dos projetos, bem como dúvidas técnicas de temas específicos. O mentor contribuiu para a calibração e aumento da auto-eficácia nos temas estudados, assim como ajudou a remover algum entendimento incorreto de materiais teóricos e a retirar vieses trazidos de experiências anteriores com outras plataformas e linguagens.

Ainda assim, como o acesso às correções não era instantâneo, e todo o trabalho era feito de maneira solo, em diversos momentos foi preciso estabelecer outras formas de se avaliar e corrigir. Então é possível afirmar que durante todo o processo as correções foram feitas progressivamente através de:

  1. Autopercepção da prática em relação à teoria estudada
    Depende única e exclusivamente da percepção da própria implementação tendo como base o conhecimento construído empiricamente sobre qualidade e design de código, somado ao estudo teórico prévio dos conceitos.
  2. Confrontação das implementações resultantes com o conteúdo de artigos e documentação relacionadas aos temas envolvidos
    Reforça o anterior adicionando confrontação das implementações resultantes das tarefas com as dos exemplos construídos pelas fontes teóricas (ainda com viés de autopercepção).
  3. Apontamento de possíveis correções e/ou melhorias pelo mentor técnico
    Valida de forma mais concreta a aderência dos conceitos estudados, trazendo a visão de um profissional especialista, experiente na plataforma, além de levantar importantes discussões nas sessões de mentoria e através de revisão de código nos Pull Requests dos repositórios.

Práticas de Elaboração e Recuperação

Ao final das implementações e posterior aos ajustes necessários, como forma de reforçar e assegurar o entendimento, notas de ensino sobre descobertas e pontos importantes do aprendizado eram registradas. 

Notas como as que estão presentes em alguns dos Pull Requests dos repositórios serviram como uma ferramenta de elaboração, onde se podia explicar e descrever ideias complexas sobre os temas estudados, e também de recuperação facilitada dos conceitos depois de aprendidos – assim como uma forma de compartilhar conhecimento com outras pessoas que possam seguir planos de estudo semelhantes sobre o tema.

Inspirações teóricas

Caso você esteja se perguntando se um belo dia acordamos e pensamos na criação de um plano bem elaborado e cheio de detalhes de implementação como esse, a resposta obviamente é “não”

Assim como viemos construindo um senso de efetividade no processo de estudo desde as primeiras experiências trabalhando com educação em tecnologia, tivemos também muitas inspirações teóricas e práticas por trás de cada estratégia apresentada até aqui.

Ainda que falar sobre as teorias por trás do estudo não seja o intuito desse post – pois estamos apenas compartilhando um pouco da nossa história como aprendizes – caso se interesse, algumas das referências utilizadas como base para o processo de aprender e ensinar dentro da Zup Edu são as seguintes:

Avaliando o resultado do processo

Como citamos anteriormente, é parte fundamental do processo se desafiar, avaliar e corrigir recorrentemente. Mas ao final de um ciclo de trabalho planejado pensamos que era importante, assim como analisar a qualidade dos apps construídos, uma maior exposição a avaliações externas, algo que fosse mais livre de vieses e representasse um bom desafio adicional.

Sendo assim resolvemos, além de coletar o feedback formal do mentor técnico, participar de processos seletivos para devs iOS em empresas que topassem ajudar no processo. Talvez a única diferença era que, ao invés de participar de um processo seletivo com uma régua definida (por uma vaga para Dev iOS PL, por exemplo) a ideia era fazer algo mais aberto, para que ao final os times técnicos das empresas nos dissessem se me fariam um convite para integrar o time e, caso o fizessem, para qual nível de senioridade ele seria.

Os processos seletivos incluíram duas fases bem comuns: um desafio de código e posterior entrevista técnica para aferir o conteúdo produzido e demais conceitos. Os processos seletivos foram realizados pelas empresas Abastece Aí e Loft, às quais agradecemos pela ajuda. 

Abaixo é possível perceber os resultados.

  • Feedback formal do mentor técnico:

“Sobre o Rafael, a evolução nos estudos de iOS dele foi bem sólida e consistente. Acredito que a sua bagagem de conhecimento em programação e as metodologias de aprendizado que ele usou foram essenciais para seu desempenho fora da curva.

Achei ele bem motivado, com vontade de querer aprender cada vez mais e fazia além do esperado nos seus estudos. No caso, sobre como ele seria avaliado aqui na Zup como dev iOS, suas experiências passadas são bem interessantes e ajudam na sua bagagem de conhecimento e a preencher alguns itens do role guide Sênior. 

Como ele já atuou em desenvolvimento mobile híbrido, web, instrutor na área de programação, já participou de projetos, trabalhou em equipe, resolveu problemas complexos etc, isso é um diferencial. O próximo fator que seria analisado são as suas novas skills de iOS, os projetos que ele entregou, os conceitos que ele sabe, que consegue argumentar e entender bem. E vendo seus projetos, como ele fez e evoluiu, acredito que ele se encaixaria com o nível de desenvolvedor Sênior aqui na Zup. Talvez tenha alguns gaps para preencher ou melhorar, mas pelo seu processo evolutivo até aqui isso seria tirado de letra.”

Ginaldo Junior, Desenvolvedor Especialista iOS na Zup

  • Feedback do time do Abastece Aí:

“A análise do profissional é feita normalmente em 3 pilares:

  1. Análise comportamental

Como o objetivo não era contratar o Rafael, para que tivéssemos o processo mais rápido e assertivo possível não realizamos essa análise, porém de forma geral ele é proativo, flexível e comprometido. Acreditamos que ele preenche todos os requisitos para atuar em times multidisciplinares com desafios intensos.

2.  Análise prática

Compartilhamos com o Rafael o desafio: https://github.com/rafael-rollo/desafio-ios

Sempre preenchemos uma página com observações sobre a execução do teste com objetivo de tentar enquadrar o profissional no que reconhecemos dentro da empresa como Jr. Pl. Sr.

Ele realizou com muita maestria o desafio, utilizou recursos complexos para organizar a camada de network e propôs uma arquitetura bem assertiva ao desafio.

3.  Análise comunicação

Soube contextualizar, e explicar todos os motivos pelos quais tomou as decisões que implementou. Possui habilidades sensacionais de comunicação.

Conclusão:

Rafael é um profissional ímpar, o time e eu o avaliamos como Sênior I, o que é realmente impressionante pelo tempo de estudo que ele dedicou ao tema.

Com certeza contrataríamos ele para o nosso time!”

Mauricio Olimpio, Mobile Chapter Lead na Abastece Aí

  • Feedback do time da Loft:

“Em relação ao código do Rafael, gostei bastante, usou bons nomes de variáveis e métodos. Fez boa organização do código. Seguiu bem o proposto pelo padrão MVVM.

Não chegou a implementar testes unitários, porém me passou outro repositório para eu avaliar. Estava ok.

Deu para perceber que ele domina bem a linguagem Swift. Entretanto ele tem pouca bagagem. Não conhece tanto outros padrões de projeto e nunca publicou apps na App Store. Gostei que ele foi bem honesto e transparente nesse ponto.

Para mim ele seria um Pleno com potencial, justamente por ter pouca bagagem (com desenvolvimento iOS).”

Pedro Neves, Engineering Manager na Loft

Como é possível perceber, por diferentes que sejam as percepções das equipes, elas levantaram pontos importantes sobre o resultado, assim como alguns pontos de melhoria que com o tempo serão endereçados.

O processo de aprendizado é contínuo

Como demonstram alguns dos exemplos utilizados para ilustrar o plano de estudos na jornada de preparação com iOS, nosso processo de aprendizado com este plano de estudos ainda está em curso e ele tende a ser contínuo. Algumas partes importantes dos feedbacks mostram a necessidade de cobrir pontos ainda não atacados pelas atividades realizadas até aqui, e os pontos positivos mencionados servem como principal motivação para as novas iterações.

É importante destacar que alguns anos de experiência produzindo código, aprendendo e ensinando tecnologia contam muito e tendem a tornar o processo mais suave. Mas é inegável o quanto um plano estruturado de estudos pode reduzir o tempo necessário para aprender qualquer que seja o tema desejado.

E aí? O que achou desse relato? Sente que esse modelo pode ajudar você nos seus estudos? Tem alguma outra abordagem de preferência? Compartilhe com a gente suas opiniões.

Espero que tenha gostado da leitura! ?

Capa do artigo sobre plano de estudo, onde 5 pessoas estão sentadas em uma mesa redonda e nela existem papéis espalhados, smartphones e notebooks.
Foto de Rafael Rollo
Developer Specialist I
Um desenvolvedor que adora o que faz tanto quanto a música e o futebol e admira qualquer outra manifestação através da qual pessoas apaixonadas expressam sua essência.

Este site utiliza cookies para proporcionar uma experiência de navegação melhor. Consulte nossa Política de Privacidade.