Digital Edge Consulting logo

Premium mentoring · Two places per quarter

Mentoring for developers who want judgement, not another course.

I spend my weeks leading high-performing development teams, and my spare capacity building the tools on this site. That leaves room for exactly two mentees per quarter.

If you want senior-level guidance, this is that: code reviews with reasons, career strategy from someone who hires, architecture decisions explained rather than dictated.

This is not a programme, a cohort or a community. It is direct access to me.

Investment
£1,495 per quarter
Application only
01_Sessions

Fortnightly 1:1s

Fortnightly one-to-one sessions, agenda set by your goals.

02_Review

Async Code Review

Asynchronous code review between sessions: real reviews, on your real code.

03_Access

Direct Messages

Direct message access for the questions that cannot wait.

04_Duration

A Quarter Minimum

A quarter is the minimum engagement. Meaningful progress takes that long.

Real examples of the kind of practical uplift we help developers make.

Before: Mixed business rules inside one function checkout.js
function checkout(cart) {
  let total = 0;
  for (let i = 0; i < cart.items.length; i++) {
    total += cart.items[i].price * cart.items[i].qty;
  }
  if (total > 100) {
    total = total * 0.9;
  }
  let tax = total * 0.2;
  return total + tax;
}
After: Clear checkout service with testable rules CheckoutService.ts
interface CartItem { price: number; quantity: number; }

export class CheckoutService {
  private readonly TAX_RATE = 0.2;
  private readonly DISCOUNT_THRESHOLD = 100;

  public calculateTotal(items: CartItem[]): number {
    const subtotal = this.sumItems(items);
    const discounted = this.applyDiscounts(subtotal);
    return discounted + this.calculateTax(discounted);
  }

  private sumItems = (items: CartItem[]) => 
    items.reduce((acc, item) => acc + (item.price * item.quantity), 0);

  private applyDiscounts = (amount: number) => 
    amount > this.DISCOUNT_THRESHOLD ? amount * 0.9 : amount;

  private calculateTax = (amount: number) => amount * this.TAX_RATE;
}
Before: Fragile row parsing and implicit assumptions import.py
def import_users(filename):
    with open(filename, 'r') as f:
        for line in f:
            row = line.split(',')
            user = {
                'name': row[0],
                'email': row[1],
                'age': int(row[2])
            }
            db.save(user)
After: Structured import flow with validation user_import.py
@dataclass(frozen=True)
class UserSchema:
    full_name: str
    email: str
    age: int

def parse_user_row(row: list[str]) -> UserSchema:
    if len(row) < 3:
        raise ValueError("Invalid row format")
    
    return UserSchema(
        full_name=row[0].strip(),
        email=normalize_email(row[1]),
        age=safe_int(row[2])
    )

def process_import(rows: list[list[str]]):
    valid_users = [
        parse_user_row(r) for r in rows 
        if is_valid_row(r)
    ]
    repository.bulk_save(valid_users)
Before: Inline styles and brittle DOM scripting assessment.html
<div style="background:#112a3a;padding:20px;border-radius:8px">
  <h3 style="color:#fff;margin:0">Is this for you?</h3>
  <p style="color:#94a3b8">Check your eligibility.</p>
  <button id="btn" onclick="check()" style="background:#38bdf8;border:none;padding:10px">Start</button>
</div>
<script>
function check() {
  document.getElementById('btn').innerText = 'Loading...';
}
</script>
After: Semantic UI with Tailwind and Alpine FitCheckCard.html
<article x-data="{ loading: false }" class="p-8 bg-brand-surface border border-brand-border rounded-brand">
  <h3 class="text-xl font-bold text-brand-heading">Programme Fit Check</h3>
  <p class="mt-2 text-brand-body">Find out if the 6-week 1-to-1 is right for your career stage.</p>
  
  <button 
    @click="loading = true"
    :disabled="loading"
    class="mt-6 w-full py-3 bg-brand-primary text-brand-background font-mono font-bold uppercase tracking-wider transition-all disabled:opacity-50"
  >
    <span x-show="!loading">Take the Assessment</span>
    <span x-show="loading">Loading ...</span>
  </button>
</article>
Before: Runs locally, risky in production docker-compose.yml
version: '3'
services:
  api:
    image: my-api:latest
    ports:
      - "8080:8080"
    environment:
      - DB_PASSWORD=mysecretpassword
After: Safer deployment with health checks and secrets deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-server
spec:
  template:
    spec:
      containers:
      - name: api
        image: my-api:v1.2.4
        envFrom:
        - secretRef:
            name: db-credentials
        resources:
          limits:
            cpu: "500m"
            memory: "512Mi"
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080

These examples are deliberately simple. The real value is learning how to think this way in your own codebase, pull requests, architecture decisions, and day-to-day engineering work.

// For you if:

  • [+] You are a working Django developer who wants to reach senior judgement faster than experience alone allows.

// Not for you if:

  • [-] You are looking for a beginner course, accountability group, or job-guarantee bootcamp. The tools and blog on this site will serve you better. Start there, free.

Why only two places?

Because mentoring done properly does not scale, and I will not pretend otherwise. My calendar is the constraint and the quality guarantee.

What if the quarter's places are taken?

Applications stay open; I reply to everyone and offer the next quarter.

Is there a cheaper way to learn from you?

Yes. The starter kit ships the decisions with documentation explaining why, and the blog is free.

Two places. One application.

Apply for a place →
Legal / Privacy Policy

Privacy Policy

Last Updated: July 2026

Digital Edge Consulting Limited ("we", "our", "us") is committed to protecting and respecting your privacy. This policy explains how we process personal data in accordance with the UK General Data Protection Regulation (UK GDPR).

1. Information We Collect

We collect information you provide directly to us when you purchase a product, subscribe to our newsletter, apply for mentoring, or contact us via email or LinkedIn.

2. How We Use Your Information

We use your data to deliver the products and services you have purchased, send you the newsletter you subscribed to, respond to mentoring applications, and communicate with you about your account.

3. Data Sharing and Disclosure

We do not sell or rent your personal data to third parties. We do not share your data with any other provider other than the software platforms we use to undertake our business duties (e.g., our payment processor, email service providers, and communication tools). These providers are contractually obligated to protect your data.

4. Your Rights

Under UK GDPR, you have the right to access the personal data we hold about you, request corrections, or request erasure of your data. To exercise these rights, contact us at info@digitaledgeconsulting.co.uk.

Digital Edge Consulting Limited
Registered in England & Wales: 16170340
Legal / Terms of Service

Terms of Service

Last Updated: July 2026

These terms govern the purchase and use of paid products sold by Digital Edge Consulting Limited ("we", "our", "us"), including the Django Starter Kit. By completing a purchase you accept these terms.

1. Licence

Solo licence: licensed to one named individual, strictly for use by that one person. It may be used in unlimited personal and commercial projects, but it must not be used by, shared with, or made available to any other person, team, or organisation. A Solo licence used by more than one person is a breach of these terms.

Agency licence: licensed to the purchasing organisation, for use by its employees and contracted staff on internal and client projects without limit.

2. Restrictions

You may not resell, redistribute, sublicense, or publicly publish the product source code, in whole or in substantial part, whether modified or not. You may not use the product to build a directly competing starter kit, boilerplate, or template product. Code generated in the course of building your own applications is yours.

3. Ownership

The product source code remains the copyright of Digital Edge Consulting Limited. Your purchase grants a licence to use it; it does not transfer ownership.

4. Updates and refunds

A purchase includes all releases within the purchased major version (for example, all 1.x releases of the Django Starter Kit). Future major versions may be a separate purchase. If the product is not what you expected, email us within 14 days of purchase for a full refund.

5. No warranty

Products are provided "as is", without warranty of any kind. To the fullest extent permitted by law, our total liability arising from any purchase is limited to the amount you paid. Nothing in these terms limits liability that cannot be limited under the law of England and Wales.

6. Payments

Payments are processed by Polar (polar.sh) acting as merchant of record. Your purchase is also subject to Polar's own terms at checkout.

7. Governing law

These terms are governed by the law of England and Wales, and any disputes are subject to the exclusive jurisdiction of its courts. If we do not enforce a part of these terms, that is not a waiver. If any part is found unenforceable, the rest still applies.

Digital Edge Consulting Limited
Registered in England & Wales: 16170340
Contact: info@digitaledgeconsulting.co.uk