TSYSGroupHandbook/SourceMaterial/engineering/beginners-guide/developer-workflow.md

3.2 KiB

title sidebar showTitle hideAnchor
4. Developer Workflow Handbook true true

If you haven't already, it's worth your time to read Contributing to PostHog.

Most developers use either vscode or pycharm but you are free to use whatever IDE makes the most sense to you.

Backend w/ Vscode

  1. Create a git branch
  2. Start PostHog with bin/start
  3. Open app in Chrome and login
  4. Open Chrome devtools to network tab
  5. Navigate to scene (aka screen or page) and click on the area of interest
  6. Find network request in devtools and find request
  7. Make code changes including tests
    • Use print() as needed for debugging
    • Some developers prefer Pycharm for local development
  8. Run backend tests
    • bin/tests posthog runs only posthog tests excluding ee tests
    • ./bin/tests ee/clickhouse/queries/test/test_trends.py -k test_active_user_math for specific tests
  9. Commit changes to git branch
  10. Open PR for review
    • Include Github issue number #1234 which Github will automatically link for you

Frontend w/ Vscode

  1. Same as backend 1-5
  2. Find frontend code, i.e. frontend/src/scenes/insights/Insight.tsx
  3. Use console.log liberally
  4. As of writing, there are no unit tests for the frontend although we do have integration tests for the frontend via Cypress
  5. Same as backend 9-10

Alternative: Pycharm

Some developers prefer to use Pycharm and for good reason. While there are many benefits, below you'll find a few keys benefits.

  1. Debugging and no print() statements this is probably the biggest win in my opinion. Since we are learning a new codebase there is no shame in having an assistant. Pycharm will show you the call stack and variable values. This is huge for understanding what is going on.
  2. Code navigation when you are new to a codebase, moving easily through the code can be a real challenge, especially when there are multiple layers of abstraction. Pycharm allows you to Ctrl+Click nearly all methods to jump to their definitions. While editors like vscode have a similar feature, you'll find that Pycharm works in cases where vscode does not.
  3. Run configurations make starting celery, django, and webpack services simple. It's mostly just clicking things.
  4. Excellent TypeScript support with code completion and type checking directly in your editor.
  5. Click instead of type which means that you spend much more time typing code than running commands. Nearly everything in Pycharm is clickable.

Pycharm offers a try it for free 30-day trial. It's recommended that you use it for at least that amount of time before you buy. I recommend watching The Future of Programming that will blow your mind and perhaps give you a new perspective on tools like these.

Next: Technologies to learn