Profissão

Engenheiro de Software

Descrição da atividade

O engenheiro de software é capaz de trabalhar no desenvolvimento e teste de variados programas computacionais, dentre eles estão: aplicativos, jogos, plataformas digitais para atividades educacionais, sistemas embarcados e sistemas específcos, como médicos e bancários, de forma a garantir maior desempenho e produtividade.

O mercado de trabalho para o engenheiro é vasto, existe carência na área em todo o Brasil, podendo atuar, por exemplo, em empresas do setor privado, em órgãos públicos ou em instituições de pesquisa e desenvolvimento de softwares. Porém o principal mercado para este profissional são os polos de tecnologia. Requisitos mínimos Desenvolver softwares e aplicativos. Elaborar documentação e relatórios técnicos.  

Requisitos mínimos

  • Desenvolvimento de software mobile (Android, iOS).
  • Experiência com versionamento e revisão de código.
  • Programação, depuração e testes.
  • Habilidades em desenvolvimento de sistemas embarcados (hardware e software).
  • Manutenção de software
  • Gerência de configuração de software
  • Gerência de engenharia de software
  • Processos de Engenharia de Software
  • Ferramentas e Métodos de Engenharia de Software
  • Qualidade de software

Ferramentas usadas

Dentre as diversas ferramentas utilizadas, são de maior destaque as IDEs (ambientes de desenvolvimento integrado), que suportam outras ferramentas,como:

  • Editor
  • Debug
  • Geração de código
  • Modelagem
  • Deploy
  • Testes não automatizados
  • Testes automatizados
  • Refatoração (Refactoring)
  • Gestão de Riscos nos projectos de Software
  • Uso da Prototipagem na Eng. de Requisitos


Tecnologias envolvidas

Na área de engenharia de software é abordada diversas tecnologias, porém existem aquelas que são de maior importância e que são mais utilizadas, por exemplo, a linguagem de programação, banco de dados e paradigmas de programação, que trabalham com outras tecnologias, como:

  • Programação estruturada
  • Programação funcional
  • Programação orientada a objetos
  • Componentes de Software
  • Programação orientada a aspecto


Exemplo de resultado tangível

O Engenheiro de Software é um profissional de suma importância dentro de uma empresa, devido as qualidades que possui, que muitas das vezes, um simples programador não tem, como por exemplo, a capacidade de organizar, produzir o resultado esperado, com uma qualidade maior. Muita das vezes, para desenvolvimento de software "pequenos", não é necessário, entretanto, para um software complexo que exige várias funções, interface gráfica, vários pacotes e até mesmo vários programadores, exige planejamento e toda uma ilustração do software, sendo assim, o responsável por estas ações será o Engenheiro de Software.

Apresentação

Foi apresentado para a turma o vídeo criado pelo Engenheiro Marco Silva, abordando vários fatos sobre a profissão, além de algumas dicas para quem deseja trabalhar fora do Brasil.

Link para download do vídeo -> Clique aqui

Facebook do Marco Silva -> Clique aqui

Dúvidas


  • 01. O que vem a ser a sigla B2B e B2C?
    • Significa Business-To-Business e Business-To-Consumer. No contexto de TIC, denota que as soluções poderão ser criadas e entregues para dois públicos distintos: B - empresas e portanto com um porte e requisitos adequados ou C - consumer, para pessoas individuais.
    • Exemplo: Facebook
      • Versão tradicional, onde o usuário individual se cadastra e tem acesso com seu usuário ou email
      • Versão corporativa: A empresa paga para ter uma versão parecida com o Face normal mas para usar na sua intranet.


  • 02. Como é a sequência normal na carreira de um profissional na sua linha de trabalho?
    • Normalmente começa como Trainée, se demonstrar vontade e tiver boa performance, pode ser contratado como Analista ou Engenheiro Jr. Depois que começa a participar de projetos se demonstrar competência pode ser promovido para Pleno. A partir dai, mostrando resultados expressivos deve evoluir naturalmente para Senior, tanto pela experiência adquirida quanto pela importância dentro de um equipe e ou de um projeto.


  • 03. Em toda a empresa, existe essa segmentação clara nas responsabilidade de cada um?
    • Não, nem sempre! Em algumas empresas o programador faz o papel do Analista e de Engenheiro de Software. Em outras, o Analista não faz nem o que deveria fazer, ou seja, muitas vezes, um profissional assume responsabilidades de outras funções e alguns não conseguem entregar (produzir) o que deveriam.


  • 04. É interessante atuar como free-lancer? Cite uma forma de ser descoberto?
    • Em alguns casos sim, o free-lancer permita que você compare suas habilidades frente a desafios de qualquer lugar do mundo e ainda complemente sua renda financeira. Importante sempre cumprir os compromissos assumidos em questões de tempo e qualidade.
    • Atualizando sempre o GitHub.


  • 05. O que é uma aceleradora? Qual a diferença de uma incubadora?
    • Incubadora apoiam micro e pequenas empresas de acordo com alguma diretiva governamental ou regional. Para isso, a empresa deve apresentar um Plano de Negócios que será avaliado pela Incubadora que tem uma série de critérios formais para incubar um projeto.
    • Aceleradora é focada não em uma necessidade prévia, mas sim em empresas que tenham o potencial para crescerem muito rápido e seu modelo de trabalho é buscar startups escaláveis (e não somente uma pequena empresa promissora). Interessante que a empresa tenha um Plano de Negócio mas a Aceleradora busca principalmente uma boa ideia.


  • 06. O que significa Viablidade de projeto?
    • Significa que o profissional pode assumir o desafio de avaliar técnica, econômica e operacionalmente um detereminado desenvolvimento.
    • Para isso tem que fazer uma análise dos riscos do projeto, exigir um pré-projeto delimitando tempo e custo. Neste contexto, tem que conhecer muito bem as habiliidades da equipe. No final, decidir se uma projeto vai ou não em frente. Imaginar a frustração da empresa ou das pessoas envolvidas se ele chegar a conclusão que não e a responsabilidade dele se disser que sim.


  • 07. É importante avaliar as Boas Práticas de uma determinada atividade? Cite uma consequência drástica que pode acontevcer?
    • É essencial! Entender as Boas Práticas mostra que estaremos avaliando a experiência de outros profissionais para tentarmos fazer o melhor projeto possível. Entendam que se errarmos na escolha de uma plataforma, de uma linguagem, de um banco ou de um sistema qualquer talvez não tenhamos como voltar atrás e se tivermos que "remendar", o custo, prazo e qualidade certamente serão afetados.
    • Escalabilidade,ou seja, quando o sistema crescer, aumentar nro de usuários, de transações, etc poderá degradar a performance, gerar bugs ou até ficar inviável seu uso.
    • Retrabalho: Outro fator crítico que pode onerar um sistema, pelo simples fato de ter que refazer algo que poderia ter sido feito de uma maneira melhor. Como comparação, imaginem o esforço e custo para trocar toda a fiação de um prédio depois de ter moradores pelo fato de que a bitola dos fios não suportam a carga elétrica atual.


  • 08. O que é Scrum e porque usá-lo?
    • Scrum é uma metodologia usada em desenvolvimento ágil que permite gestionar e planejar projetos de software. No Scrum. Para isso, o desenvolvimento é segmentado em Sprints (ciclos de desenvolvimento) onde um conjunto de atividades é executado.
    • Porque permite algumas condições, como:
      • Transparência: Todos podem estar cientes da evolução. Para isso existe um quadro de tarefas (Kanban) e um gráfico Burndown que compartilham informações
      • Feedback contínuo: a frequência com que se obtém informações sobre o projeto faz muita diferença. Reuniões diárias e revisões dos Sprints ajudam muito a saber se as ações estã dando resultado
      • Melhoria contínua: A cada etapa entregue existem ações para refinar o Backlog do produto (lista de requisitos a serem desenvolvidos)
      • Entrega contínua de valor: Disponibilizar para o "cliente", gradativamente partes do desenvolvimento. É como se numa casa, eu construísse primeiro o quarto e mostrasse ao cliente, depois a sala e mais uma entrega, depois a cozinha e assim por diante.
      • Alta velocidade: O Scrum permite que times multifuncionais atinjam o seu pleno potencial e alta velocidade conseguindo reduzir o tempo de desenvolvimento e aumentando a eficiência.


Avaliação Vídeo


Disponibilidade: - Preocupação em ajudar - Não conhece nenhum de vocês e gastou muito tempo para gravar este vídeo

Formação: - 5a. turma de SI - PET - IC

Atribuições: - Engenheiro de SW - Empresa StationFy - Fundada por brasileiros da UFU (Paulo Martins e Rodrigo Reis) - Empreendedor no Vale do Silício - Engenheiro de SW em Chicago - Envolvido com projetos e produtos

Evolução: - Suporte internet na Algar Tech - Graduação - Estágio numa Startup em Android - Bolsas de IC para se manter - Cedro Technologies como desenvolvedor - Pegando projetos por fora como freelancer - Começou na StationFy part-time (4 hs) - Resultados interessantes EUA e Canadá - Vaga em aceleradora - Sai da Cedro e full-time na StationFy - Não curtiu web mas serviu de base - Passou de analista para Eng Sw

Requisitos: - Web, Java, JSF, primefaces - Dev Mobile: Trainee, Jr, Pl e Sr

Atribuições: - Conceito varia muito as responsabilidades - Programador faz tudo que um analista - Analista não faz nem o que faz um programador

Tecnologias: - Tablet, IoS, Web, Java, JSF, Primefaces - Android, Ipads, Iphones - Arquitetura de SW - não importa mais o device - Engenharia de SW: Boas práticas e Padrão de Projeto - Análise de Requisitos: Interação direta

Requisitos: - Trabalho em equipe: Grande sincronismo com a equipe - Capacidade de liderança técnica - Melhores talentos para cada finalidade - Pensar no futuro: garantir Escalabilidade - Ser eficiente: evitar Retrabalho - Interatividade com pessoas: contato com cliente e com equipe de requisitos - Padronização: De 10, 8 trabalham com frameworks básicos - Inovação e novos desafios: Ex: BD relacional => BD não relacional

Ferramentas - Linguagens de programação - GitHub - Dispositivos: Iphone, Ipad - ObjectVC: poderosa - Swift: Apple Developer - Android: Java com Android SDK - IDEs: xCode, Eclipse e Android Studio - Gerenciamento de projetos: Microsoft Project: Cronogramas - Gerenciamento de tarefas: Trello e Assana :Tarefas

Atividade atual - Desenvolve usando ferramentas e tecnologias do estado da arte - Não é só desenvolvedor: entra diretamento em projetos - Avalia viabilidade de projetos: se compensa implementar - Analisa riscos - Faz pré-projetos

Oportunidades: - Fora do Brasil: possibilidades de estudar e/ou trabalhar - Preocupação: pense na sua própria carreira - O mundo clama por profissionais qualificados (especialistas) - Exige foco, dedicação e especialização - Interessante sites de freelancer - Acumule pontos no (GitHub): vale muito a reputação - Crie sua Rede de Contatos é muito importante

Orientações: - Não gosta de programar? Não desanime. Até final do curso eu também não gostava - Gaste tempo tentando descobrir o que mais gosta - Não tire a conclusão à primeira vista

Resultado tangível: - Sationfy: https://arena.im/

https://www.linkedin.com/in/maarcosilva/detail/recent-activity/posts/