20% mentoring
60% facilitating consensus between teams/orgs
61–70 of 107 posts
20% mentoring
60% facilitating consensus between teams/orgs
Earlier quoted context omitted.
> convincing people into doing the right thing (tm). How do you deal with the burden of knowing/predicting what the right thing (tm) is / will turn out to be? I am constantly agonising over choices I'm about to make, and almost invariably come to regret some of the choices that I, or our team, have made (which include, but are not limited to, React, Gatsby, Flow, Stylus, Enzyme, Jest, SCSS, single-page app architectu…
A great mentor once told me about the poker analogy method of coping with situations you describe. Let's say you are a great poker player. When you get dealt a good hand, you play it and end up loosing - does that make you a worse player? Turns out even the best of all players loose quite frequently. What distinguishes them from others is that they make the best choices with the limited information they have at the t…
[0] https://www.econtalk.org/annie-duke-on-the-power-of-quitting...
My view as a "full stack" architect and developer. Depends on the size of the firm. Very, very large ones will see you write little code -- generally to the detriment of the company, the architect, and the teams they interact with. Good architects are hands-on. They write proofs of concept implementations before recommending a tool or technology. Bad architects dream up nothing but gormless and inscrutable charts and…
hard agree with everything you've said here. At my current company it's actually a fight as it's not necessarily the architects themselves that want to shit out diagrams all day. It's a part of the job, for sure, I'm just pointing out it's not always the architect. but your points about hands-on, respect simple, and having a wide base of experience is 100% spot-on imo. I do agree with your point about the diagrams, j…
- It's typically a journey up and down the stack in terms of frontend, backend, and DevOps, and a journey in and out of solving inherently complex problems (where the seams of your services are, authentication) and incidentally complex problems (frameworks, machine-specific issues, Docker hell etc.) - 80% what needs to be done today/what fires need putting out, and 20% planning for the future and seeing how the bleed…
On Monday, Wednesday, and Friday I have large no meeting blocks in my calendar to discourage recurring or pre-planned meetings. Most of this time is spent:
1. Writing code
2. Reviewing code
3. Responding to feedback in our Slack channels
4. Impromptu meetings to help other Engineers get "unstuck"
On Tuesday and Thursday I'm open for recurring meetings. Most of this time is spent: 1. In 1:1s with other engineers or team leads
2. In miscellaneous recurring meetings like our "Architects Chat" or "Leadership Meetings"
Writing code is _by far_ the largest place I allocate my time and also what I would recommend to other engineers who wish to stay on an "individual contributor" track. IMO, if you aren't writing code, you are slowly getting worse at writing code which damages your ability to make recommendations to others. There is no replacement for real experience.Reviewing code is a close second. I review roughly 50 PRs every week which is about 2x what our closest "non-architect" engineers review (usually Engineering Managers). Many of my impromptu meetings and Slack feedback comes from what I see in code reviews. If I leave anything beyond a trivial comment, I like to have time to discuss with the individual to make sure I'm understanding correctly and actually providing useful feedback. Since other people are working in my code-bases, its also important to see that "the ideas are coming together". If PRs into our Circuits code are frequently breaking patterns, its likely a problem with my patterns rather than other engineers.
I don't have documentation on the list as it isn't something I write in an ongoing way. Instead, I prefer to write documentation at the beginning and end of large projects. I don't make a ton of edits as I go because the code is in flux so it can be a waste of time to update both code and documentation. Instead I like to:
1. Start a project with a plan of how everything fits together
a. Planning takes anywhere from 1 week to 2 months depending on the size of the project
2. Get approval on the plan
3. Write code... if it has to contradict the plan, so be it
4. Update the documentation at the very end so other engineers can use it as a nice reference for the current "state of the world"
If anyone is interesting in joining Rec Room, we are hiring :)- Always on a state of mind of redesigning and simplifying everything - Spending a lot of time trying to figure out the business better - Studying a lot of books, articles, codebases and discussions on software architecture - Inspire the team and younger devs to avoid complex tools and solutions and stick to the basics - Balancing everyday and urgent business needs while leading towards a more simple, boring and main…
I'm also the last point of escalation for a handful of dev teams. That's the fun part, getting to work on problems, mentor, and help out. I really enjoy mentoring and watching inexperienced people blossom and start mentoring others and passing on what they've learned. It's very fulfilling.
My company doesn't have a "Software Architect" job title. Instead the closest thing is "Staff+ Engineer", which does pretty much the same things. However there are some key differences.
First, these aren't "Ivory tower" architects. They still write code (although in practice not much) and stay connected to implementation details, mostly via code and design reviews.
Second, architecture is every dev's responsibility, at different levels. So Staff engineers might oversee the architecture of entire systems spanning a whole org, while senior engineers oversee a single team. A mid level dev might design the "architecture" of a small service integrated in a larger system.
Staff+ engineers usually report to senior leaders and aren't part of a team. They might hold office hours and break disagreements within or between teams.
I'm not one myself but in a conversation a Staff eng. told me this was the first job where no one tells him what to do. Instead he spends his time proactively looking to solve business problem. This might be top down (e.g. take a business problem and try to find how to solve it) or bottom up (e.g. take some new tech or tool and figure out how it can be used to achieve some business goals). Often problems can also be solved without tech at all (e.g. aligning stakeholders).
Lastly at this level engineers are expected to be leaders as well. Mentoring, sponsoring, etc. is pretty much a requirement. They should be force multipliers, making other engineers around them better. They might also scale themselves by producing content, such as tutorials, talks, training, etc.
I have no formal power in the sense that people are not supposed to do what I say, so I have to be convincing, and influence others behaviors to make the software better.
This implies analysis and compromise, having meetings, mentoring engineers, and quite a bit of coding and research.
My work is less guided that when I was a junior engineer, in the sense that I'm meant to discover opportunities for improvement and give guidelines. This leaves time to pick what I should be doing next, where I'm adding the most value.
This changes from time to time, it may be figuring out a new architecture, fixing a bug, getting involved in product development or handling an incident.
An important part of the job is getting involved in production incidents, this helps grasp where are we struggling and opens the opportunity to guide development to a state where customers are happier and operational costs are lower.
You also start to be more conscious about company finances (how much it costs to keep the lights running) and start thinking in ways to get more from the same resources.
Even if I have no formal power, people tend to pay attention to what I say and suggest, so I need to be careful, because an off-hand comment can have a lot of impact.
Architectural roles live and die by their word. We lead by influence, so be cognizant of perception and careful when you communicate with others in every interaction.