A cautionary tale on project-based-development
Tags: career, programming, beginners, discuss
Published: 2023-11-25 19:41:17

Hello! I'm Víctor _(aka Brian3647)_, the author of [snowboard](https://github.com/Brian3647/snowboard) (a http request parser & response generator) and [a bunch of other things I might not want to talk about](https://github.com/Brian3647?tab=repositories).

## "Learning a new programming language" isn't quite what you might want to do

We have all, at least once, stumbled upon those 12-hour YouTube videos on how to learn a programming language like rust, javascript or python. Don't get me wrong, those are good, but they're definitely not for everyone. And by that, I mean only a small fraction of people actually learn to code. But first, we have to define that:

### What is coding?

Wikipedia might say something, and so will the dictionary, but I think coding might be as subjective as being good in a sport - sure, everyone can understand that a specific sequence of characters will print "hello, world!" to the terminal, but not many will even think about what are they actually doing.

In my opinion, a good coder is not someone who knows data structures, file systems, algorithms or creates beautiful websites, but rather one that has a mind able to see a problem, relax for a bit, read something and find a solution for it.

**Because, face it, memorization isn't learning.**

And neither is listening through 10 hours on how to make the compiler not cry and be able to copy code faster.

## Project-based development is scary

Well, why not simply start with projects? Sounds good, doesn't it? Well, no. 

I mainly divide project-based-dev into 2 categories:
- Big tutorials
- Documentation surfing

The first one, big tutorials, are usually courses (often paid*) that teach you how to do a specific thing, usually something like a discord bot, a web application using react (use htmx instead) or something in the lines of an AI bot able to solve all your problems. Those are fun projects, yes, and once you start with them you feel unstoppable since everything works after a quick syntax error question in any forum, but trust me, they rarely help you.

They mostly make you learn a 101 on how to get muted in any discord programming server, and if you manage to learn something, it will mostly be either too broad or too specific to actually help.

### The dark corner of documentation surfing

Thing is, even if you don't want to, you're going to have to learn how to search and read documentation earlier or later. And it can be ok _(if it isn't a npm package)_. So being able to search information quickly and effectively is something that needs to be taught as soon as possible. You'll eventually find out that a good google search usually removes the wait time of asking to other people, and that most programming languages are at least a little bit readable.

### Do your own thing

It's ok, we're all out of good multimillionaire start-up ideas, but that definitely does not mean you should do another to-do app using 5GB worth of libraries. In fact, I've found out that most of the times, you're using a part of the library so small you might as well just write that part yourself, removing everything that you don't really use. This is extremely common when using a library that is basically a wrapper for another, where you're only using a tiny part of a tiny part of something.

And when you have to go out of your way to do something that everyone is doing using another one's massive codebase, is where I found out you learn most of what you actually need.

An example of this might be building static websites with something completely overkill for what you actually need instead of doing something as simple as a template replacement (eg. my own [encoped](https://github.com/Brian3647/encoped))

## Conclusion

After all, this is jut my opinion, and not only can but WILL be different for different people. That being said, if you do want to start building your own things, there's a bunch of things you can do.

Do not be afraid to reinvent the wheel. Take your favorite programming language, build a JSON parser, call it super-fast, center the title in `README.md` and patiently wait for the big total amount of 6 github stars in your project.

Good luck!

_ps: Q: does anyone know where to show people your work without getting destroyed? - A: nope_