r/softwarearchitecture • • 16h ago

Discussion/Advice Developer to Software Architect

29 Upvotes

Hi,

I have been into IT working as a developer for 12years now. I am kind a done with it. And don’t have much more patience to learn new coding skills and do hands on. I am looking to change my career to software architecture. In my current role, my peers on my request are giving me task to create SDDs for the applications I am familiar with and which is also helping me to get hands on training. But that is still restricted to my current application or better said not something I can market myself as software architect.

I am looking for suggestions on what should I do to become full fledged software architect in today’s market.
I have worked mostly on databases, big data, distributed systems, python, scala ,sql and AWS.
To this do I need to add any specific certifications? Do I need to do some online course? Also how much is the pay for software architects as we grow in the field?

Can someone please guide me who has successfully changed from a developer to software architect?
Many thanks in advance !!


r/softwarearchitecture • • 23h ago

Discussion/Advice What's the gold standard for offline sync across devices?

9 Upvotes

I have an app I've been working on over a year with real users now, most of my users use a single device, but as I'm growing I'm running into more users with more than one device. I want to nip this in the butt before it becomes a bigger and bigger issue.

I was pretty naive when I first started the app, and have made a mess of offline syncing in my opinion.

My app is offline capable, some operations must be online, some entities are frontend authoritative, others backend authoritative (had to be the case because some data is generated by a third party API).

I've added sync maps to all my entities, based on deviceId to handle if a user has say a phone and a tablet.

I also have a deleted boolean flag, so entities are soft deleted, then the client fetches those and acknowledges a hard delete (which I know is fundamentally flawed because then the second device has no idea it's hard deleted).

I don't really need a critique on my current system, it's bad.

I'd love some examples of good offline sync systems that are more robust and reliable from a higher level

Thanks all!


r/softwarearchitecture • • 20h ago

Article/Video Why Early Releases Often Fail in Multi-Team Organizations

Thumbnail shiftmag.dev
7 Upvotes

r/softwarearchitecture • • 1h ago

Discussion/Advice 13 years in IT, but I feel stuck and lack confidence in my technical skills. How should I progress?

• Upvotes

Hi everyone,

I have around 13 years of experience in IT, primarily in data engineering, but I feel quite stuck in my career and would appreciate some honest advice from people who have been in a similar situation.

**A bit about my career journey:**

My first four years in India were quite unstructured. I was moved between different projects and cities, mostly doing low-level development work. I was trying to adjust to new environments and projects, so I don't feel I built a particularly strong technical foundation during those years.

After moving to the UK, I joined my second company and got an opportunity to work with big data technologies. I spent around four years working with Hive, Impala and some Scala, and got introduced to Spark. I learned on the job, but I never became particularly proficient in Scala or Spark.

I then moved to another company, where I picked up some PySpark in a much faster-paced environment. Unfortunately, I was made redundant after around 1.5 years. I also had a performance review during that period, which made me reflect on the gaps in my technical skills.

I am currently in my third company in the UK. The codebase here is old, complex and difficult to understand. During my first year, I was learning the existing code while also working on a migration project. Now that the migration is complete, most of my work involves BAU support, troubleshooting and occasional enhancements.

The team also has other developers who handle much of the new development. Over time, I have realised that coding has never really been my strongest skill. I have tried learning Python and Scala from scratch several times, but I struggle to stay consistent and get to a level where I feel genuinely confident. I can work with SQL and understand data engineering concepts, and I have experience with technologies such as Python, PySpark, Scala and AWS, but my practical coding skills are not as strong as my CV might suggest.

I have even received interview opportunities from companies like Meta twice in the past two years, but I haven't been able to clear the initial coding rounds. I did prepare, but I struggle to solve problems quickly and confidently under interview conditions.

**Where I am struggling now:**

With 13 years of experience, I feel I should be operating at a senior engineer or tech lead level. Instead, I often lack confidence in my technical abilities and worry that people will eventually realise I am not contributing as much as someone with my experience should be.

In my current team, another colleague works closely with the developers, translates business requirements and validates the results. In practice, he takes on much of the coordination and technical leadership, while I handle BAU work and some other tasks. I have proactively asked my peers for more responsibility and have been given some architectural and design-related work, which I am trying to develop further. However, I am still learning and don't yet feel that I am operating at an architecture or tech lead level.

My concern is that the team is gradually shrinking, and I am not sure how to position myself for the future.

**I see a few possible paths, but I am confused about which one makes sense:**

  1. **Continue in data engineering:** Improve my Python/PySpark skills and work towards becoming a senior or lead data engineer. However, I am honestly tired of repeatedly trying to learn programming and feel reluctant to spend another few years focusing heavily on coding.
  2. **Move towards data architecture or solution design:** I enjoy the idea of understanding systems, designing solutions, documenting architecture and working with stakeholders. I have started getting some exposure to this, but I don't know how to bridge the gap from my current role to a genuine architecture position.
  3. **Move into project management or product management:** I wonder whether a role with less hands-on coding might suit me better. However, I don't know whether this would be a sensible transition after 13 years in a technical career, or whether I am simply considering it because I have lost confidence in coding.

There is also the constant pressure to keep up with new technologies such as Databricks, Snowflake, dbt and AWS. I feel I need to learn all of these to remain employable, but I am already struggling to decide where to focus my energy.

I also know data engineering is a good paying career so I don’t know if I am making a right decision if I leave it. But when I go for job hunt, in most of the interviews I failed at first stage which is coding stage.

I don't necessarily expect to become an expert in every technology. I just want to develop a clear area of strength, become confident in my work and feel that I am making a meaningful contribution to my team.

**For those who have been in a similar position, I would really appreciate your advice:**

- Have you ever reached a point in your career where you realised that hands-on coding wasn't your strength? What did you do next?
- Is it realistic to move into data architecture or solution design without being an exceptionally strong programmer?
- Would moving into project management or product management make sense, or would I be starting from scratch in another career?
- If you were in my position, would you invest another year in improving your technical skills or start planning a transition into a different role?

I would especially appreciate advice from people who have made a similar transition after 10–15 years in IT. I am looking for practical, honest advice rather than simply being told to learn more technologies.

Thanks in advance!


r/softwarearchitecture • • 19h ago

Discussion/Advice Software Architecture in the era of AI

8 Upvotes

Hi guys!

I'm curious how did the processes changed in your company after AI adoption, regarding software architecture.

For example, moving from Confluence pages to Markdown format, that is passed further to another LLM for implementation. Or flows that directly read Jira tickets and start working on the archi using LLMs.

Did you take part in leading this transformation or how was it for you to adopt it?

Thank you!


r/softwarearchitecture • • 20h ago

Article/Video SysML v2 Deep Dive: Lesson 21 - Action Definitions (Modeling Behavior Like Structure)

Enable HLS to view with audio, or disable this notification

3 Upvotes

Hi r/softwarearchitecture,

We are back with Lesson 21 of our technical deep dive into the SysML v2 standard.

In our previous lesson, we looked at Occurrences, the 4D model, and modeling state over time. Today, we are putting that temporal foundation to work. In software architecture, we often struggle when our data models (structure) and our business logic (behavior) use completely disjointed paradigms. SysML v2 fixes this by unifying them—behavior modeling now uses the exact same definition and usage patterns you already know from structural modeling.

I’ve uploaded the full video lesson directly to this post so you can watch the workflow right here.

The SysML v1 Behavior Problem

SysML v1 activity modeling was highly capable, but it suffered from severe inconsistency. Structure used a Block with part properties typed by it. Behavior used an Activity with CallBehaviorAction referencing it. It was like having one language for defining your database schema and a completely disjointed, incompatible language for writing your API orchestration. You had to learn and maintain completely separate patterns for structural decomposition versus behavioral decomposition.

The v2 Shift: One Shared Pattern

In SysML v2, behavior uses the exact same definition and usage pattern as structure. If you know how to model system components, you already know how to model system actions.

Three details make this incredibly powerful for architects:

  • Action Blueprints (API Contracts): An action def is a blueprint for a behavior. It acts as a strongly typed contract using in and out parameters (directed features).
  • Inheritance: You specialize an action using the standard :> operator. A library of standard enterprise behaviors can be built and extended using standard object-oriented inheritance, exactly like a structural parts library.
  • Pure Functions (calc def): Because actions are occurrences, they natively have start and done boundaries. But for pure mathematical computations that don't "change the world" (side-effect-free functions), v2 introduces the calc def as a first-class concept.

The Execution Order Trap

Here is a blueprint for an Earth observation satellite capturing an image. Watch out for a very common mistake new v2 modelers make, which is akin to firing off asynchronous functions without awaiting them:

Code snippet

package ImagingOperations {
    private import ISQ::*;

    item def GroundTarget;
    item def ImageProduct;

    action def SlewToTarget;
    action def StabilisePlatform;
    action def OpenShutter;
    action def ReadSensor;

    action def CaptureImage {
        in item target: GroundTarget;
        in attribute exposure: TimeValue;
        out item product: ImageProduct;

        // THE TRAP: These look sequential, but they execute concurrently!
        action slew: SlewToTarget;
        action stabilise: StabilisePlatform;
        action shoot: OpenShutter;
        action readout: ReadSensor;
    }
}

The Trap: In older GUI diagrams, four actions with no control flow arrows between them clearly looked disconnected. In v2 textual notation, they sit on consecutive lines. It looks like an imperative sequence, but line order says nothing about timing. This is purely declarative. Nothing in this model prevents the shutter from opening while the platform is still slewing. Order requires explicit successions.

SysML v1 vs. SysML v2

Modeling Concept SysML v1 SysML v2
Behavior Pattern Activity and CallBehaviorAction (completely different from Block/part). action def and action usage (the exact same pattern as everything else).
Parameters in, out, inout, and return directions. in, out, and inout act as directed features; return is its own membership.
Inheritance Behavior generalization was technically possible but rarely practical. action def A :> B is ordinary, practical specialization.
Metaclass Foundation Behavior is a Class with no shared notion of existing over time. Part and Action both specialize Occurrence.
Timing DurationConstraint required specific profiles for behavioral elements. start and done exist natively on every occurrence.
Computation Modeled via opaque expressions or constraint blocks. calc def acts as a first-class concept for pure functions.
Unordered Actions Visually obvious as unconnected boxes on a diagram. Look deceptively sequential in declarative text.

Next lesson, we will fix this trap. Lesson 22 uses the first and then keywords to turn these unordered actions into a strict sequence, adding branching, merging, and parallelism on purpose instead of by accident.

For the software architects here: Have you ever run into issues where declarative code (like Terraform, Kubernetes manifests, or un-awaited async/await blocks) was mistakenly assumed to execute sequentially top-to-bottom by your team? Let's discuss in the comments!


r/softwarearchitecture • • 2h ago

Article/Video How Anycast and CDNs Defeat the Speed of Light | Networking Deep Dive

Thumbnail youtu.be
2 Upvotes

r/softwarearchitecture • • 17h ago

Discussion/Advice How do you handle idempotency for wallet callbacks (debit / credit / rollback) from third-party providers?

1 Upvotes

We integrate a lot of third-party content providers that call our wallet with debit, credit and rollback requests. Each provider retries on timeout in its own way, some send a rollback before the original debit has even arrived, and a few reuse transaction IDs across rounds.

What we do today:

  • Store every incoming transaction ID with provider + round ID as the unique key, and return the original response on a duplicate instead of processing it again.
  • Keep "orphan" rollbacks for a while so that if the debit shows up late, we cancel it immediately.
  • Lock per player balance row during the operation so two parallel callbacks can't both pass the balance check.

It works, but the orphan-rollback table and the per-provider quirks keep growing. For those of you running payment or wallet style APIs with many external callers: do you normalize everything at an adapter layer per provider, or keep one strict contract and push the quirks back to the provider? And how long do you keep idempotency keys around?


r/softwarearchitecture • • 22h ago

Discussion/Advice How's Karan Pratap Singh system design content on GitHub.

0 Upvotes

I am searching for a good & complete system design resource.

Any senior engineer on this subreddit can suggest a good resource to start system design in detail, like intermediate level

About me I have 6M of SWE internship & 7M of AI Automation Engineer experience. So I have a good understanding of the system. I just want a structured & complete resource


r/softwarearchitecture • • 2h ago

Discussion/Advice Meta E5 system design round in 8 days and I don't feel ready.

Post image
0 Upvotes

My Meta E5 loop is in 8 days. Coding feels manageable, but system design is the round I'm worried about. Above is my progress so far.

Where I'm at:

- I can get through requirements, APIs and a reasonable high-level design for the common questions (news feed, URL shortener, rate limiter, chat).

- Where I fall apart is the deep dive. When the interviewer pushes with "what happens if the leader dies mid-write?" or "could this read ever miss an acknowledged write?", I start second-guessing everything.

- I also spend too long on the first diagram and run out of time for the trade-off discussion.

Questions for people who've done E5/E6 loops (or interviewed for them):

  1. With 8 days left, should I go broad (cover more questions) or deep (redo 3–4 and practice the failure-mode follow-ups)?

  2. How deep do Meta interviewers actually expect failure handling to go at E5 vs E6?

  3. Any technique for handling pushback without freezing? Do you think out loud, ask clarifying questions, or commit and defend?

  4. Which questions come up most for Meta product/infra system design right now?

Any advice appreciated.


r/softwarearchitecture • • 21h ago

Tool/Product Reflecting on software factories for software architecture

0 Upvotes

I've spent the last four years building a software factory for .NET Core enterprise applications. A recent project gave me a gave me an interesting comparison:

  • Original project: 2 developers and 9 months
  • Rebuild using the factory and OpenClaw: 1 developer 2 months

That is 18 months compared to 2 months, a 9x developer productivity gain.

The application had 63 database entities. The factory generated the entire backend solution in just a few seconds, supporting eight database engines and .NET Core 6–10. It also generated 431,585 unit tests, all passing. The web application work took the remaining two months using AI-assisted development.

This was my first case study. I took an existing customer project and modernized it. Now that I have the numbers, the benefits I see extend beyond just speed:

  • Consistent and deterministic architecture
  • Ontologically consistent models w/ AI integration
  • Repeatable generation
  • Automated testing
  • Database portability
  • Source code developers can inspect, maintain and own

The key insight is that with a foundation established, AI assistance can focus more on application behavior and business logic.

This was a rebuild, so existing requirements and design decisions helped. I will do more case studies, but this result is revealing. It has changed how I think about the work small teams can realistically deliver now once a foundation is in place. Had I used an existing web foundation, this work may have been done in significantly less time.

This work was done with ServiceBricks.com, an open-source, microservices platform for .NET Core. I hope to share some more results soon with a new case study. 100% of the source code is available on GitHub. Feel free to share your own experiences with it.

Feel free to send a message if you have any questions.