Something about software development

Luiz Henrique Guerra
3 min readMar 5, 2021

Sometimes I wonder (and I’m sure I’m not the only one) if software development will last as a long career option. I particularly ask myself that because of two phenomena:

  • Software-as-a-service (Saas) becoming more and more an option to address technical needs, making enterprise softwares need less customized implementations
  • Artificial intelligence being capable of doing more tasks day by day (this one might be wishful thinking but I really believe I will see AI automating a bunch of my tasks in my lifetime)

So going back to my initial thought: if software development will be as much needed and valued in the job market as it is now, it will at least get very different. And I mean bigger changes than what we’ve been seen.

A lot of roles may be needed to fulfill all needs of developing a good quality software but, apart from management, I see three that are constant for all of the projects I’ve seen:

  • The role of a designer: this is how I call people in charge of creating ideas or taking problems from the “real world” and projecting the needs of such ideas or problems in a way that it either makes the idea real or solves the problem
  • The role of an architect: this is how I call people in charge of understanding the needs that drive the idea or problem and come up with solutions to make the implementation possible and, most of the times nowadays, scalable
  • The role of an engineer: this is how I call people in charge of making the actual implementation of a software, transforming business needs into something that makes the machines work in a way that they solve those needs for us

I ask you to please don’t look at these roles in a top-down/waterfall way. In real good software, there is not one of them demanding of another, but quite the opposite: they work in a way that make the other two evolve. Designers create the challenges that make architects and engineers needed. Architects create models that make the designers’ ideas possible and provide clarity to what engineers must work on. And also engineers create technological innovation that make more ideas possible and more architectural patterns emerge.

Therefore I can’t help but think of this relation in a scale from “closer to human” to “further from human”. In my head, designer is the closest and engineer is the furthest. The more capable the machines become, closer to human communication model they get, making we need to tell less details of what we need from them. That’s why I think that engineers will not be needed as they are right now for very long, and there will be a need for more architects that will need to deal with what machines can do in order to solve new problems from that future. And in a more distant future, more designers will be needed since we will be able to make a lot more ideas possible.

I also ask, like I asked you not to look at these roles as a hierarchy thing, to also don’t look at them as things to be necessarily done by different people. It’s better when we have no “us and them”. And I see people doing more than one of those roles a lot. I see designers that like to code, and programmers that like to create. I also see people making architectural decisions and implementing them by themselves. I have even seen some adventurous and very smart people able to perform the three of them.

I myself work between engineering and architecture of software. I majored in design but never was a really good designer, so I think I just got more interested in coding by the end of my graduation driven by the needs of my time.

Conclusion? There is no real conclusion to this raving, just some thoughts I needed do express. Hoping this text didn’t bore you to death, I would really like your feedback (:

--

--

Luiz Henrique Guerra

Just trying to make some thoughts last. I like to write about software development and agility