diff --git a/README.md b/README.md index 43b3712..db23de6 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,8 @@ # Developer Guidelines -Welcome to our Developer Guidelines! Your journey to shape the future of AI and Fintech -starts here. - -## For Developers - -_Developers_ are everyone creating value: business developers, designers, -engineers, marketers, and beyond. We build businesses, products, partnerships, -customer relationships, processes, and delivery methods, crafting the future we -envision. - -Everything is indexed from the [documentation index](./docs/README.md): start -there to reach the contributing guide, the developer rules, and the rest. +Welcome! Your journey to shape the future of AI and Fintech starts here. Start +with the [Guidelines index](./docs/README.md) to reach the contributing guide, +the developer rules, and the rest. Subscribe to repository notifications to stay updated with frequent fixes and improvements. diff --git a/docs/ADVOCACY.md b/docs/ADVOCACY.md deleted file mode 100644 index c86fcba..0000000 --- a/docs/ADVOCACY.md +++ /dev/null @@ -1,52 +0,0 @@ -# Holdex Advocacy Guidelines - -As a Holdex team member, you must actively advocate for Holdex, its mission, and -its values. This requires: - -- Participating in aligned community events and activities. -- Sharing and engaging with Holdex content on LinkedIn and X (formerly Twitter). -- Representing Holdex professionally, ethically, and in line with our - [Code of Conduct](./CODE_OF_CONDUCT.md). - -## Social Media Presence - -Maintain a professional online presence that promotes Holdex. Upon joining, -immediately update your GitHub, LinkedIn, and X profiles to reflect your role. - -### GitHub Profile - -Exclusively promote Holdex in your bio while employed—no other brands or links. -Checklist: - -| Attribute | Requirement | -| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| Name | First name only. | -| Bio | Role at Holdex (e.g., "Full-stack Engineer at @holdex"). | -| Company | @holdex | -| Location | localhost | -| Time | Uncheck; hide current time. | -| Email | Empty. | -| Social Link: X | | -| Social Link: website | | -| Social Link: LinkedIn | | -| Pinned Repositories | Holdex-related only. | -| Overview | In a public self-repo, create README.md stating your role, contributions, enthusiasm for Holdex, and links to Holdex website and GitHub org. | - -### LinkedIn Profile - -Add Holdex as your current experience in the "Experience" section. Use this -mandatory description: - -> Holdex is the premier partner for institutions pioneering DeFi & RWAs. Hong -> Kong-based since 2016, we turn bold visions into secure, scalable blockchain -> solutions—driving adoption with unmatched expertise. - -### X (Twitter) Profile - -- Description: State your role at @HoldexIo. -- Link: To Holdex website/portfolio. -- Location: localhost. - -Engage actively: Share Holdex news/updates, interact with our community, respond -to comments/questions, and tag [@holdexio](https://x.com/holdex.io) and -[@zolotokrylin](https://x.com/zolotokrylin) diff --git a/docs/APPLICATION_SUCCESS.md b/docs/APPLICATION_SUCCESS.md deleted file mode 100644 index 8988ceb..0000000 --- a/docs/APPLICATION_SUCCESS.md +++ /dev/null @@ -1,53 +0,0 @@ -# Application Submitted! 🙌 - -We have received your application and will begin reviewing it soon. - -> [!NOTE] -> As much as we love to be fast, we are taking our time to reply to each one of -> you and it's not always immediate. Thank you for understanding. - -## What's next for me? - -Begin your [Trial Period](./TRIAL.md) - -## Frequent questions - -### Why am I here? - -GitHub is our primary tool for team collaboration. From business and down to -engineering, we prefer keeping things simple - in a single place. Since you have -applied to one of our positions, it only makes sense to keep our instructions, -guidelines, and documents related to our job positions in GitHub. Our goal with -time is to give you enough initial guidance so that you are fully prepared to -join any of our projects. We hope you'll appreciate our efforts and enjoy this -journey we've prepared ahead for you. - -### Why do I need to participate in the trial? - -It's all about the team culture that we care about. Part of this team culture is -the individual ability to figure things out, provide the right solutions, -display initiative, be honest and transparent, take responsibility, care for -details, ability to make the right calls, and much more. All of which can't be -assessed unless we collaborate on something together. It's also a good -opportunity for you to get the real feeling of working with us and see if it -fits your style. We'll understand if it doesn't align with your values and you -don't want to participate, just let us know. - -### How to participate in the trial? - -Follow the steps outlined in our [short instruction](./TRIAL.md) and it will get -you started. - -### Are we having an interview call? - -Personal time is more precious. Instead of spending 1 hour of collective time on -a "whiteboard" interview, we allow you to focus on what really matters. We -usually don't have calls until official onboarding where you get to meet the -founders and other team members. - -### What benefits do you offer? - -1. **We are 100% remote**. Work from anywhere around the world async and ad-hoc. -1. **Salary in stablecoins**. As early adopters, we are very supportive of - blockchain payroll. It is negotiable though. -1. **[PTO](./LEAVE_POLICY.md) and Holidays leave**. diff --git a/docs/COMPENSATION.md b/docs/COMPENSATION.md index 6b99fa7..0e7882b 100644 --- a/docs/COMPENSATION.md +++ b/docs/COMPENSATION.md @@ -1,30 +1,86 @@ # Compensation Guide -**Goal:** Reward impact, not titles or location. Pay based on merit—what you -deliver independently. +**Goal:** Reward impact, not titles or location. Pay follows what you deliver. -> Open roles: [holdex.io/c/jobs](https://holdex.io/c/jobs) | Mission: [holdex.io/about](https://holdex.io/about) +> Open roles: [holdex.io/c/jobs](https://holdex.io/c/jobs) | Mission: +> [holdex.io/about](https://holdex.io/about) ## Core Rules -1. **Clear incentives** — Same job, same level = same pay. More results = more - rewards. -1. **Simple framework** — Consistent rules for growth. +Same job, same level pays the same, and more results earn more reward. The +framework stays simple and consistent so growth doesn't get renegotiated case by +case. -## Levels & Core Skills +## Two Tracks -| Level | Key Traits & Expectations | Team Culture | Goals | Problems & Solutions | -| ---------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | --------------------------------------------------------------- | -| **Entry** | Student mindset: Bug-free. Execute tasks. Research. Learn fast. Communicate clearly. Take feedback. | Follow [principles](https://holdex.io/c/learn/principles) & [GitHub rules](https://holdex.io/c/learn/github-strategy). | Understand goals. | Solve, estimate, research, present. Help juniors. | -| **Intermediate** | Confident executor: Solve complex problems. Lead small parts. Help Entry. Strong opinions. | Follow principles. Remind team. | Break into problems. Research solutions. | Identify real problems. Break down. Prioritize. Review juniors. | -| **Lead** | Project owner: Run full projects. Delegate. Coach team. Align with business. Inspire. | Coach others. Lead in projects. | Set timelines. Ensure delivery. | Delegate. Distribute to best fit. | -| **Partner** | Big-picture leader: Own multiple projects. Shape strategy. Say no when needed. Grow culture. | Improve rules/values. | Define business goals & priorities. | (All above + strategic input) | +Every role falls into one of two buckets: delivery or acquisition. + +Delivery covers building and rendering the service: engineering, design, and the +operational work that keeps an account running. It's paid on hard skill and +cost-effectiveness. Developers are paid per code delivered, billed hourly per +month, and the levels below set what that skill looks like at each stage. + +Acquisition covers client acquisition and retention: sales and business +development. It's commission-based on closed deals, and if you bring in a lead +that gets onboarded and you're positioned to join as Partner for that account, a +fixed rate is added on top of commission, per Pay by Level below. + +The two tracks are judged on different things by design. Delivery is judged on +skill and problems solved, the same principle [DEV-440](./rules/DEV-440.md) +states for reviewing pull requests: value delivered, not effort spent. +Acquisition is judged on closed business, not on hours logged or activity +performed. Research, CRM upkeep, and reporting are methods, not deliverables: +they support acquisition work but aren't paid for on their own. + +## Delivery Levels + +Four levels, each with its own traits, culture, and goals. + +**Entry** operates with a student mindset: bug-free execution, fast learning, +clear communication, and taking feedback well. Entry follows the +[Developer Guidelines](../README.md), understands the goals handed to them, and +solves the Problems already scoped for it: researches, estimates, and presents a +solution, while helping other Entry-level teammates. + +**Intermediate** is a confident executor: solves complex problems, leads small +parts of a project, helps Entry-level teammates, and holds strong opinions. +Where Entry solves the Problems it's given, Intermediate additionally breaks a +whole Goal into its full set of Problems (per [DEV-150](./rules/DEV-150.md)), +identifies real problems rather than symptoms, prioritizes them, and reviews +Entry-level teammates' work. + +**Lead** owns projects end to end: runs full projects, delegates, coaches the +team, aligns work with the business, and inspires. Lead sets timelines, ensures +delivery, and distributes work to whoever fits it best. + +**Partner** thinks in the big picture: owns multiple projects, shapes strategy, +says no when needed, and grows the culture. Partner defines business goals and +priorities and improves the rules and values everyone else works within. + +## Pay by Level + +Entry is the trial phase run by [holdex/trial](https://github.com/holdex/trial): +unpaid, and it ends when the trial goal clears and the contributor graduates to +Intermediate. + +Intermediate and Lead are paid an hourly rate agreed per engagement and recorded +in your own Special Terms, which HR prepares from the template in +[holdex/contractor-terms](https://github.com/holdex/contractor-terms) and stores +privately. Ask your lead for your number. The rate is fixed for the engagement, +not the total: more hours delivered still means more pay, per Core Rules above. + +Partner is paid a fixed rate plus a percentage of the deals they close. The +exact numbers are set by leadership per deal: ask your lead for the current +terms. + +Every level above Entry requires ongoing compliance with the Developer +Guidelines. Falling out of compliance is a demotion back to Entry, not a +warning: the rate that comes with a level is conditional on holding the bar, not +a status earned once. ## Growth Path -| Level | Focus | -| ---------------- | --------------------------- | -| **Entry** | Learn → Execute → Ask | -| **Intermediate** | Solve → Teach → Lead small | -| **Lead** | Own → Delegate → Coach | -| **Partner** | Strategize → Scale → Say No | +Entry grows by learning, executing, and asking questions. Intermediate grows by +solving, teaching, and leading small pieces of work. Lead grows by owning +projects, delegating, and coaching. Partner grows by setting strategy, scaling +the business, and knowing when to say no. diff --git a/docs/README.md b/docs/README.md index bc6ff6d..c33b62b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,9 +1,8 @@ -# Documentation +# Guidelines -The index for the `docs/` tree, grouped by who reads it. The repo-root -[README](../README.md) is the entry point and links here; this file links every -document below it, so nothing is orphaned (see -[DEV-337](./rules/DEV-337.md)). +_Developers_ are everyone creating value at Holdex: business developers, +designers, engineers, marketers, and beyond. This is the index for everything +that guides that work, grouped by who reads it. ## Contributors @@ -16,23 +15,8 @@ How work is proposed, built, reviewed, and shipped. Working here: policies and programs. -- [Advocacy](./ADVOCACY.md) -- [Application Success](./APPLICATION_SUCCESS.md) - [Code of Conduct](./CODE_OF_CONDUCT.md) - [Compensation](./COMPENSATION.md) - [Expenses](./EXPENSES.md) - [Leave Policy](./LEAVE_POLICY.md) - [Referral Program](./REFERRAL.md) -- [Trial](./TRIAL.md) - -## Product (end users) - -Shipped, user-facing product documentation lives under `docs/product/`, added as -features ship. It is the only subtree meant to render as an end-user docs site. -See [DEV-180](./rules/DEV-180.md) and [DEV-390](./rules/DEV-390.md). - -## Specs (developers) - -Intended, not-yet-shipped behavior lives under `docs/specs/`, a planning -artifact for developers rather than end-user documentation. See -[DEV-180](./rules/DEV-180.md). diff --git a/docs/TRIAL.md b/docs/TRIAL.md deleted file mode 100644 index 84464db..0000000 --- a/docs/TRIAL.md +++ /dev/null @@ -1,80 +0,0 @@ -# Trial Period - -When hiring, we look for specific qualities and skills in our candidates that -can only be observed during the trial period. Skills such as the ability to -figure things out on your own, judgemental skills, decision-making, and async -collaboration are part of our internal culture and what we aim for. - -Across the whole engineering, our team operates the following way: - -1. lead engineers contribute to defining business Goals along with the Partners - and Stakeholders -1. every engineer, who is assigned to the Goal, identifies the Problems stopping - us from achieving the Goal -1. every engineer assigns themselves one Problem at a time and proposes a - solution in the form of PR. - -The main idea is to make the right contributions to achieve the Goals. All this -process happens async, without making blockers or individuals being spoon-fed -with new assignments. This is what we are expecting from you during your trial -period too. For more details please carefully read Developer Guidelines. - -## How the Trial works - -Once onboarded in the repository, you won't receive a narrow Problem to resolve. -Instead, you will be assigned to a Goal where you will join forces with our team -members and be responsible for contributing to the Goal. We'll expect you to -define a new Problem and resolve it, or pick from the ones reported by your -peers. Our [Developer Guidelines](./CONTRIBUTING.md) will help you navigate your -trial and follow our team's principles. - -## Get started - -1. Align yourself with our [Developer Guidelines](./CONTRIBUTING.md). Not - following them will result in your contribution being rejected. -1. Open a [PRIVATE THREAD](./private-thread-instruction-min.png) discussion in - our [Discord](https://discord.gg/cHxnURgGgk) and ping there Mark - (@MarkCurchin). -1. Join one of the repositories presented below or request an access. -1. Align with the Goal you will get assigned to. -1. Create a Problem (issue) or assign yourself to an existing one. -1. Describe shortly your solution and provide an ETA in the comment section. -1. Communicate in your Discord private thread your intentions to resolve a - problem and paste the GitHub link. -1. Begin solving and follow our [Engineering Guidelines](./CONTRIBUTING.md). -1. Once complete, request review according to our - [Engineering Guidelines](./CONTRIBUTING.md) and ping Mark in your Discord - private thread. - -> [!TIP] -> Repositories where you can begin your trial: -> -> - **HTML/CSS and JavaScript:** -> - **Python:** -> - **Full-stack web3:** [for access - get in touch](https://discord.gg/cHxnURgGgk) -> - **Solidity:** [for access - get in touch](https://discord.gg/cHxnURgGgk) -> - **Go:** [for access - get in touch](https://discord.gg/cHxnURgGgk) -> - **Design:** [for access - get in touch](https://discord.gg/cHxnURgGgk) -> - **DevOps:** [for access - get in touch](https://discord.gg/cHxnURgGgk) - -## I don't have access to open a PR in the repository. What do I do? - -Fork the repository and create a PR using a -[Fork Strategy](https://gist.github.com/Chaser324/ce0505fbed06b947d962). - -## What is the trial duration? - -The trial period can take from 1 to 5 days, which can be extended if necessary. -If the PR is kept stale for a long period without previous notice, it will be -closed automatically. - -## Can I get a different task on trial? - -No. - -## Do I get hired after the trial? - -After the trial, your results will undergo a collective verification and -assessment from a board of responsible members. Since we will be in touch, we -will communicate to you personally the results of the trial and the next steps -awaiting. diff --git a/docs/rules/DEV-180.md b/docs/rules/DEV-180.md index d4bc528..e4a4afd 100644 --- a/docs/rules/DEV-180.md +++ b/docs/rules/DEV-180.md @@ -29,6 +29,9 @@ obvious goes nowhere, because a field visible on the screen documents itself. 1. `docs/specs/.md` holds only unimplemented behavior for a Goal. The product docs hold only what ships today: `docs/product/.md` by default, or the path the repo's docs README declares where it differs. + `docs/product/` is the only subtree meant to render as an end-user docs site; + `docs/specs/` is a planning artifact for developers, not end-user + documentation. 1. Each PR that delivers behavior moves the delivered sections out of the spec. Graduate what a user cannot infer from the UI, drop the rest. A spec may graduate into more than one file. diff --git a/docs/rules/DEV-510.md b/docs/rules/DEV-510.md new file mode 100644 index 0000000..4f40849 --- /dev/null +++ b/docs/rules/DEV-510.md @@ -0,0 +1,59 @@ +--- +id: DEV-510 +title: "Set Up Your Public Profiles for Holdex" +status: "active" +enforcement: "semi-automated" +severity: "warning" +depends_on: [] +--- + +## Problem + +A GitHub, LinkedIn, X, or Bluesky profile that doesn't state the member's Holdex +role, or still links to outside brands, doesn't tell the market they work here +and dilutes the identity every member's profile is meant to project. + +## Solution + +Immediately upon joining, update your GitHub, LinkedIn, X, and Bluesky profiles +to reflect your role at Holdex, and keep them exclusively promoting Holdex while +employed, no other brands or links. + +Wizard opens this as a Problem automatically when a new member is onboarded, so +the check is triggered without anyone remembering to file it. Completing the +profile fields, and confirming they match, stays manual. + +**GitHub**: first name only, bio states your role (for example "Full-stack +Engineer at @holdex"), company set to `@holdex`, location set to `localhost`, +current time hidden, email left empty, social links to +[x.com/HoldexIo](https://x.com/HoldexIo), +[holdex.io/c/jobs](https://holdex.io/c/jobs), and +[linkedin.com/company/holdex](https://linkedin.com/company/holdex), only +Holdex-related pinned repositories, and a public self-repo README stating your +role, contributions, and enthusiasm for Holdex. + +**LinkedIn**: add Holdex as your current experience, with this mandatory +description: + +> Holdex is a design and technology studio for AI and fintech companies. Hong +> Kong-based since 2016, we turn bold visions into secure, scalable products, +> driving adoption with unmatched expertise. + +**X**: description states your role at @HoldexIo, link to the Holdex website or +portfolio, location set to `localhost`. Engage actively: share Holdex news and +updates, interact with the community, and tag +[@HoldexIo](https://x.com/HoldexIo). + +**Bluesky**: bio states your role at Holdex, link to the Holdex website or +portfolio, and follow and engage with +[Holdex's Bluesky presence](https://bsky.app/profile/holdex.io). + +### Acceptance Criteria + +- [ ] GitHub profile matches every field in the Solution +- [ ] LinkedIn lists Holdex as current experience with the mandatory + description, verbatim +- [ ] X profile states the role, links to Holdex, and sets location to + `localhost` +- [ ] Bluesky profile states the role, links to Holdex, and follows Holdex's + Bluesky presence diff --git a/docs/rules/DEV-520.md b/docs/rules/DEV-520.md new file mode 100644 index 0000000..b629333 --- /dev/null +++ b/docs/rules/DEV-520.md @@ -0,0 +1,33 @@ +--- +id: DEV-520 +title: "Advocate for Holdex Across Public Channels" +status: "active" +enforcement: "manual" +severity: "warning" +depends_on: ["DEV-510"] +--- + +## Problem + +A member who never shows up publicly, skips aligned community activity, and +never engages with Holdex content leaves the mission and the work with no +visible advocate. The market and future hires read that silence as absence. + +## Solution + +Every member actively advocates for Holdex, its mission, and its values: + +1. Participate in aligned community events and activities. +1. Share and engage with Holdex content on LinkedIn, X, and Bluesky. +1. Represent Holdex professionally and ethically, in line with the + [Code of Conduct](../CODE_OF_CONDUCT.md). + +This is ongoing conduct, not a one-time setup step, and it assumes the profiles +that carry it already exist: see [DEV-510](./DEV-510.md). + +### Acceptance Criteria + +- [ ] The member participates in aligned community events and activities +- [ ] The member shares and engages with Holdex content on LinkedIn, X, and + Bluesky +- [ ] The member's public conduct follows the Code of Conduct diff --git a/docs/rules/README.md b/docs/rules/README.md index 7882268..8bd6bab 100644 --- a/docs/rules/README.md +++ b/docs/rules/README.md @@ -4,18 +4,21 @@ The org-wide contribution conventions as a **rules system**: small numbered files that each enforce one checkable behavior. Rules are grouped by category. Each `DEV-` rule enforces one behavior and -carries acceptance criteria you can check. The Authoring category doubles as the -shared standard that any other rules system can adopt. +carries acceptance criteria you can check. The Rule Authoring category doubles +as the shared standard that any other rules system can adopt. ## Categories -Rules are numbered by category: DEV-0xx Authoring, DEV-1xx Contribution model, -DEV-2xx Communication, DEV-3xx PR requirements, DEV-4xx Review. +Rules are numbered by category: DEV-0xx Rule Authoring, DEV-1xx Planning, +DEV-2xx Communication, DEV-3xx PR requirements, DEV-4xx Review, DEV-5xx +Advocacy. Planning, PR requirements, and Review are stages of the same +contribution, not competing definitions of it. -### 0. Authoring +### 0. Rule Authoring How to write a rule. These rules define the shape every other rule follows, -including their own. +including their own. Not to be confused with authoring a contribution itself, +that is Planning, PR requirements, and Review below. - [DEV-010](./DEV-010.md): enforce one behavior per rule file - [DEV-020](./DEV-020.md): structure a rule as Problem, Solution, Acceptance @@ -24,10 +27,22 @@ including their own. - [DEV-040](./DEV-040.md): reference a rule by ID as a followable link - [DEV-050](./DEV-050.md): keep the Problem statement short -### 1. Contribution model - -How work flows from a business aim to a delivered change: Goal, Problem, -Solution, Spec. +### 1. Planning + +Three pillars carry this: Goal, Problem, Solution. A +[Goal (DEV-110)](./DEV-110.md) states the business aim and links exactly one +[Spec (DEV-125)](./DEV-125.md), where the team defines that aim well enough to +interview stakeholders and negotiate it until everyone +[agrees (DEV-130)](./DEV-130.md), not just understands. Once the Spec is agreed, +[Problems are derived from it (DEV-150)](./DEV-150.md): every barrier between +today and the Spec becomes exactly one Problem, filed as +[a sub-issue of the Goal (DEV-160)](./DEV-160.md). A Solution is always +[a pull request (DEV-170)](./DEV-170.md) opened against a Problem; a Problem can +take more than one PR to resolve, and the one that closes the gap +[closes the Problem with a closing keyword (DEV-360)](./DEV-360.md). As a PR +ships a piece of the Spec, that piece +[graduates out of it (DEV-180)](./DEV-180.md), so the Spec always holds just +what is not yet built. - [DEV-110](./DEV-110.md): take ownership of a Goal - [DEV-120](./DEV-120.md): keep the Goal description to the allowed sections @@ -77,10 +92,9 @@ How to review, and the quality bar work is held to. - [DEV-430](./DEV-430.md): deliver bug-free work; review is a safety check - [DEV-440](./DEV-440.md): judge work by value delivered, not effort spent -## Rule file format +### 5. Advocacy + +How members represent Holdex in public. -The file format is itself defined by the Authoring rules above: -[DEV-020](./DEV-020.md) fixes the body shape, [DEV-030](./DEV-030.md) the shared -frontmatter, and [DEV-040](./DEV-040.md) how rules reference each other. A rules -system in another repo may add its own frontmatter fields, documented in that -repo's own rules index. +- [DEV-510](./DEV-510.md): set up your public profiles for Holdex +- [DEV-520](./DEV-520.md): advocate for Holdex across public channels