Skip to content

Latest commit

 

History

History
74 lines (61 loc) · 4.14 KB

SoftwareEngineeringIsNotEasy.md

File metadata and controls

74 lines (61 loc) · 4.14 KB

You've been lied to, software engineering is not easy

No commercial software should be built on the premise that "it's just a crud", because too many things are swept under the rug either intentionally (fruits of one's own incompetence) or due to ignorance.

When designing software applications, things like performance, security, quality, compliance with regulations are often deemed as non-functional requirements that may require as many resources to implement as functional requirements themselves.

For many companies, these are intricate parts of their software development life-cycle, however, that's not the reality for the majority of them, especially for small and medium companies with a small budget for building software engineering teams and strong desires for a fast return on their investments.

What could go wrong?

Putting together small budgets and the anxiety for quick ROI lead small companies to, oftentimes, hire inexperienced developers which may be coming from other areas and are seeking their first software engineering positions, or, still in their early years in the software industry.

These developers are then required to develop commercial software, fast and delivering value to their clients, but usually such software will lack performance, security, quality, and maybe compliance to regulations (this one is more obviously damaging even to non-engineers).

Is it their fault? Well, yes, but as said at the beginning of this rant, it can be because of incompetence, as they ignore purposefully these fundamental non-functional requirements. One may argue, "There's no analyst in the team/company, so, they don't need to care, right?" to which we must reply, "Wrong!".

As software engineers, we need to think of the requirements our client tells us, but we also need to consider other things, such as security; otherwise, our software might be open to attacks, and malicious users may end up, for example, having access to our database, leaking information, asking for crypto coins to not disclose the leaked data which could cause a lot of trouble for the companies/clients we work for or even for ourselves.

Another possibility is that they just don't know they need to have such concerns (ignorance), so they just do what they were asked to do. This is not only their fault, but also the company's fault for not having more people to work on the solution design and product analysis. Being excused by their ignorance is not going to prevent the troubles from eventually happening...

It's obviously better to prevent such situations by having an experienced engineering manager that is able to assemble the closest-to-ideal team focused on delivering professional software instead of just meeting the client's expectations. This may be utopian in real life, so please pop me a message on Instagram/Twitter/Telegram (@realngnx) and let me know in the comments what your views are and what you would do to prevent these pitfalls.

Conclusion

With all that said, we can clearly see that software engineering is not by any means easy, and when someone says that, they possibly are:

  • Simplifying things a bit too much - leads people to think the grass is always greener in the software industry.
  • Incompetent - because they just want to get things done, fast, without considering the implications of their work.
  • Ignorant - they simply lack knowledge and experience (bear in mind that having X YoE means nothing if you worked X years on the same thing; you've become an SME on that thing).