The question seems to have an obvious answer for most you but stay with me for a while...
In the world of
agile Scrum which is nowadays the top used software development methodology either as-is or in the hybrid model, the roles inside the realization team are not clearly defined.
I am a software developer the 3-4th year and I have encountered only with companies (working, interviews, heard-of) where software developers are heavily involved in various things aside of the programming - completing feasibility studies, analyzing business requirements,
drawing forgetting the diagrams, writing technical specifications, discussing architecture, involving into DevOps (yet another field of study I believe) and finally... programming.
These actions require a strong understanding and knowledge of the business and most of its rules. ...right, a good
documentation memory truly helps! On the other hand, the industry and the market require the developers to educate themselves and learn the newest technologies, standards, language features, architecture and communication patterns, protocols and experiment with such things. But... how are we supposed to become expects in everything? (Consider DevOps as another field of study of a large set of skills.)
I believe that being a software-developer means primarily writing the code according to the given specifications. I feel the more the software developer is involved in such things, the less quality and maintainable code are able to write and the less the overall knowledge of architecture is... and of course, these would heavily impact the product.
Don't get me wrong, although I love programming which is the reason I became a software developer, I understand the importance and brief knowledge of the business requirements and rules and I am interested in why and what I do. Without it, there would be nothing to develop. However, I believe the involvement should be just basic, otherwise, it would not only harm ourselves but also the product, since most of the knowledge would be kept with the software-developers and they would become both irreplaceable in the team and also their programming skills decrease rapidly.
Here are my favorite lines from Code Ahead (pages 181-182):
"So, you are saying that all developers should be stupid code monkeys, who don't care about the business at all, only about the code?" Masha asks.
"You just offended us both," Dennis laughs. "Coding by itself is as much fun as your business, For me, to be honest, it's much more fun".
"Really?" Masha seems surprised.
"Yes!" he exclaims. "I would be absolutely happy if you keep me out of your business concepts and ideas and just tell me what needs to be implemented".
"You guys don't want to know why we need what we ask you to implement?" she is really surprised.
"Absolutely not," I smile. "Do you want to know how we implement those features, what frameworks we use, what database optimization techniques, what programming languages, and all that?"
"No, leave me out of that," now she smiles.
The reason I ask is as a middle-level developer who aims to become a senior sometimes... I involved in business concepts first as much as I could, and I became a valuable member of the team but I felt no career improvement or whatsoever. On the other hand, I isolated from the business concepts at some time and level and it helped me to grow technically really fast and I succeed in a lot of interviews fairly easily. However, I felt like absent at meetings while discussing business stuff, and I often questioned my worthiness for the team in this case - I overexaggerate a lot, but you get the idea.
How should I approach in the case I am very technically inclined in a team among software developers knowledgeable of business (I struggle a bit to understand) for
years decades to feel more comfortable and self-confident?
The strikethroughts are intentional.