Since my graduation (late 2005) I was working for the same company as a c++ software engineer. A year ago I was promoted as a software architect but I have found myself involved more and more in qualification and fixing bugs, level 2 support.

50% of my time spent in Notepad++ analysing the software logs and trying to figure out what went wrong. 30% fixing other's bugs and the remaining (if any) reviewing developers spaghetti code.

I started hating this product and thinking about an exit strategy out of this company.

What do you think I can do in this situation? do you other software architect still fixing bugs in the code?

Fixing bugs is actually one of the most involved tasks in programming - you have to understand how to system works, how it should work, how the original designer/programmer reasoned, and how to transform that code to something that works, and doesn't break anything else. It's natural that the most experienced on the team will help a lot with such tasks. That said, can't you delegate some of the actual implementation after explaining the reason for the bug? Or try to get involved with a greenfield project instead.
–
MaxDec 13 '12 at 13:37

59

Nah - the duty of an "architect" is to create bugs, not fix them.
–
Nemanja TrifunovicDec 13 '12 at 13:44

18

What you describe is not a software architect - it is a support engineer.
–
Oded♦Dec 13 '12 at 13:58

5

what is a "level 2 support".. sounds like a game ahah
–
Andreas BoniniDec 13 '12 at 14:47

7

@Krelp Very large software product operations are broken down into 2 forms : 1. Release 2. Maintenance. Release activities include adding some major feature, search for scopes of optimization, globalization of the software, adding support for new platforms, etc. Now, the maintenance part is broken down into 3 parts: L1, L2 and L3. L1 is a customer support call center. L2 people are equipped with detailed knowledge of the product. When L1 fails to solve the customer issue, they pass down the issue or L2. And if L2 cannot solve the issue, they call L3. L3 is capable of making code changes.
–
WildlingDec 13 '12 at 14:58

11 Answers
11

Most people generally agree that a Software Architect should mostly be involved in high level design, setting standards, choosing tools or frameworks, evaluating products, implementing prototypes and Proof Of Concepts, and training and mentoring developers

The reality however is that the title often can be a political appointment to a developer, a special title given to lead developers of projects, or even something as simple as a management-HR workaround to hire a badly needed developer at a salary or rate that HR or upper management would find unacceptable for the Software Developer or Software Engineer title.

It's funny that architect has become an upgraded title over engineer in our field. In other fields engineers look down upon architects. Agreed that titles are mostly meaningless.
–
mike30Dec 13 '12 at 15:33

1

It's very much like how I was promoted to "Senior Software Engineer" two years out of college. I probably didn't deserve that title for at least a decade more.
–
Steven BurnapDec 13 '12 at 18:13

3

City Planner is probably a better metaphor than Architect for what software architects normally do.
–
Roy TinkerDec 13 '12 at 18:17

I wouldn't go so far as to say it was mostly meaningless, but a Software Architect is often a developer who in responsible for architectural design and decision-making as well as more mundane development tasks, not instead of more mundane development tasks.
–
Carson63000Dec 14 '12 at 4:48

Given above, your estimates "50% of my time spent... analysing the software logs... 30% fixing other's bugs" put you far far off of what software architect is normally expected to do.

I would say above makes the title they gave you about 50+30=80% fake.

Note that per se, activities like analyzing logs or fixing other's bugs could legitimately occupy part of architect's time - provided that these serve the primary purpose of this role - that is, making high-level design choices and establishing technical standards. Actually, this is the case for any kind of software development / maintenance / testing activities.

For example, if analyzing logs led you to an insight on how to make it easier - by improving design, or tooling, or coding standards - this would be perfectly justifiable effort for an architect. Similarly, it could be completely OK for architect to get their hands dirty fixing particular bug(s) - as long as this would result in specific design / process improvements leading to lower bug rate, etc.

On a little more positive note, your question demonstrates at least one skill that is quite important for architect: ability to classify different kind activities and track efforts spent on these. Consider adding to your "toolbox" complementary skills to summarize your observations and estimates and clearly communicate these, especially up the management ladder. :)

As a software architect, am I supposed to focus that much on analysing
the logs and fixing other's bugs?

Supposed to? yes and no. You're in charge of the totality of the product quality and evolution path - make it work tomorrow, but also make it work next year.
Does that mean lending a helping hand to solve tough issues? Absolutely - at least I do. You can't make the product work tomorrow if your customers leave you.
Does that mean you should devote ALL of your time to that? Absolutely not. You're in charge of TOTALITY of the quality and evolution. Devoting that much time to chasing issues is counter productive.

You're supposed to be proactive:

Initiate education plans so other people (dev/support) can lift the load. "teach a man to fish" and all that jazz.

Invent ways and develop tools to support faster and easier defect analysis and root cause isolation. If you find this boring, other, possibly less talented or experienced developers find this not just boring, but also difficult and maybe even daunting. Help them overcome this by technology.

Start an effort to raise the quality of the product - simplify, modularize, create testing frameworks - lead by example, not by whining and threatening to quit.

Make sure developers know what you're doing - but also your managers. An architect role is much more about relations with other people then it is about coding and analysis. As much as you might hate this, politics play a key here. Making sure your peers see your accomplishments makes it easier to convince them later that you're right. If you're not there yet, back your claims by research and POCs.

If all else fails, and only after spending time to try to make things better, talk to your manager. Say that your skills are better used in planning and design phases and see what can be done to change the current situation. Your product might be in a pinch and your manager's answer might be "we need you for this thing right here, right now". I would insist on a long term plan though - how are we going to change the current situation.

I see the role of an architect a privilege. You get to influence the product in a way not many other people can - the only one theoretically more influential than you are is he product R&D manager (and, possibly, marketing) - but he's way to busy managing.

The role of a Software Architect traditionally doesn't have them fixing bugs. Software Architects do help fix design issues in software so if by bug you mean the core way the software was designed lends itself to more fragility or difficulty in expanding/maintaining then it would be the the job of the SA to propose or redesign aspects of the software to solve for that problem.

Given what you said:

50% of my time spent in Notepad++ analysing the software logs and trying to figure out what went wrong. 30% fixing other's bugs and the remaining (if any) reviewing developers spaghetti code.

That is not the role of a true SA and instead is more of what I would have our developer 1 and developer 2 level programmers start with alongside a senior developer. I say that in particular because I find it really helps new developers in our company get into the product and code by working at that level on issues of code quality. Are you a new SA in your company and they are having you do this work to get into the system? If so then maybe that is OK for a short time. If this is your daily work and has been for more than a year, then quite possibly it is time to look for another role.

I understand your frustration, but understand if you wrote the code or were the last to touch it, time is short, and they can reach you, many managers are going to go to you to fix it, regardless of your title.

Figuring that you still have friends in the development group that is in the crisis, you will help. The problem is when they, and more importantly their management get used to you helping out, they keep coming back. As the say "no good deed goes unpunished.” If they can count on you to fix the problems, regardless of your title, you are just another developer, and someone else they can use.

It is a hard problem to solve, but my advice is:

Ask for the charge number for the project this non software architect project time. I find project managers are not as eager to ask for your time, if they have to be accountable for it.

Talk your manager about how much time is being lost and to what groups or projects. Your manager might tell you not to help them, and stay focused on his projects. If so, then the other group comes and asks for help, you tell them your boss said not too.

You have a management issue: fixing bugs and improving code quality is the job of developpers, as an architect you should be issuing guidelines and actual architecture (UML or whatever floats your boat), then giving regular code reviews to ensure these guidelines are followed correctly.

You may, however, implement and fix bugs on the core architecture.

Example: you'd work on PRISM, MEF etc in a WPF/C# project, but you wouldn't work on the XAML to display the splashscreen.

You'd work on DB design but you wouldn't write stored procedures for CRUD operations.

Part of the answer would be to find an engineer who is willing to take on this load.

Of course, the reason this is a problem is that you find this work undesirable, which doesn't send the message that it is attractive to the other engineers, so they aren't eager to pick it up either.

I see two possibilities.

You were given the position of architect so you could work on bigger picture items.
In this case, you should mention to management that you are unable to work on these bigger picture items because nobody has stepped up to take on the lower-level support role. That is then their problem to solve.

The title is largely ceremonial -- a bone thrown to you to keep you around.

In this case, managment may not be terribly interested in easing your support load.

--

One thing that will definitely not be helpful to your goal is adopting an attitude of contempt for the other developers and engineers that I see leaking through in your question. You want these people to step up and confidently handle these problems so you don't have to (possibly making some mistakes along the way). If they know that you'll just badmouth their solutions and fix it up for them afterwards, they're probably not going to ever step up.

50% of my time spent in Notepad++ analyzing the software logs and trying to figure out what went wrong. 30% fixing other's bugs and the remaining (if any) reviewing developers spaghetti code.

This is definitely a type of work that you are NOT supposed to do, for this role. According to my experience/observations, architect have to be involved in application design, improvements, technical requirement clarifications and potential performance issues (not checking logs everyday, but primarily analyzing sever issues/errors ) that needs to be addressed or avoided.

In another words, my point # 1 is - architects are the high level designers and system integrators with hands-on experience on how inner-workings of technology work/apply and need to be used.

If you have opportunity to assign and manage the code quality then your work management skills need to be improved. Thus, planning work should be your priority on "how to do the work" approach.

Point #2: if you the one of few developer on these application(s) - then this title is just another sugar glaze by company management to keep you in the same "fix it" role with a new fancy title.

The role of a Software Architect is much more than what you are doing in your present company. He is responsible for defining software design standards, making high level design, standards for coding etc., and fixing bugs may be considered only a small part of it thought actually it isn't. But as you have said, you are working on a product, it means, being a Software architect, the expectation from you for the reliability of the product will be quite high, and in such a case, your involvement in such things will not only help the product but also the company, as you are quite experienced in that. But you should also be provided with some exposure to new feature development and new tasks, that will inculcate your interest in your present organization.