desenvolvedor

O impacto do software nas organizações modernas

Mais do que nunca, aplicações computacionais têm o poder até mesmo de decidir o rumo de negócios e empresas inteiras. As vantagens de negócio que a adoção de modernizações computacionais podiam trazer até eram vistas como um diferencial há alguns anos, mas hoje essas vantagens são praticamente pré-requisitos para o sucesso dos negócios. Por exemplo: é praticamente inconcebível que uma plataforma de serviços hoje não tenha um app disponível na Google Play e na App Store (por mais que em algumas situações, o app seja somente uma “casca” para o site da aplicação). Isso traz para um “poder” enorme para os desenvolvedores de software, fomentando o surgimento de técnicas e frameworks que implementam as filosofias ligadas à governança de TI (como ITIL, por exemplo). Mas, será que nós como profissionais da área de desenvolvimento de software, temos o conhecimento do poder e das consequências que nosso trabalho pode trazer?

Gerenciamento de projetos - Fundamentos
Curso de Gerenciamento de projetos - Fundamentos
CONHEÇA O CURSO

O poder que um software tem na história de uma organização

Software de fato pode decidir as estratégias e o futuro de uma organização, tanto para o bem como para o mal: existem vários exemplos para ambas as situações.

O Nubank, por exemplo, hoje é um dos unicórnios brasileiros muito por causa da facilidade e desburocratização que ele trouxe no que diz respeito ao acesso a serviços financeiros… E muito do sucesso do Nubank se deve às ferramentas computacionais envolvidas, como o aplicativo. Ele é um exemplo excelente de como software bem feito pode tornar uma empresa competitiva e inovadora frente o mercado. Hoje, o Nubank tem valor estimado de mercado na casa dos US$ 10 BI.

Infelizmente, também temos vários exemplos ruins. O mais recente envolve a Boeing e seu avião 737 MAX. Devido a problemas de projeto e, principalmente, falhas no MCAS (um dos softwares centrais de controle do 737 MAX) fez com que 346 pessoas morressem em 2 acidentes envolvendo a aeronave. Após os acidentes e as constatações de falhas no software, a maioria das agências reguladoras de aviação espalhadas pelo mundo proibiu o tráfego de aeronaves do referido modelo por precaução. O resultado destes eventos: além da impossibilidade trágica de reverter os efeitos dos dois acidentes, a Boeing amarga o pior prejuízo da história, de cerca de US$ 2,9 BI, prejuízo decorrente de correções que estão em curso no software do 737 MAX e manutenção em solo de centenas de aeronaves do modelo, além do cancelamento de contratos milionários de aquisição do modelo problemático e o crescimento de sua concorrente direta no mercado, a Airbus. E ainda existe o prejuízo realizado à imagem da Boeing, prejuízo este que talvez nunca seja revertido.

Nas duas situações, existe um elemento preponderante tanto para o sucesso quanto para o fracasso: o software. Nas duas situações, foi um programa computacional, escrito por profissionais da área de desenvolvimento de software, que ditou se uma empresa chegaria a se tornar um dos primeiros unicórnios brasileiros e virar símbolo de inovação ou se ia matar mais de 300 pessoas inocentes. Software no mundo atual é algo da mais alta grandeza de importância e deve ser levado muito a sério, principalmente pelas empresas que buscam alinhar tecnologia com seu mercado para se destacarem e se tornarem mais competitivas. Software bem feito e governança de TI hoje não são luxos: são mais do que obrigações para que as empresas se mantenham vivas no mercado atual.

Desenvolvedores precisam entender que seu papel em uma organização é de altíssima importância

Com os exemplos acima, conseguimos evidenciar um ponto: desenvolvedores são peça-chave no sucesso de qualquer organização moderna. E quem trabalha com desenvolvimento precisa ter essa consciência e dar o devido valor a este papel. Já passamos do tempo em que ter software dentro de uma organização era luxo: hoje é mais do que obrigação. E as organizações não podem se dar ao luxo de terem softwares que funcionam “mais ou menos”, pois falhas geram despesas, perda de receita e queda de competitividade no mercado. Precisamos ter consciência de que os software e os profissionais envolvidos na criação são protagonistas nas empresas hoje. As empresas que não possuem este comportamento podem ter sérios problemas de sustentabilidade em uma era tão digital como a que vivemos.

Isso tudo precisa despertar em quem trabalha com software a consciência de que um poder tão grande que acaba sendo depositado traz também responsabilidades enormes. E, por isso, a correta capacitação técnica é tão exigida pelas empresas hoje. E quando citamos “capacitação técnica”, nem falamos necessariamente sobre o domínio de linguagens, frameworks e bibliotecas: estamos falando do domínio de aspectos fundamentais da computação, como estruturas de dados, algoritmos e tópicos de rede. É obrigação de qualquer desenvolvedor moderno entender o que é um algoritmo de complexidade ciclomática O(nˆ2), a diferença na utilização de um vetor ou de uma lista duplamente ligada ou os aspectos semânticos do protocolo HTTP, pois são tópicos que impactam diretamente em manutenibilidade e qualidade do código e, consequentemente, do software, que é um dos elementos centrais das organizações modernas. E quem trabalha com desenvolvimento de software precisa parar de ignorar este ponto e criticar empresas que, durante as entrevistas, pedem tópicos ditos “teóricos” ao invés de focarem em codificação. No mercado atual, por mais “torto” que pareça, quem se destaca não é quem sabe de cor a sintaxe de uma função built-in no JavaScript, e sim quem sabe o que é idempotência em métodos HTTP ou quando uma pilha deve ser utilizada no lugar uma lista convencional.

As empresas também precisam entender que software é um elemento central nos dias atuais

Da mesma maneira que os desenvolvedores precisam ter cada vez mais consciência da importância de seu papel em uma organização, as próprias organizações precisam entender que elas precisam de software e de profissionais de desenvolvimento para se manterem dentro da “revolução digital”. Empresas que não apresentem uma infraestrutura tecnológica mínima correm o sério risco de serem engolidas por outras empresas ou, pior ainda: serem completamente ignoradas. Um exemplo mais direto: é impossível imaginar hoje uma empresa, por menor que seja seu porte, sem um site institucional… Da mesma maneira que é impossível imaginar, por exemplo, uma empresa de mídia sem um aplicativo para acesso a seu conteúdo ou um carro que não tenha nenhuma interface digital mínima (como bluetooth ou até mesmo uma simples porta USB no sistema multimídia). E, para a adoção dessa infraestrutura tecnológica, não existe outra saída: é necessário investimento por parte das empresas, quer seja no que diz respeito à parte técnica ou à parte pessoal e gestão de profissionais. E neste ponto, a palavra “investimento” cai muito bem: software hoje é investimento, não despesa.

Existem vários exemplos de empresas que não se atentaram adequadamente à importância que aplicações computacionais e tecnologia poderiam ter sem seu negócio. Um exemplo é a famosa Kodak, que já foi líder absoluta no mercado de fotografias, mas até hoje tenta se recuperar plenamente do procesos de falência encerrado em 2013 e retornar aos tempos áureos das décadas de 80 e 90. A Kodak não se atentou à migração para o formato digital que o mercado fotográfico começou a adotar na década de 90 e acabou sendo engolida por dezenas de empresas que perceberam as tendências que começavam a ser adotadas. Algumas destas empresas que perceberam este movimento foram a a Canon e a Nikon, empresas estas que hoje são consideradas as líderes neste mercado.

Gerenciamento de Projetos - Avançado
Curso de Gerenciamento de Projetos - Avançado
CONHEÇA O CURSO

Outro exemplo de empresa que não tratou software como deveria foi a própria Boeing no projeto do 737 MAX. A Boeing adotou a estratégia de terceirizar o desenvolvimento do MCAS, que é um dos principais softwares de controle do avião (conforme vimos no tópico inicial deste artigo). Esta estratégia foi adotada principalmetne por duas razões: para que, em tese, ficasse pronto mais rapidamente e para cortar custos. No final, boa parte do MCAS do 737 MAX foi desenvolvida por profissionais recém-graduados contratados por um custo muito menor pelas empresas que foram contratadas pela Boeing para o projeto. Alguns dos profissionais que atuaram nesse projeto ganhavam o equivalente a US$ 9, segundo relatos anônimos obtidos pelas investigações, segundo o Business Insider! O resultado da subestimação da importância do MCAS para o projeto e a vontade maior de economizar resultaram no que foi mostrado no primeiro tópico deste artigo: mais de 300 pessoas inocentes mortas e o maior prejuízo da companhia na história.

Da mesma maneira que desenvolvedores precisam ser muito conscientes de sua importância dentro de uma organização, as empresas também precisam sempre se atentar ao fato de que sua equipe de TI pode fazer com que estas lucrem milhões de dólares ou amarguem processos e a falência.

Você sabe a diferença entre um engenheiro e um arquiteto de software?

Dentro da área da TI existem diversos cargos como desenvolvedor, analista, engenheiro, arquiteto etc. Mas será que existe diferença entre esses profissionais ou só são nomes bonitos para a mesma função?

Dentro da área de TI temos diversas opções de carreira para seguir, o que pode ocasionar nessa confusão com relação às funções desempenhadas em cada cargo. Mas, para cada cargo é necessário diferentes habilidades e são exercidas diferentes atividades, e claro, como são cargos diferentes os salários também variam. Veremos a seguir alguns cargos de TI e o realmente faz cada um deles.

Desenvolvedor

Um desenvolvedor tem o papel de construir sistemas que facilitem processos organizacionais, seja administrativo, financeiro, comercial, entre outros. Além de programar, ele realiza a manutenção, corrige os erros que podem aparecer nessas aplicações e realiza atualizações quando forem necessárias.

Existem diversas graduações para o profissional que deseja ser um desenvolvedor de software, mas o que mais está em alta são as graduações de Análise e desenvolvimento de sistemas, mas você também pode fazer alguma faculdade similar, sempre olhando a grade para verificar se a mesma aborda bastante a área de programação.

Além de conhecimento em linguagens de programação, frameworks, banco de dados, etc, também é importante ter conhecimentos em negócios.

Desenvolvedor C# Sênior
Formação: Desenvolvedor C# Sênior
A formação Desenvolvedor C# nível Sênior da TreinaWeb tem como objetivo apresentar conceitos avançados do C#, como covariância, contravariância e invariância de interfaces; utilização extensiva de delegates, expressões lambda e métodos de extensão. Por fim, o LINQ e o Entity Framework, ferramentas importantíssimas e essenciais no .NET, são abordadas e estudadas.
CONHEÇA A FORMAÇÃO

Engenheiro

O engenheiro de software projeta, desenvolve e implementa soluções de software, focando em aspectos estratégicos dos negócios, buscando oferecer mais qualidade e produtividade. Além de trabalhar com a parte de programação, ele também gerencia projetos e suas execuções, por isso trabalha tanto junto com desenvolvedores quanto aos líderes.

Na fase acadêmica esse profissional é geralmente formado em Engenharia da computação/Ciência da computação e além dos conhecimentos em TI, se beneficia de conhecimentos em estatística, matemática, inteligência artificial e até mesmo robótica. Para exercer a função, deve ter conhecimentos fortes em métodos ágeis, teste de software e engenharia de requisitos.

Arquiteto de software

O arquiteto de software é responsável por garantir que o software atenda aos requisitos, visando sempre a segurança, escalabilidade e desempenho. É responsável por todas as decisões técnicas do projeto, apoiar o time na resolução de problemas, reuniões tanto com a equipe quanto com os clientes e, claro, também deve saber gerir riscos técnicos.

Para essa função você pode fazer qualquer graduação na área de TI: Ciência da Computação, Sistemas de informação e afins. O importante é focar depois para ter conhecimentos mais fortes relacionados à arquiteturas, como análise de arquitetura de software, arquitetura orientada a serviços e outros tipos de arquitetura como web e de sistemas móveis.

Muitas pessoas pensam que o arquiteto e o engenheiro desempenham praticamente as mesmas tarefas. Mas, não. A diferença é justamente nos conhecimentos e atuações. O arquiteto modela e projeta o software enquanto o engenheiro é mais focado nos processos, controlando-os até a conclusão.

Analista

Um analista de TI é responsável pela infraestrutura da empresa, instalando softwares e hardwares, e também fazendo com que esses componentes operem na melhor performance possível. Dentre as funções também inclui a manutenção de toda a tecnologia disponível na empresa, além de dar o suporte aos usuários sempre que necessário.

Pode ter graduação em qualquer graduação de Informática/Ciência da computação e deve ter altos conhecimentos em infraestrutura, como hardware e redes.

Concluindo

Vimos aqui algumas diferenças de alguns cargos que temos na TI. Ainda tem muitos cargos para serem explorados. Mas algo em comum em todas essas funções é a questão da atualização. O profissional sempre deve estar se atualizando, com cursos extras, pós-graduação, enfim, qualquer para que cada vez mais sejam valorizados.