Ask HN: I've been promoted to Architect. What do I need to learn/do to excel?

373 points by dotdi ↗ HN
My company had some lateral movement which, somewhat surprisingly, resulted in me being promoted to "Lead Architect". It's just a fancy title because we don't have any other designated software architects. There was, in any case, technical responsibility that needed to be redistributed, so that's what happened, and titles shifted accordingly.

In the past, I had used my training budget for software architecture certifications, which was met positively by my team lead and management.

While I _wanted_ to take on that role _eventually_, I was surprised to have it happen so early. What are the things I need to learn ASAP? What things do I need to do? What should I study/read?

218 comments

[ 6.1 ms ] story [ 165 ms ] thread
Congratulations!

Perhaps you could share with us, how you brought about being promoted on the basis that even yourself recognise you were not ready for it. Surely your certifications impressed your management even though you are yet to gain practical experience.

If you have gained certifications, then surely they would have provided with knowledge that you could apply. Is there a chance that you are being too modest? If not, then I would suggest that the courses were a waste of money.

Thank you!

Honestly, I was just doing my job. In the end, I think I was providing valuable feedback that lead to decisions that, over longer periods of time, proved to be valuable. So I was asked to collaborate more on technical decisions and providing design ideas.

I'm in a country that puts a lot emphasis on "formal education", so having the certifications is relatively important but I do believe they were, in part, a waste of money, due to how/what was actually taught.

Certifications exist mostly to (1) filter talent and (2) create barriers to entry.

ie., People who cannot get a required certification (eg., degree) are probably not very capable. AND by requiring a degree we make the profession harder to enter and therefore more lucrative.

Much of what is provided during most certification processes (high school to undergrad) isn't learnt, and that which is, isn't very useful.

They exist more as race tracks to measure athlete performance. The athelete isn't expected to remember or care about the race track, only finishing.

What certifications did you get? I have been interested in getting some myself but am unsure what certifications are best.
I did the foundation and some advanced courses offered by the iSAQB[0].

My experience was mixed. The foundation course was good, some advanced courses were excellent, while others were way too basic to be called "advanced" courses.

[0]: https://www.isaqb.org/certifications/?lang=en

Did anyone else misread the title as "learn/to do Excel", as in Microsoft Office?

(Edit) in case it’s edited: “Ask HN: I've been promoted to Architect. What do I need to learn/do to excel?”

Actually, that's a skill he'll probably need to learn extremely well, depending on his workplace.
Don't forget PowerPoint. As Michael Cote likes to say "I used to be good at my job, now I'm good at PowerPoint".

But in all honesty, being able to convey your ideas and vision to a variety of people and levels is key to being an architect, whether that is PPT, documents, charts, whiteboards, or just plain old conversations.

The best architects I have worked with were able to reach and convince senior business and IT leadership as well as the IT staff. Understand the why things are done the way they are done before proposing some new change, take time to listen. Status quo isn't always ideal, but it's important to understand the motivations and reasons before proposing your company or organization embarks on a new path. I've found frequently understanding the details end up being the key to a successful shift in strategy since that's the stuff that tends to bite you at the last minute and scuttle projects.

Yup. My advice was going to be “Delete it” .
Congrats!

1) learn to say no

2) learn to make simple enforcable short, medium and longterm goals (ie, everyone must be on platform x by november)

3) learn to listen

4) learn to love small incremental changes rather than big bang

why say no? because you'll be bombarded by brilliant solutions. On their own will be great, but in your environment will be tech debt. Or you'll be asked to allow team x to use a new widget, instead of the old one. But then team z will want to use a different new widget to do the same thing.

Clear goals that we widely communicated allow normal people to make design decisions autonomously. It can really remove the need for constant daily updates and information overload (for you)

Some of the best insight into a product or thing will come from a junior whos only just joined. Make sure you have regular contact with all the teams, if only to steal ideas.

Large changes almost always fail. smaller incremental changes always feel less thrilling, but when you look back over a year, they will accomplish a lot more. Plus its far easier to course correct.

    Clear goals that we widely communicated allow normal 
    people to make design decisions autonomously. It can 
    really remove the need for constant daily updates and 
    information overload (for you)
That one is so important and yet so rarely followed and also surprisingly difficult to do.
I'm a big proponent of this thought, though I wish it worked better in my day-to-day.

There were many times where I spend considerable effort into communicating goals and the background of why they are important but with sub-par results.

> Clear goals that we widely communicated allow normal people to make design decisions autonomously. It can really remove the need for constant daily updates and information overload (for you)

If you don't mind, could you provide some examples of this ?

Some examples:

- Because 5 out of 6 outages the last month were related to simple regressions, we have decided to improve automated test coverage. Every service must have at least 90% unit test coverage and at least 1 integration test for every happy path before the end of the year.

- We will turn off supporting system XYZ at date ABC because of reason DEF (say, it violates GDPR and we don't want that liability). The recommended replacement is system GHI. All teams that use system XYZ must migrate off it before ABC - 1 month and provide a clear plan before ABC - 4 months.

- Market research indicates that potential customers recognize that we have a lot of features, but they perceive us to be slower and this is causing them to prefer competitor X. We want to win this customer group and therefore: 1. Every new feature from any team must be benchmarked to ensure it does not impact speed-related metrics A and B (time to first paint, for example) 2. Teams X, Y and Z should spend about 50% of time this quarter identifying and fixing performance issues.

- Example from the navy: We know based on intelligence reports that the enemy has no submarines and has recently acquired a big batch of air-to-surface missiles. Therefore, when choosing priorities for repair, anti-air system have priority over anti-submarine systems.

Important for autonomous decision making is not just communicating the priorities, but also WHY those priorities were set. In the navy example above for example, knowing why anti-air is more important can further guide personnel into choosing properly, since there might be systems officially classified "anti-air" that are not useful against air-to-surface missiles but only against helicopter or whatnot. The military calls this extra communication "commanders intent". Of course, letting people make decisions autonomously requires trust on both sides. It is worthwhile to invest in this.

How are these goals the responsibility of an architect. These are operational requirements that might need changes in a system's architecture, or adaption of interfaces.

All of these are requirements, not architecture. Architecture is about satisfying those requirements along with all the others in a cohesive and structured way.

My guiding quote is "Design is about constraints" from Charles Eames. Find and explore those constraints and you will be able to determine the architecture.

They're intended as "Clear goals that we widely communicated allow normal people to make design decisions autonomously" as per the parent post. In any case, architecture can be just as much about setting the constraints as it is about discovering them.
These goals should really be unique the company.

But as the head architect, its your job to figure out where the company is going and design goals to get them there.

A standard problem is monitoring, or more than one way to host/deploy something so good long term goals might be:

All services must be on platform p

All services must use <<CI system of choice >>

All systems must emit metrics according to spec 1.0

system z will be turned off by march 2021, migrate to new system y

These goals are clear, measurable and only have one instruction. They are not prescriptive.

These goals can be given to the team leads to figure out how to do. You then have to watch them and try and gently steer them away from making new legacy/snowflakes.

Learning to love incremental change is great advice. The challenge that comes with that is being able to "sell" those changes.

Big Bang changes have obvious benefits but the individual incremental states often don't justify the change by themselves. You have to become really good at selling the overall vision while also keeping people focused on the short term objectives. Holding the two in balance is a really tricky thing to do but, I think, represents the core value of a good architect: they are the navigators who can describe the destination but can also describe the next turn to take to get us there.

To latch on to this comment, I found http://boringtechnology.club/ to be a really good resource; mostly the slides in the middle somewhere that explain that adding more technologies = cost. It's important to say no, to put a hold on people's enthusiasm for new tech in favor of sticking to a tech stack, and that adding more tech, or shifting tech, is very expensive. Rebuilding an application will likely cost more than the original application cost in the first place. Etc.

But I admit, it's a hard balance to find; you want to choose boring technology for your business, but for hiring you want to choose exciting, new technology because people generally don't want to work with boring tech when they're looking for a new job.

On that note, keep in mind that you will likely also be a project manager and responsible for hiring and / or indicating that your company needs to hire people. You have been empowered, it's up to you to push to your management to make investments in e.g. hiring, training, etc.

> On that note, keep in mind that you will likely also be a project manager and responsible for hiring and / or indicating that your company needs to hire people. You have been empowered, it's up to you to push to your management to make investments in e.g. hiring, training, etc.

+1 for this. We've been struggling for a while with backfilling roles, and it's killing projects. But only one person was clamoring for more bodies and specific skilsets -- and they didn't have the budget for it. Once another PM and an Architect started on the "we need new blood" chorus we finally got some extra hires and contractors (that is, 1 hire, and 3 contractors -- but that was enough).

As an architect you're going to have to foresee that kind of stuff, and then advocate for it. "We might be able to get by without [X]" means we don't need that to accountants, so you're going to have to pick battles.

> Large changes almost always fail. smaller incremental changes always feel less thrilling, but when you look back over a year, they will accomplish a lot more. Plus its far easier to course correct.

Well, it all depends on the actual stack being used. If you are on dead-horse technologies or superseded dependencies with major breaking changes (e.g. JavaEE, OpenSSL 1.0.x -> 3.x), you can't avoid big changes.

Moving fast and breaking things is a way to force changes to legacy systems, where the tech wasn't ready for it (e.g. moving from monolith to microservices)

> 1) learn to say no

This is difficult for me. I think part of my success until now was a strong "can do" mindset. Thankfully, I have a superior who is extremely skilled, both technically and in professional cut-the-bs skills, so I'm trying to learn.

You can and should keep the "can do" mindset while learning to say "no". Key is to say "no" by saying "Yes, this is what I need to do it".

Doing it wrong #1: Boss: Hey, can you be the architect for system X? You: Yes, sure, my schedule is full but I'll just work weekends and screw up work-life-balance.

Doing it wrong #2: Boss: Hey, can you be the architect for system X? You: No, I don't have time. Boss: Your attitude sucks. I'll replace you.

Doing it right #1: Boss: Hey, can you be the architect for system X? You: Yes, I'd love the challenge My schedule is full, can you assign some of these tasks to someone else?

Doing it right #2: Boss: Hey, can you be the architect for system X? You: Yes, I'd love the challenge. I'm fully booked until Novemver, how about I schedule this for December?

Regarding small incremental changes, one of my favorite quotes is from Michael Lopp (aka Rands): “Don’t underestimate the compounding awesomeness of fixing small broken things.”

If you’re working in sprints or iterations, try to include one thing like this in every sprint. Fix the logging that generates too many log entries. Improve the error handling in a problem area of the code. Add some retry logic to something that fails occasionally. I always try to keep a backlog of small things like this, and work them in wherever I can. Over time it makes a huge difference.

> Or you'll be asked to allow team x to use a new widget, instead of the old one. But then team z will want to use a different new widget to do the same thing.

THIS.

I'm a senior developer in a large org and this happens constantly. I was in one department who just about every few months was using a new JS framework to build medium sized, dynamic apps. After a year, we had four or five of these apps, all on different frameworks, and a huge technical debt because all of the framework knowledge was tied to a few individuals. It was great to build something the way you want to and test out new frameworks - but in a large org, all it did was create a ton of chaos down the road.

Now, the team has been tasked with transitioning the apps to a single framework - no simple feat when you have thousands of daily users and no one wants to give you the budget or time to re-work all of these applications.

Like OP said, stick to your guns and learn to say No. You might have to stand by your decision, but you have to really be thinking ahead and what's best for the org. Letting a dev team run wild and do what they want will kill you down the road.

In many environments instead of #1 "Say No", you may be better to say "I'd like to understand".

Then listen & ask questions, until you've fully heard their problem and can propose a preferable alternative and what design values it better aligns with.

(If you can't answer immediately, tell them you're really interested and will look into it & get back to them in eg. two days.)

In larger environments architecture can be like steering a vast river using a small wooden paddle.

Do not divorce yourself completely from code. Nobody likes ivory tower architects. Also, lean towards getting things done over getting things perfect. Read a lot of architecture types. Hexagonal, Microservices etc. Excel at one cloud provider services.
A thousand times this: "Do not divorce yourself completely from code. Nobody likes ivory tower architects."

I haven't found this to be realistic: "Excel at one cloud provider services."

There is no definitive answer because there is not even a good definition what software architecture actually is [0]. So you need to find an answer fitting your organization yourself.

One idea could be that you start a document with the Arc42 [1] template.

Figure out how to communicate the essential structure of your software to everybody.

Document why certain big decisions were made. E.g. why did you pick that programming language/framework?

[0] http://beza1e1.tuxen.de/definitions_software_architecture.ht...

[1] https://arc42.org/

- You need to learn to decide and consider when you need to be on the top of things, and when you need to be at the bottom of things (Donald Knuth).

- Helicopter perspective

- What are the capabilities of each component

- Functional capabilities (post correct financial figures to ERP system) Versus - Technical capabilities (upload transactions as exported from db flat files over SSH/sftp to dumpsite)

- Learn to summarize and distill information about your domains, as you now are working from a helicopter perspective in a greater degree.

- Learn to understand and be inquisitive about the entire value chain of your business and solution. Understand it end to end.

- There is going to be Powerpoint, at least exeutive summaries, 1 pagers et cetera

- SIPOC is a good way to analyse left to right architectures, both for analysing solution architectures and processes.

A while back we started doing ADR[0] for most of our projects and now they’re helping us to provide context for new developers and to help us stay in the path defined for medium/long goals.

[0] https://adr.github.io/

Listen carefully to your peers, don't be a dictator, find out what the business actually needs.
I would say the two most important things are to learn to simplify and to not be a yes man (and actually, to learn to be a no man).

This is something all developers experience, of course, but it's of utmost importance when you're responsible for the architecture. For every problem your company will face, business side will come to you asking with the idea of a solution rather than with a problem. You have to extract the problem from the suggested solution, then ask yourself how you can do simpler, not to overload the architecture with adhoc solutions.

And sometimes, you have to just say "no". Business side always have tons of ideas that they will insist on being high priority, then forget about it a week later or never use the feature if you release it. A nice trick is to make them prioritize the todo list themselves, so they feel the importance of each requirement compared to the others. Just forbid they put their last idea on top of the todo list, no matter how loud they're crying for it, or it will always be the last ones that are on top. If they put it somewhere lower, they will put it to the higher position they can, then they will re-evaluate its position correctly when looking at the todo list again later.

Congratulations. I've been in exactly the same position many years ago so I can share with you some of my insights.

I've proceeded with my career keeping those on mind:

- listen to what people say, you can't and won't be an expert on everything

- when you listen to them - verify and deepen your knowledge on topic, it's good to be able to connect dots

- be a practitioner - there's nothing worse than an architect that doesn't know how to code/configure server etc ;)

- attend both developer teams' demos, plannings and product teams' meetings - context is king and as an architect you have to see things both broad and narrow connecting technology with business needs

- be realistic - most businesses don't need super-high-tech-microservices-based-kubernetes-mesh-powered architectures ;)

- remember that architecture is about structure, guidelines, policies and order that aligns with business needs (so this is the starting point - understanding what business tries to achieve). Technologies really don't matter - they are just a tool

- always assume that you don't know everything - challenge your own assumptions

- be authentic and polite - people don't like super-star-asshole-know-it-all-architects (been one, don't recommend that :))

Good luck!

Oh I forgot one thing. It's ok to make mistakes and change your decisions. Sunk cost fallacy is a bitch and you have to be aware of that (sometimes it's cheaper to fail than do everything to be right)
I completely agree with the need to be a practitioner. In my experience, a good architect can create a POC project to demonstrate that their approach will work. It's not necessary to create a POC for every little thing, but it sure helps when the team is dealing with a new stack or large/complex project.
Just want to agree fully! I've been known to say that an "Architect" who doesn't code is no better than a bullshit artist. Architects don't necessarily write production code (they won't have the time/bandwidth) but they should be (at least involved in) coding up PoCs and key abstractions that have impact across a range of systems (in existence or to-be-built).

Architecture is a process not a product.

I think that it's both actually as architecture as a process produces some artefacts (diagrams, decisions, PoCs, guidelines, policies, structure, knowledge, roadmaps, etc)
Also not great. An "architect" once threw a POC at my team like "hey, look at how easy it is to do this!", then other people started adding requirements and then wondered why it took us that long if the "architect" can throw something together in an afternoon. The POC was completely unusable for the end product.
> The POC was completely unusable for the end product.

That's why it was called a proof-of-concept, and not an end product, I think. But if it was unusable, then it probably tried to prove the wrong concept :)

> - be realistic - most businesses don't need super-high-tech-microservices-based-kubernetes-mesh-powered architectures ;)

At my company, we developed a monolith that eventually reached the point where it couldn't scale anymore with the same design and was becoming more difficult to modify and update. Then over time migrated to a super-high-tech-microservices-based-kubernetes-mesh-powered architecture.

Which is to say, I agree with you. It is counter productive to start with the super-high-tech-microservices-based-kubernetes-mesh-powered architecture at the beginning. We certainly would not have came up with the specific microservices and technologies we ended up with, and never would have had a viable system to refactor at all as the microservices would have taken much longer to develop up front and iterate on than the monolith approach.

> attend both developer teams' demos, plannings and product teams' meetings

This is critically important. I try to cycle through my team's standups through the week so I know what's going on with them and what challenges they're dealing with. Often times I've found teams will raise issues during standup they won't raise at a big cross-team meeting.

As someone that has no experience with the role at all, but had to deal with some… special people, I feel the first three cannot be overstated.

Your job will be more one of herding people into doing things the right way, and it should never be one of you doing all the interesting decision making or prescribing the whole structure from the get go.

Talk with people, make sure they are invested in the overall architecture as well. And don't assume someone didn't think it through on their own until you discussed their ideas.

People who do all the architecture planning themselves, even if they aren't butting heads with anyone, can have a really negative impact on the team as a whole, because all other team members stop worrying about the topic and just let the other guy do it. I already had to deal with outcomes of this; code that has been written by "drones" is nothing you want to work with.

If security isn't someone else responsibility I would start there. Job zero as Amazon puts it.
Thankfully there are no architects in Amazon: 99% of teams have SDEs and SEs.
A lot of technical architecture comes down to minimizing complexity. When considering an approach, ask "how can we make this simpler?"

As a matter of process it is important to consider many different approaches together with the team, and weigh benefits and drawbacks of each approach in order to make the best decision.

Another big part of the job is to build and promote a shared technical vision among the team. This can involve establishing a technical roadmap, and principles/ethos which will be most effective if arrived at in a collaborative manner.

Or putting in other words - keeping technical debt in check (as it comes mostly to non functional requirements)
Architecture is also really useful in another regard: making the right (or at least "good enough") decisions on things that will be really painful to change later.

Think for example the choice of programing language or the DB technology used.

Architecture must strike the correct balance between vague guidelines and over-specification upfront. It should provide a framework which ensure homogeneity between components without restricting the teams/developers excessively.

On this subject, I found this presentation (by Stefan Tilkov): https://www.youtube.com/watch?v=PzEox3szeRc

Also, I'm currently reading "Designing Data-Intensive Applications", which is quite interesting and full of insight on the architecture trade-offs for data management and querying.

Note that sometimes the right DB is one specific one. Other times it is enforcing everyone use a DB abstraction so that you can switch DB. If you choose the later make sure you have 3 databases at all times to enforce using the abstraction. Ideally one isn't sql.

Likewise sometimes you choose the language (or maybe two), sometimes you choose an inter language communication protocol and allow any language. Either can be good or bad. The right answer for you is important.

Some choices above are hard to undo if you are wrong. However the hardest to undo often have significant advantages if it all works out.

Moving from a DB engine to another, even if technically possible (right abstractions and everything), is often extremely painful once you have a few years of data.

(I'm currently involved in migrating quite a few large DBs, and it's a pain for everyone: SREs, support teams and the customers).

But yes, there is no "one size fits all", it depends pretty much on how your org is operating.

That isn't the only reason to support more than one engine. Sometimes you don't need to move data to change the engine.

If you sell a product that needs a database you probably want an abstraction so you can use the customer's database and schema.

I agree with the idea that you should take most seriously the decisions that will be hardest to undo.

However, using a database abstraction layer in this way is counter to optimizing for simplicity, and in a way is not making a decision at all.

If you are using a database abstraction layer so thoroughly that you really can switch between different database implementations, then you are almost certainly not leveraging the strengths of any underlying database engine to begin with. So you are limiting your performance, at the same time as introducing complexity.

That is exactly the trade off. Which is why sometimes it is wrong despite the obvious advantages of being able to change
Or if you can't minimize complexity - because the problems are irreducibly complex - try and contain and partition the complexity, so that there's a limit on the complexity that developers need to be aware of when working on any given area.

Complexity partitioning is fractal, from functions to objects to modules to services to deployments. The architectural focus is higher up the stack.

Avoiding complexity spillage, where distributed areas of a large application share global invariants, is a challenge, particularly when trying to scale up the development team, which will force one's hand on splitting out modules and services or service-like things (e.g. FaaS jobs).

I have worked with only 2 architects who have made me understand what it means to be a good architect. 1 they make sure the code is organized in a meaningful way - consistently, and using places and patterns which make it feel easy and obvious. 2, they determine the code conventions used in a project and help to enforce them with tooling (git hooks, generators, PR reviews etc).

This helps scale a team, and build a cohesive lightning fast unit.

I’ve worked with fantastic devs in the past who had no real understanding of this kind of “architecture”, and as a team the difference was clear.

I guess every company defines the architecture role differently. When I worked as an IT architect we never talked with developers or even looked at their code. There were 2000+ developers and less than a hundred architects. What it sounds like you are describing is a senior or lead developer role.
You are describing a good engineer.
I think I have three architects in my team.
> they make sure the code is organized in a meaningful way

> code conventions used in a project and help to enforce them with tooling (git hooks, generators, PR reviews, etc).

Finally, something where I can say "ha! that's exactly what I'm up to now". This right up my alley, and I'm hoping to make some good progress soon here.

Again, those aren't architectural activities. They're organizational, so the responsibility of a team/group leader, or an SDLC facilitator.

Architecture is about the function of the system and how it interacts with its environment. That requires understanding both of those elements, functionality, and environment.

That’s not architecture. The tasks you describe are those of a development lead or dev manager.

An architect might also be a dev team lead, in which case they might have such responsibilities, but the point remains that such detail oriented aspects of the development process are what the dev team lead does.

The job of a building architect isn’t to ensure the builders know how to use their tools and keep them neat, and to ensure they measure straight lines.

The role of the architect is to design the system at a high level to meet a myriad of business and other requirements such as performance security reliability interoperability extensibility etc etc

The architect is politician, diplomat, technical strategic planner, salesperson.

This.

These are how you appear to developers as a _useful_ architect. Sure, there is a lot of other tasks that they do involving design and planning for the future - but the only way as an architect to actually impact software development is to take a hand in building it.

Every architect that I have worked with (my title has been "architect" for awhile now) that didn't spend at least 50% of their time in code was more or less a pretty picture generator - whose documents were ignored by anybody actually building the application.

I think the big point is that developers should trust you. One of the best ways to achieve that is to participate in coding a little. My experience says the architect should avoid the critical coding and focus an quality topics. For example, style unification or linter fixes.

A corollary is that you also need the trust of other stakeholders.

For managers I'd say you need to communicate confidently and deliver. The trick with delivering is to lower expectations early.

It depends on the organization what other stakeholders there are. That is a good separate point actually: Know your stakeholders. Make a list and ask them about their expectations.

You need to learn/improve

* Persuasion

* Negotiation

* Planning

Besides hard skills these seems the most important ones. I have seen good technical architects being bad architects because:

* They can't convince anyone that the ToBe architecture is worth it so any change has to be forced. This leads to a bad environment and overall lesser results.

* They can't negotiate other teams'/business' goals with the ToBe architecture goal so, again, the ToBe architecture can be only forced to the teams.

* They can't plan what is required to go from AsIs to the ToBe architecture. They can't tell you what's the most important change to be made, what should be done first and should be done in what order. This usually leads to an NobodyWanted architecture because random changes are being done.

Be aware of TOGAF, even if you don't use it.
Will you be a 'technical architect' or 'enterprise architect'? The first designs how systems work internally, the other designs how systems work together.
> The first designs how systems work internally, the other designs how systems work together

The lines are somewhat blurry over here. I've definitely been involved with both of those.

Independent of being an architect, it will make sense to clarify what your authorities/responsibilities are. What are the expectations from your colleagues and bosses?

Is your role more a consulting one, because the teams should have a high degree of autonomy? Or are you held personally responsible for the (architectural) decisions, and therefor should have the authority to take the decision (which doesn't mean, you should not consult others).

What is/should the "border" of your personal responsibility starts, and where is it more consulting?

Do you only define (or facilitate to define) the top-level architecture, or are you responsible for a complete top-down design of the software?

Are they hoping for a detailed structured approach going even into the teams? Or "only" someone keeping an eye on the big-picture / having a long-term vision? Or all of the above and more?

So, in a way, the same steps to take as an architect in software. First find all the stakeholders involved (bosses & colleagues), gather their requirements (what do they _really_ want from you), facilitate an agreement between the stakeholders about the outcome (chances are, they too many and even conflicting things). Then you should also be closer to know, what you need to learn.

> What do I need to learn/do to excel?

You need to turn off tool tips immediately. It makes you look like a newbie.

You should setup a hot key to open excel at any time. This allows you a "panic button" to hit whenever you are playing games or planning vacations and hear someone about to enter your cubicle.

A "lead architect" whose default is excel? Very convincing.

(edit: but I do get the joke now..)

A lot more convincing than Visio or MS Project or some UML.
Yeah, a lead software-architect who uses UML, ridiculous!

Much better is a excel table .. where all of the used technologies are listed? Seriously, why and for what would a software architect needs excel for his main work?

Maybe for hand-tuning a deep neural network to detect sarcasm.
So you were not, at least partly, serious?
I think the best answer around here is a careful explanation that can be summed up as "it depends". It depends on what is expected of that role at any given organization. And whatever the answer to that, the likelihood that the role highly depends on efficient communication, mediation between parties (multi-stakeholder approach and so on), the best tool is probably Thunderbird, or Office, or whatever floats one's boat.

Of course, at some point said Architect usually have to manage technological aspects, decisions, problems, projects - and for that the best tool is again "it depends", just like in any engineering endeavor. And yes, it might include a few sleepless nights doing low-level R&D, looking over code, fiddling with components, getting to the bottom of bugs, coming up with workarounds, strategy, proposals - or evaluating them, soliciting feedback, reviewing it et cetera.

And so, it depends, I might have been.

(But seriously, I usually found, that those high level tech decision makers/influencers who are not communicating enough, who are not organizing information enough, but are too lost in some specialized tool, to be completely useless. I use Google Docs and Spreadsheets to track things, because it can be easily and kind of "safely" shared with the required folks. Whereas every other tool is too slow. JIRA? Oh, that only works on the internal network, better wait months for VPN access. Oh here's a .xlsx attached to an email, fuck the actual devs that don't live on Office, and so on.

And on top of all that an "architect" is - at least in my experience - is a thankless job. Not high-profile enough to actually have authority to effect change, but usually sufficiently high on the ladder to get flak for any and all problems.

Finally, in large orgs it's not rare that the Architect role is the last line that has at least some connection to the actual tech/development, and up from there it's all about costs, headcount, opex/capex, schedules, compliance, governance, PR, and internal/external politics/sales/optics. And this makes it neigh impossible to execute well.)

Look into VBA too. Might be useful if you get in software one day
Many games do the opposite and have a "Excel screen" mode for that.
"Hey, Bob, it's great to see that you're keeping busy, but why are you still running Excel '95?"
The Ribbon sucks, I ain't payin for Office365, and when it comes to doing basic adding, subtraction, and division in a table, I don't need high end software. Plus it integrates really well with the Unreal Engine...
Just play Eve Online and you'll be in Excel anyway.
Let's hope Elite Dangerous introduces a complicated menu system for their carrier system to compete!

Oh wait

System or software architect ? As the product grows the two diverge rather fast.
Well done!

Two of biggest lessons learn over the time are

1. Always have a Plan B in case Plan A does not work out.

2. Always be ready to defend Plan A to make it work.

Good luck on the journey.

Good job!

I recommend that you learn how to speak slowly.

This not only makes you easier to understand, but also makes it easier for people to interrupt and ask questions.

And as others have said, listen carefully to questions and suggestions and try to answer them at length.

Bonus points if you can carry this over into writing, too.

Make sure that higher up people have your back, and keep them in the loop. Nothing worse than thinking you have new powers and people start treating you like a busybody because the title was just a name and not a role.