A friend of mine want to learn programming, I found it very hard to give him a direction. It's not that I'm not confident as a programming Pro, it's more that I'm worried he's not gonna be a programmer type in the end.
Want to be pro or just simply Pro?
I met a lot of people in programming industry. Most of them are very picky on their ways of doing things in programming, because most of them are Pros or want-to-be-Pros. But one thing I noticed lately is that not many people understand how to program, just like not many people knows how to live better. They are breathing, but apparently not everyone is breathing happily.
Being a good programmer requires a lot of life knowledge, for instance, you are not trying to simulate the entire world through code, you are simply trying to simpfies the world. There's a fundermantal difference between duplication and simplification. If your goal is to (re)construct entire world, I suggest you stop coding, and go find a job in US government, or some international organization.
Good programmer normally won't be extremely good at coding in general, because code is dead. If you don't talk to people to understand why we need to write that 10 lines of code, you actually won't be effectively contributing to the society, and eventually that's the #1 reason why coder is one type of worker who does not get much appreciation in the company.
People think coder codes, that's not exactly right. Coder starts with the understanding of the world first, and then tries to simplify it so that he can put it in his pocket and shows it to another coder or shareholder. And then once everyone get impressed, this 10 lines graduatly grows into a beautiful system that can self-produce another 10 thousands lines with business logic that originated from that 10 lines. Yes, you are right, the first 10 lines is the most important, you want to keep it short, simple, at the same time, powerful, and killing.
10 lines to make an impact !
The best part of life is that you don't have to do everything to enjoy the fruitful ending? You hire someone to build your house, you ask your wife to do your tax, you ask your kids to study hard so that they don't have to depend on you in the future. You get a lot of free stuff without too much effort, maybe you do, we'll have to work on that part.
Picking a dummy programming book, the first thing you read is
There're 10 million versions of the above line, so forgive me I used the syntax that you are not familiar with. You put this line in your compiler, and run it, and you saw "Hello World" printed on the screen, and you moved on to other more interesting stuff.
What's more intersting about this line is that it does call a function Log which is not written by you, which you always take for granted, which actually produces a result you desire. right out of the box, within 10 seconds of your work, you are happy. You are actually proud of yourself writing this line to communicate with the computer.
Let me tell you my friend, this is where you turn Pro, if you can make a living by using that line, you are the Pro.
Part of the reason you are happy might comes from a hidden dependency line above the line you write
This line could be hidden and could be exposed to you depending on which language you are using, but once you realized this line exists, your confidence level goes super when it comes to print a "Hello World" or any message in the future.
So what are you trying to say ?
Crying baby model
Crying baby always gets attention because they need attention, and because it seriously needs your attention. If you need something, and you realize it, and you show others that you need them in obvious form, you normally 100% will get it. If you don't believe me, just go outside and ask for money, eventually you will get some under the assumption that you do need money.
In order for you to coming up that ten powerful lines, you need to be crying baby sometimes to at least
- establish that you need some help,
- make yourself available to be dependent
- reference the dependency in your chain
A scalable architect is not about millions of lines, it's about 10 lines of coding establishing the dependency chain. If you ever opened a master peice written by someone, and you saw only 1 line to 10 lines. You know you are reading a master piece. On the contrary, if you saw millions of lines in a single file, or millions of lines in ten files under separate folders or even under separate projects, you want to get out of there as fast as you can. You don't have time for that sh**!
People enjoy reading a novel, master piece. Not many people likes to read a work log, especially when this work log is written by someone else and the author tells you that this work log is the master piece, at least for now. Fu** him quietly and get out, you don't have to insult him.
In order to make things big, you should always try hard to make things simplier first, maybe you are not getting there the first day, but that should be one of your top priority goal for your project or your life project per se. Bigger does not equal to messier, but most of time, it is. That's why people get impression that in order to go bigger, we should go messier.
The right version should be, go simplier by claiming yourself as dependent to one aspect of the work, and then reference the dependency and ask the dependency to do its work.
Why do I need it?
What's the benefit to be dependent?. It's huge. Let me end this conversation by listing a few of them. This really should be common knowledge, but for most of us, we learn very slowly. Hopefully this is not too late for you.
- life is full of dependency, like it or not, you have to be dependent
- dependency is swappable, if you don't like this one, try another one, or write one you like
- dependency is testable, try it before you commit to it
- dependency can be turned off in theory. You don't want to be dependent on it, you press the button. It's called commenting out in programming. Use with caution
- dependency is extendable, this might be the best part of dependency, you can have kids, your kids can have kids. After millions of kids, you become the king, well you might be dead already, but your leagcy leaves behind.
- dependency is improvable, help others to improve it. You might want to contribute to this dependency, because
you're using it :) Happy coding.