Ask HN: If you were to start a new company, what tech stack would you recommend?

3 points by dijit ↗ HN
Context: A company has asked me to join as CTO and everything is prototype stage and needs to be rewritten from ground up.

the current stack is Java (spring) on the Atlassian Suite (bitbucket, jira, confluence) - there's no love for that platform within the teams I'd take over, but I'm curious to know how others do it and what they'd recommend.

Personal Bias':

SCM/CI: Gitlab

Documentation: I prefer `docs/` in the repo's themselves, but there is a need for something more architectural; maybe mediawiki is fine?

Task Management: Notion or Monday

PL: Golang + some python glue

Build system: Bazel (if anything)

Structured DB layer: Cockroach

------

But I'm extremely open to other ideas.

I know everything should start with "what problem am I trying to solve" but there has to be some sensible defaults here? right?

I'm trying to not choose tools that make people miserable, I only have experience with tools that make people miserable. The scale is pretty small.

7 comments

[ 4.9 ms ] story [ 26.4 ms ] thread
I don't think there are sensible defaults because of the lack of context.

Small team: notion

Big team: notion

Huge team: notion

FYI: I love and use notion.

But scale affects tools. Employee knowledge affects viable tech stack. It is all truly dependent on context. The thing about being a CTO/CPO etc is that you are the one that has to weigh the trade-offs and make sensible "defaults" based upon your context.

Totally agree: there just isn't a magic bit of tech that fits all circumstances.

(I've been CTO of several small start-ups, and a hired gun in all sizes up to multinationals, and that is still true!)

Oh crap - hackernews stripped my emojis. It was meant to say:

Small Team - notion is :fire:

Medium Team - notion is :checkmark:

Large Team - notion is :poop:

Golang + react + PostgreSQL.
Seriously, congratulations on the offer.

rewritten from ground up

Now you have two problems.

What tools do you have experience with exactly?

For programming languages, what about C#, Rust, Python, Julia, R, or C++? Any particular pros and cons?

Sounds like a startup, and with the small scale in mind, it should be whatever the team is most comfortable with. And ideally something that isn’t too hard to hire more people for. Makes me wonder what made them pick Java in the first place for the prototype, if there’s no love for it.

Edit: For task management, issue board etc. it’s probably best to let the team(s) choose/vote for what they enjoy working with, rather than prescribe it from the top. Your process is more important than what task management tool you happen to pick