Freelance Staff Engineer / Hands-on Architect
TheHive, incident response platform used by thousands of security analysts worldwide, is evolving. To support the next generation of capabilities, the backend platform is being progressively redesigned and migrated from Scala to Java. This is not a simple rewrite. It is a deliberate architectural redesign of a production system used in demanding operational environments. The goal is cleaner service boundaries, better observability, more predictable performance, and unlocking new product capabilities our users need the most. As Hands‑on Architect, you will own the technical vision for this migration. You'll work with other senior engineers. You code, decide, challenge, and you are accountable for outcomes.
Responsibilities
- Define and evolve the target Java architecture, layering, modularity, API design, persistence strategy; balancing ambition with real delivery constraints.
- Lead the POCs phase: evaluate architectures, migration options, Java frameworks, validate patterns, and make opinionated calls with documented trade-offs.
- Establish engineering standards: code structure, testing strategy, observability, and CI/CD patterns that the team will actually follow.
- Work within existing database and infrastructure constraints (graph database JanusGraph, on‑premise client deployments, existing API contracts) and know when to push back on them or make them change.
- Onboard and technically mentor other engineers, while staying hands‑on yourself.
- Engage early in features' conception: understand user and business needs, challenge requirements, and surface constraints before they become problematic. You understand that architecture exists to serve users, not only to be elegant for its own.
- Integrate AI tooling into the team's daily workflow (Copilot, Claude code, etc.).
The Java stack will be defined by you and your team. The existing Scala stack we’re migrating from: Scala, Play Framework, Akka, JanusGraph, Tapir.
Requirements
Ownership & accountability
- A pragmatist mindset: you choose tools because they solve problems, not because they're fashionable. You can argue for boring technology when it's the right call.
- Comfort with ambiguity: you help shape requirements, not just fulfill them.
- Proactive: you flag problems early, propose solutions, and follow through.
- You have at least 10 years of experience in development.
Rigor
- Architectures deep expertise (Examples: Clean, Hexagonal, etc.), you have demonstrated architectural work: you've made real design decisions, lived with their consequences, and learned.
- Patterns experiences (Examples: CQRS, Strangler fig, etc.).
- Experience with development methodologies like TDD, ATDD or Property‑based testing.
- Modern Java expertise (version 17+), concurrency, performance.
- Experience with complex domain modeling, graph or document stores, and event‑driven or async architectures.
Product mindset & impact orientation
- You care about how the product is used, not only how it is implemented.
- You connect technical decisions to user workflows, operational realities and business impact.
- You understand when engineering perfection improves the product and when pragmatic solutions are required.
- You connect technical decisions to system‑level consequences, other teams' impacts, performance, reliability and cost.
Communication & collaboration
- Strong opinions, loosely held: you argue your case, listen to pushback, and adapt.
- Clear and direct communicator.
- Comfortable working across multiple product and engineering teams simultaneously.
- You challenge requirements constructively.
Curiosity
- Genuinely enthusiastic about AI, both as a development tool and as a product dimension to explore.
- Technically curious beyond your current stack: you experiment, form opinions, and bring what you learn back to the team.