[The Exposition] I’m building a start-up the wrong way
Published: 2024-04-05 20:11:10

Part one of many.

## Background
“Senior” nodejs backend developer (~5 years professionally). 

A note on quotes:
What I consider a Senior (note there are no quotes here) developer (which I’m not yet by my own judgment) (I love parentheses)

- Pretty good or at least somewhat good at 3 types of languages, with a focus on at least one
    - ~~javascript~~ Interpreted: `javascript`, `python`, `ruby`, etc  - do what you please at the expense of efficiency → language handles hard/difficult part
    - Compiled-semi-low level: `java`, `go`, `c#`, etc - enough freedom, but language will limit you when it’s likely for you to mess up → 50/50 handling of hard/difficult parts
    - Compiled-low level: `c/c++`, `rust`, `zig`, etc - almost absolute freedom at the expense of complexity to accomplish a task → you handle virtually all the hard/difficult
- Knows basics: Computer architecture, ~~Linux~~ OS, Algorithms/DS, Networking, Compilers/Interpreters, Math, Databases, System Design
- Curiosity - you won’t be a Senior for long without it. Manifestation of which are side-projects, learning new things, keeping it up, etc. Come to think, the first 2 might be the manifestation of this one. Curiosity for me is a hybrid between motivation & discipline.

> Even if I program in js/node/ts solely for a hundred years I would not consider myself a Senior developer (I’m glad tech companies ‘think differently’ though)

## Back to the article - "Building a start-up the wrong way". But what does it mean?

The accepted opinion is that everything should be fast: you need to build fast, ship fast, and grow fast.

The best way to do so for a solo founder from a technical standpoint is to use tools you already know: editor, programming languages, frameworks, libraries, databases, etc.

But there are a few problems there for me:

1. I don’t want it to be a surrogate child of my job. I don’t want to have a mini-job after my real job.
2. The language/tools used at my job are not the right ones to be used for a project I’m trying to build.
3. I want to learn something new

The only way to escape that for me is not to change small (”Use `fastify` instead of `express` for my new nodejs app”), but to change big: new language, new environment, new surrounding tech.

At this point, I either know or can learn sufficiently fast everything I need to build a product from a tech standpoint. It won’t be the most efficient at the beginning, but it’ll get the job done, iterations will follow.

Statistically speaking most likely it’ll fail due to various reasons. I want to make failure even more likely, want to make it harder than it should be. I want to feel helpless and stupid all the time learning new things while trying to make it a viable business.

I still remember the motivation to become a software developer. Mine was the possibility of building anything I wanted from home, from any home. I haven’t really pursued this opportunity until now.

The project has 2 objectives: building a business and becoming a better developer, I (hopefully) cannot fail both.

Teaser: the next article is about particular tech decisions. Or not, don’t know yet

Twitter: https://twitter.com/eorn_b