Let's compare technical debt and real-world financial debt. (Aren't I "fun"?)
TL;DR: Many developers are creating future problems for themselves because they're not thinking about the consequences of their actions. For some languages and technologies, the examples aren't great and don't teach everything that's needed to avoid future problems.
I'm going to consider three broad categories.
1. Credit card - make a deliberate choice to put something off (paying for an item/service) knowing that will have to come back to it (& pay) later, possibly with some interest.
Having a little of this is normally not a problem.
2. Loan shark - No other options when you have to do something now. It's solving a short-term problem but likely creating a bigger and more expensive one for the future.
Avoid as far as possible. (If you're in real financial debt, please talk to someone--don't struggle alone.)
3. Financially illiterate - No one ever taught you about money or saving. You spend money without thought, have multiple store and credit cards, have little or no savings, and live "pay-check to pay-check".
"This must be fine", or so you think. "Doesn't everyone live like this?" "I'm sure it will all work out in the end--somehow."
Hopefully, the comparisons are clear.
What the term "illiterate" might hide is that this isn't always the developer's fault.
Some languages/technologies/frameworks are taught in only the most basic ways. The student is shown how to get started or do the basics, but the instructions never go beyond that.
Even examples and so-called "best practices" don't help. "Expert" code looks like beginner code, and not in a good way.
Everyone makes the same mistakes, builds up a code base with the same issues, and talks about the code/language/framework with the same complaints.
Eventually, the problem becomes clear, and someone suggests a rewrite with a different technology.
It sounds like declaring financial bankruptcy, and that future financial problems will be avoided by only trading in cash/gold/crypto.
Is it the technology/medium that's the problem? Or is it how it's used?
If you're learning, are you learning how to do something without creating future problems for yourself?
If you're teaching, are you setting up your students for long-term success?
If you're creating a language/technology/framework, are you doing so in a way that encourages doing things in ways that avoid long-term problems?
0 comments:
Post a Comment
I get a lot of comment spam :( - moderation may take a while.