
A letter to myself as a fresh software engineer - tyrion
https://www.florio.dev/20200328-letter-to-myself/
======
agentultra
> There is no point in reinventing the wheel.

I wish there was a better way to phrase this. I understand the spirit of this
advice but in software we don't get better compilers if we stick with the
first compiler that gets invented.

I've reinvented many things simply to learn how they work. Sometimes I get
ideas about how to do things better. Sometimes I do it for the challenge ( _I
bet I could do that_ ). Sometimes I find that I can cut out 2/3 of the code,
half the features, and get a system that is easier to maintain and remove
errors from.

It's hard to become a better software engineer if all you do is glue together
libraries. It's hardly ever appropriate to write your own database from
scratch in a production application. But it's also hard to understand how to
write your own database if you never write one yourself.

~~~
redis_mlc
> But it's also hard to understand how to write your own database if you never
> write one yourself.

You just took NIH to a whole new level.

~~~
btilly
That isn't NIH. In fact it is often the opposite of NIH. It is a pre-requisite
of becoming a true expert in the technologies that you are using.

NIH is writing your own database and using it in production.

But understanding how to write a database makes it easier to understand why
your existing database works the way it does, and what its quirks should be.

For example suppose that you have a slow query. You EXPLAIN ANALYZE to get a
query plan. Now what? It really helps if you can say, "What would a program to
do this look like? How fast would it be?" And then be able to say, "And if I
was to write a program to do this, how would I do it? How fast would that be?"
And then if the second is faster you can ask, "How can I get the database to
do what I think it should do?" (Hint, in most databases with temporary tables
and indexes on them, you can force your desired query plan to within a factor
of 2.)

That exercise really helps in optimization. But that exercise is only
available to people who know how a database actually works.

------
zcw100
I don't have a problem with reinventing the wheel if that's what you know
you're doing. Other people have already pointed out the many good reasons why
you would want to do that. What I do have a problem with is people who
reinvent the wheel because they couldn't be bothered to check if someone had
already invented it.

------
a-ve
Agree with the points made here but

>There is no point in reinventing the wheel.

There's a difference in a wheel made out of stone and one made of carbon
fiber.

~~~
drdeadringer
I remember a poster illustrating this point. It was essentially the iconic
"evolution of man" scenario but for the wheel; the caption was along the lines
of "Sometimes It's Necessary".

Something very much like this: shorturl.at/lpQVW

~~~
eyeundersand
FYI, your link is not working.

------
AdrianB1
I agree in various degrees with most of the letter, except one point I
strongly disagree: compare with others.

First, comparing to others will motivate you to get better, have a positive
target you want to reach: "I want to be as good as Jake" was my model when I
was in college, Jake was at that time the best IT expert I met for a decade.

Second, because you need to know where you are and what is going around you.
You need to know your peers and how you are qualified versus them, how
productive and appreciated you are and how are you paid. You may be motivated
to do something when you find the new colleague still in college is earning as
much as you do after 10 years just because the company wants to promote women
and "reverse the wage gap", so they give female college students positions and
wages equal or higher than top rated senior engineers that are male. Just
saying, I saw many such cases.

~~~
giffarage
When I think of the things that bring me joy, comparing myself to others
doesn’t come up.

~~~
AdrianB1
Then you prefer to live in a bubble and not having any idea how you perform
versus others? It's a great way to become the last of the pack and get fired
while believing you are so much better than yourself a month ago.

