I was reading an old article about problem solving and thought I would share an interesting idea.
Learn to invert problems.
I was taught in school that the "right" way to solve a math problem is to start with the given formula, and work your way to the solution. The "wrong" way is to start with the problem, and derive the formula. I have found that for many hard problems, you can invert the problem, and solve it much faster.
A common example is to find the formula for a parabola that passes through a set of given points. Instead of working on it forward, start with the points and work backwards. That is, try to find what kind of formula would generate these points. A common use case for this is when you want to find the formula of a function that maps some set of data to another set of data. In mathematics, this is also called as finding the inverse function. In programming, it is the same idea, but without the "formula" part. You can create a function that takes some data as input and returns some other data as output. Then you feed your data to this function, and you get the other data as output. This is called as "inverting the data".
This is a very powerful idea because most hard problems are best solved when they are addressed backward. By inverting the problem, you can keep yourself in the "solution space" (or more specifically, in the output space). This allows you to reason about your problem in a more comfortable way. The reason why I'm so fascinated by this idea is that I've found it very useful in both math (computer programming) and general life problems.
I hope you find this idea useful as well.
I'm changing my writing intervals from dailies to more irregular (but at least once a week) entries. You might have already noticed that that the header title links changed a bit. This change is caused mostly by me not being able to justify the writing of not so trivial text while being quite busy and wanting to spend more time with my family.
I've been thinking for a few days about the "service deployment" landscape. I really like render.com, but it's still young and lacks some features - such as API. I would need the API to do custom multi-tenant customer deployments.
Then we have DigitalOcean. I'm also a big fan. It has many utility services and a nice API. For scalable deployments, one would need to have a custom implementation, or use Kubernetes.
What I want is Heroku style or render.com like deployments, where you have a predefined simple config file, a useful CLI, and flexible API. And all of that would come with simple / relatively cheap pricing and right UX/UI administration panel.
So I think someone should create "this" PaaS offering on DO. Maybe me?
Saying you want to "learn to code" just to get into a tech company is like saying, "I want to learn how to lay bricks" when you're interested in becoming a real estate developer.
You don't need to learn to code. You need to understand how it all fits together.
Instead of learning how to punch "developer" jargon into a wall of green text, we should be teaching our kids how to be creative, how to use low-code or no-code tools.
In 1900, 40% of the population was involved in farming. Today it's 1%. "Coding" is becoming modern-day farming.
Just so I'm clear - being a computer science guy or/and a software engineer is much more than "coding", it is to study and to learn how to build a plane, and a "coder" in this analogy is an airplane pilot.