2

Is there any position in software development companies who answers the questions of the programmers like: "Oh I get this error! I searched for that error and couldn't find the solution. May you help me to solve?".

Or anybody who leads the other developers and answers the questions like" "What library should I use for authentication part? Which of these modules is better to use on our mobile version app?".

Totally my main question is that, considering if we have a company that works with Angular + Flutter + Node.JS + PostgreSQL/MongoDB, etc. technologies, should we have a person called CTO who knows all the details about different technologies and is a hero of them and helping the all developers or we should have different CTOs for different technologies(like one for Angular, one for Flutter, one for Databases, etc.)?

Or maybe the things work absoulouteley different than what I think?

0

5 Answers 5

10

Is there any position in software development companies who answers the questions of the programmers like: "Oh I get this error! I searched for that error and couldn't find the solution. May you help me to solve?".

I wouldn't expect there to be a position for someone who can answer such questions, other than "developer". It should be possible to go to any developer who has more experience in the area where the problem occurs to answer such questions. Typically, that would be a more senior developer.

Or anybody who leads the other developers and answers the questions like" "What library should I use for authentication part? Which of these modules is better to use on our mobile version app?".

These questions require a bit more overview over the entire project and would typically be handled by a lead developer or an architect, although in a small company I could also see a CTO doing that.

[...] should we have a person called CTO who knows all the details about different technologies and is a hero of them and helping the all developers or we should have different CTOs for different technologies(like one for Angular, one for Flutter, one for Databases, etc.)?

No. a CTO is first and foremost a manager who is the end-responsible for the high-level technology choices. The CTO may have chosen to use Node.JS but it is entirely possible they have never written a single line of Javascript.

It is the developers who should, collectively, know all the nitty-gritty details of the technology they use.

7

"Oh I get this error! I searched for that error and couldn't find the solution. May you help me to solve?"

A software developer. Many people can fake development by being cut-and-paste experts, but real developers read the documentation, read the code, and learn how to work with systems. The internet is an awesome tool; but, not so much when it replaces problem solving with cut-and-paste.

What library should I use for authentication part?

A Product Manager if the authentication is part of external systems that require specific authentication features.

A Software Architect if the authentication is part of an integrated platform that shares components or features with other parts of a greater whole, in which case the archtect will (if you have a good one) indicate the required features.

A Software Developer if the needed features are known, and they are tasked with selecting a library that supports the features.

The Legal Department if the selected items contain licenses that could negatively impact the product's release.

Which of these modules is better to use on our mobile version app?

A Software Architect if the module is part of a larger whole and one wants to assure that the whole fits within a framework that solves the problem without extra effort or obvious maintenance trade offs. A Software Developer provided that they understand the required features of the needed module. Remember that better is "easier for a developer to use", so the developer's opinion is fact in determining better, as long as the features are present and there are not additional architectural requirements.

Things work absolutely different than what you think. Most CTOs take input from their Product Managers and Software Architects to address customer needs and development plans. Then they issue directives and money to satisfy the customer needs by following an architect's plan. Smaller items that don't require a change in architecture and handled like "maintenance" items (even if they add new features). A good CTO doesn't need to know technology as much as they need to know finance; but, if they have technology knowledge, they can do their research on the current direction, and act as a second opinion on proposed plans.

In many cases, many places don't run this way, which helps contribute to "the mess" that is software development.

  • Developers create architecture, often without additional time to do so. This leads to more poor architectural choices, which create long term costs.
  • CTOs act as architects, meaning they lose the opportunity to grow revenue streams by focusing more attention to product solutions over customer needs.
  • Product Managers act as team leads, directing their attention away from gathering and tracking customer needs, reducing the ability to react to the market.
  • Many smaller shops can't staff all of the required roles, so roles are "shared within a single person" and it is rare (but possible) that the person excels at all the roles, and even more rare that they manage their time to do all of them well.

In your case, you have a person filling the role of Developer who isn't really prepared for their role. Perhaps that's due to poor requirements; but, requirements are never perfectly detailed. It is the developer's job to translate the under-specified requirements into a working product. At a low level "which library does this best" they will be the decision maker of what "best" means. These kinds of questions are the hallmark of a junior developer, or a person who just learned a programming language without learning much about their craft.

3

It sounds like the title you're looking for is either tech(nical) lead/principal engineer or software architect.

A principal engineer, usually in a similar role to a tech lead, is the most senior engineer on the team. They usually have the most domain expertise in the product, and are the best at reading complex documentation to learn new things, work independently on large and complex systems, and mentor any level of engineer on the team (even senior engineers). The difference between a tech lead and a principal engineer tends to be that a tech lead has a bit more interface with management and a bit less with engineering, while principal engineers are like super-senior engineers, they have a lot of the same responsibilities as senior engineers but even more.

A software architect is a bit less on the engineering side and a bit more on the project management side. They would make decisions like which libraries or frameworks to use for a particular project or use case. They tend not to do too much development directly, but rather to make overarching technical decisions that the developers can turn into a product. It's not uncommon for a software architect and a principal engineer or tech lead to be the same person, because a wide breadth of software knowledge is needed in both cases.

A CTO is a completely different position. The CTO is the head of the engineering department. To explain briefly, a CTO is to an engineer the same way as a CEO is to a salesperson. The CEO doesn't do sales directly (usually, at least for mid-large sized organizations, except in very exceptional cases); they have a sales team to handle that, and if needed the CEO can step in to create policies to help sales or whatever. In the same way, a CTO doesn't actually do a lot of engineering; they make some decisions to help engineers and they work a lot with other C-level employees to help run the business from the technical side, but they don't actually get into the day to day of engineering.

2

Is there any position in software development companies who answers the questions of the programmers...

If you are willing to re-phase your question to

"Is there any position in software development companies who sets the expectation of the product roadmap and can be consulted for any clarification?"

The answer is: there are two roles specifically for this job

  • Product Owner
  • Product Architect

They can be approached for any questions/doubts related to technical cases, or in general, about choice of technologies, or a quick check/opinion on pros and cons of different approaches etc.

That said, if you are actually looking to solve day-to-day issues, (like the debugging help, and/or, code issues) - most of them can be solved by either a peer-review or asking around in the team for help, to a colleague, or a senior engineer, or a technical lead, or a technical manager (if one available). Stack Overflow/ Stack Exchange sites can also be used (as a last resort).

To conclude: There's no specific role (and I doubt there ever will be) for answering "gimme tez codez" questions. That's what every individual is being paid for, to solve problems (code or otherwise).

2
  • 1
    "There's no specific role (and I doubt there ever will be) for answering "gimme tez codez" questions." - kind of. While very specific to individual topics, I can definitely see teams where everyone more or less knows SQL, yet there's one DB specialist (with this officially being their role) who will be the natural reference when it comes to "How do I do $insert-non-trivial-issue-here in SQL?" type of questions. Nov 11, 2020 at 14:24
  • 1
    @O.R.Mapper non-trivial != "gimme tez codez" Nov 11, 2020 at 14:38
1

It is highly dependant on individual companies. Titles alone don't dictate this, as different titles have different roles in different companies.

A CTO communicates with high level management and may not even write code. Their job is to make sure the high level technical decisions reflect the company goals.

A CTO could be in charge of choosing what frameworks, hosting and other tools the company uses, but it depends on company. In smaller companies it is common for a CTO to even double up as architect or senior developer.

Who leads the other developers and answers the questions like" "What library should I use for authentication part? Which of these modules is better to use on our mobile version app?"

Depending on company, it could be any of the following:

  • CTO / Technical Director
  • Technical Manager
  • Architect
  • Lead developer
  • Senior developer

No one knows all the details about every language or library. Any senior developer should be able to tell you what library they use for a particular task, or you may need to research one yourself.

An architects job is to design the system, not code the system. Their design may or may not include which framework should be used. - If not documented, then it's up to senior or lead developers to make that decision, to pick one that will meet the requirements of the system as provided by the architect.

Oh I get this error! I searched for that error and couldn't find the solution. May you help me to solve?

Not something you would want to ask a CTO or Architect. You would ask:

  • A colleague
  • Senior developer
  • Lead developer

If it's an issue no one can figure out, then it would escalate to higher levels and end up with the most experienced technical person. Everywhere I have worked, this has been the CTO.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .