The computers must burn
Experience breeds in failure, not success. Being a "good" programmer means nothing; one that can fail will learn the most. Embrace it. Write things that break. Hack a program together without thinking of the consequences, and laugh maniacally while you watch it burn.
However, it is important to make a distinction between code "failing" and code "being bad"; those ideas are not necessarily synonymous. The stereotype of a "perfect developer" that never makes mistakes is particularly harmful in this regard because it furthers the idea that a bug in your software is a reflection of you as a person.
A 1x Engineer...
- Writes code that - gasp - has bugs.
- Makes mistakes from time to time, and finds growth in those mistakes.
- Can feel like an imposter at times, and understands that others may, too.
The point of saying this is to suggest the idea that Other Developers Make Mistakes Too, and that this might not be such a bad thing. Promoting resources for self care in tech and being vocal about these issues is a step towards reducing the impact that impostor syndrome has on our community, and preventing anxiety that leads to eventual burnout.
Software is bad
Computers suck. Nothing is perfect. In a lot of computer science, nothing can be perfect. Improvement is an ongoing goal, but it can never be reached. As such, it seems wrong that it's often placed as a target. Perfection doesn't exist, and it's not for us.
However, building something imperfectly doesn't mean that it's bad. The way that most software is perceived is subjective - there is no universal solution to any problem, but that's a good thing. Our individuality, the difference in our goals in life and view of the world, is part of what makes us human. No piece of software can satisfy every possible use in this regard. It can be designed to meet as many as possible, which some companies have put a vast amount of effort into doing, but it will never be perfect.
Aiming for perfection caters to the majority. It implies a disregard of issues in a minor context, and makes decisions to suit a larger scope. To some extent, this has to exist everywhere, as we've already established that nothing can be perfect. In implementation, though, it means that a lot of software is built and designed for "most people". It's built with most people in mind, so that the product is used by the most customers and gains the most profit. It's built for everyone, and the outcome is perfect for no one.
Have fun and break things
A lot of the people here are not programmers because they want to make money - we are programmers because we enjoy what we do. This is a bit of a dangerous idea; I am in no way suggesting that we shouldn't be paid for our work, but it would be foolish to assume that money is the only factor that influences it. Simply put, there is more to work than making money, and there is more to programming than getting paid.
Enjoying our work means that we are able to freely dictate how we write our code. We aren't held back by stressful deadlines or management issues, and we are free to explore and build our software in the way that we think is right. We have the privilege to be motivated by enjoyment over monetary value, and that is something that we want to share. Software as a hobby instead of a job.