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 ansia 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.
Chief Marketing Officer | Product MVP Expert | Cyber Security Enthusiast | @ GITEX DUBAI in October
1 年Ricardo, thanks for sharing!
Sócio em SBC Law Advogados
1 年??????
Associate Manager
1 年Excelente artigo Ricardo Miranda