Software Development / Desenvolvimento de Software

Software Development / Desenvolvimento de Software

Knowledge or Experience

Throughout my career, I have witnessed cases of applications which have successfully lasted for decades. On the other hand, I saw applications being replaced in less than one year life cycle.

Considering that companies became dependent on software, I studied these disparate scenarios to write this article. After all, what is the fine line - or not so fine - between the success and shipwreck of an application?

There is no shortage of methodologies, libraries and frameworks for software development. Especially in the recent years, where there has been a great popularization of Design Thinking, Agile, UI/UX, DevOps and Low Code/No-Code. They are accelerators in the search for lower risk, higher productivity and assertiveness in software development. We are also close to having a new layer of development powered by Artificial Intelligence. However, the success of an application goes beyond good functional analysis:

Human interface - if the system requires a user manual, we already have one signal that the interface is bad. Good softwares are naturally intuitive, easy to navigate and very well crafted in terms of usability. The rich interface has an exacerbated concern for details and minimizes the use of the keyboard.

Data source - the craving for information often disowns the cost of capturing the data. Fortunately, intense typing has its days numbered. The alternatives which relieve the operation of systems such as real-time integrations, content proposition, automation and connectors are getting bigger.

Error handling - software developers are optimists by nature and do not consider the insertion of control points into systems. We easily find websites and apps presenting technical error messages to users, while this could be intercepted with two aims: (i) notifying the system administrator about the error; (ii) presenting a readable message to the non-technical user.

Administration tools - the work of monitoring, diagnosing and correcting errors is essential for the creation of mature systems. Behind-the-scenes tools for administrators to monitor, debug and respond to issues are needed, but not always built.

Technical environment - a robust technical environment starts with appropriate facilities, elastic processing and storage capacity, performance and very good connectivity. Other issues such as suitable platform, versioning of programming codes and the development track need to be very well established. All this associated with code scan and tests automation (unitary, integrated and regressive) to complete the good practices.

Software development is a powerful competitive differentiator in business, and the companies have several challenges in this field. Some challenges are more visible, such as the shortage of manpower and the usage of obsolete platforms, others are more subtle and related to excellence.

To wrap up... Why the title “Knowledge or Experience”? Software development is much more like a craft than serial production. Experience counts more than knowledge. Develop software developers takes time, besides requiring fitness and dedication. Some non-technical skills are also required.


Conhecimento ou Experiência

Ao longo da minha carreira, presenciei casos de aplicações que perduraram, com sucesso, por décadas. Na contramão, vi outras aplicações serem substituídas em menos de um ano de ciclo de vida.

Considerando que as empresas se tornaram dependentes de software, estudei esses cenários tão díspares para escrever esse artigo. Afinal, qual a linha tênue - ou nem tanto - entre o sucesso e o naufrágio de uma aplicação?

Não faltam metodologias, bibliotecas e frameworks para o desenvolvimento de software. Em especial nos últimos anos, nos quais houve uma grande popularização do Design Thinking, Agile, UI/UX, DevOps e Low Code/No-Code. São aceleradores na busca por menor risco, maior produtividade e assertividade no desenvolvimento de software. Também estamos perto de ter uma nova camada de desenvolvimento movida pela Inteligência Artificial. Entretanto, o sucesso de uma aplicação vai além da boa análise funcional:

Interface humana - se o sistema requer um manual para o usuário, já temos um sinal de que a interface é ruim. Os bons softwares são naturalmente intuitivos, fáceis de navegar e muito bem trabalhados no quesito usabilidade. A interface rica tem preocupação exacerbada com os detalhes e minimiza o uso do teclado.

Fonte de dados - a ânsia por informação frequentemente renega o custo de captura do dado. Felizmente, a digitação intensa está com os dias contados. As alternativas que desoneram a operação dos sistemas, tais como integrações em tempo real, proposição de conteúdo, automação e conectores são cada vez maiores.

Tratamento de erro - o s desenvolvedores de software são otimistas por natureza e não consideram a inserção de pontos de controle nos sistemas. Facilmente encontramos websites e apps apresentando mensagens de erro técnico para os usuários, enquanto esse poderia ser interceptado com dois objetivos: (i) notificar o administrador do sistema sobre o erro; (ii) apresentar uma mensagem legível para o usuário.

Ferramentas de administração - o trabalho de monitoramento, diagnóstico e correção de erros é essencial para a criação de sistemas maduros. As ferramentas de bastidores para os administradores monitorarem, depurarem e responderem aos problemas são necessárias, mas nem sempre construídas.

Ambiente técnico - um ambiente técnico robusto começa com instalações apropriadas, capacidade de processamento e armazenamento elástico, performance e excelente conectividade. Outras questões como plataforma adequada, versionamento dos códigos de programação e esteira de desenvolvimento precisam estar muito bem estabelecidas. Tudo isso associado à varredura de código e automação de testes (unitário, integrado e regressivo) para completar as boas práticas.

Desenvolvimento de software é um diferencial competitivo poderoso nos negócios, e as empresas possuem vários desafios nesse campo. Alguns desafios são mais visíveis, tais como a escassez de mão de obra e a utilização de plataformas obsoletas, outros são mais sutis e relacionados à excelência.

Para terminar... Por que o título “Conhecimento ou Experiência”? O desenvolvimento de software se assemelha muito mais a um artesanato do que a uma produção em série. A experiência conta mais que o conhecimento. Desenvolver desenvolvedores de software toma tempo, além de requerer aptidão e dedicação. É também necessário ter algumas habilidades não técnicas.

To view or add a comment, sign in

More articles by Ricardo Miranda

  • Decision Making / Tomada de Decisão

    Cognitive or Autonomous Digital technologies and automation are silently shaping a new work dynamic that, in a few…

    3 Comments
  • Artificial Intelligence / Inteligência Artificial

    Trained or Abandoned Decision logic has been present in corporate systems since the beginning of computing – the…

    1 Comment
  • Globalization / Globalização

    Local or Global The 2000s were a fruitful decade for the globalization of companies with presence in several countries…

    2 Comments
  • Human Behavior / Comportamento Humano

    Thinking, Speaking and Doing The jargon that digital transformation is more related to people than technology is not…

    5 Comments
  • Return on Investment / Retorno do Investimento

    Requirement or Opportunity A recurrently discussed subject is the calculation of return on investment in projects…

  • Go-Live Date / Data de Lançamento

    Go or No-Go If there is an event which I think tense, it is the start-up of a new system, especially in large projects…

    1 Comment
  • Solving Problems / Resolvendo problemas

    Workaround or Definitive One of the most used jargons in the corporate world is “we are here to solve problems”. I have…

    4 Comments
  • Periodization of History / Periodização da História

    Good and Bad I wonder if the pandemic of covid-19 will be remembered as the end of Contemporary Age and the beginning…

    7 Comments
  • Buying Technology / Comprando Tecnologia

    Photo and Movie As vertical as companies are, they all go shopping when it comes to technology. These purchases are…

    1 Comment
  • Backstage of Technology / Bastidores da Tecnologia

    Risk or Suicide Digital solutions increasingly participate in our lives, with surprising technologies which transform…

    2 Comments

Others also viewed

Explore content categories