Knowing the bits
We use complex systems. My mother once said that there could be little leprechauns behind the TV screen redrawing the screen 50 times a second she could not care. (At least she knew that the TV in Europe had 50 (half) screens every second.) Most of the people do not care about the electronics and the surrounding software. The trend is that this technology penetration is going to be even more dense. Electronics get cheaper, programming becomes easier and soon toilet papers will have one-time-use embedded computers on it. (Come up with a good application!) Face recognition is not the privilege of NSA, CIA, KG or Mosad anymore. The technology spread does not stop at the level of big corporations like FB, or Google. Shops start to install cameras and software that recognizes and identifies frequent buyers helping the sales work. People get used to it, and IT personnel are not different, are we?
Kind of yes. The difference is that we are interested in the details of those leprechauns how they do their job. We know that these days there are liquid crystals in the screen. They are controlled by low-voltage signals (at least compared to the voltages of the former CRT solutions). That there is a processor in the TV/toaster/toilet paper, and it is programmed in a language called e.g., Java or Rust.
We, Java programmers, program these applications, and we not only use the language (including RT) but also layered software, frameworks. How does this layered software work? Should we understand, or should we just use it and hope that it works?
The more you know a framework, the better you can use it.
Better means faster, more reliable, creating code that is more likely to be compatible with future versions. On the other hand, there should be a reasonable stop when you have to halt learning and start using. There is no point in knowing all the details of a framework if you never start using it. You should aim for the value you generate.
On the other end of the line, however, if you do not have enough knowledge of the framework, you may end up using a hammer digging a hole instead of a shovel. I usually feel confident when my knowledge reaches the level of understanding that I know how the developers of the framework did it. When I can bravely say:
If I had time, (sometimes perhaps more than the lifetime of a single person), I could develop that framework myself.
Of course, I will not, because I do not have the time and also, more importantly, because there is no point developing something that is already developed with appropriate quality. Or is there?
I could do it better.
I have heard that many times from junior programmers and from programmers who considered themselves not that junior. The correct attitude would have been:
I could do it better, but I won’t because it is done and is good enough.
You do not need the best. You just need a solution that is good enough. There is no point in investing more if there is no extra leverage. There is no point in investing more even if there is leverage, but it is lower than the investment in other areas would be higher.
Generally that is it when you are professional. Face it!
Comments
Please leave your comments using Disqus, or just press one of the happy faces. If for any reason you do not want to leave a comment here, you can still create a Github ticket.