There are many things I don’t know. Even things I probably think that I know, I mostly likely don’t know as well as I think. Take for example, markets, you can sometimes think you’re close to mastering them. However, this is nearly always the point in time, when some market event happens proving that there’s always something new to learn and to adapt to! Experience is of course helpful in understanding markets, however, it’s more a case of using experience and applying it, rather than seeing carbon copies of markets year after year. I read a tweet recently from @modestproposal (which I’m somewhat paraphrasing here), which complained that 2008 was often being used as a lazy metaphor (or in appropriate situations). Labeling situations as like 2008, is somewhat misunderstanding both the current situation and also what happened over the Lehman crisis.
Experience also comes into play with learning a new programming language, speeding up the learning process considerably. Sure, there are differences between programming languages, but there are many similarities to the general thought process when it comes to coding. After a while, you also might get the sense you’ve “got” a new programming sense. After a few months, of learning Python, I kind of thought I had “got it”. However, just like the markets I’m not sure whether it is ever possible to “get” a programming language, just to get a better at it and improve. In my last blog article, I argued that what you don’t code is what counts. The point was that through judicious use of other open source libraries in your code, you can save a lot of time, as opposed to reinventing the wheel. However, I think it’s worth noting that, say if you’re coding in Python (or indeed any language!), it’s not simply a question of which Python open source libraries to use (although this is important!). It’s also a question of picking the right underlying technologies for your project. Of course, part of that technology choice happens before you even write your first line of code: which language should I use, but it also extends a lot further too. We can never “get” all the technologies out there,, but if we can get by, with a few simpler ones it might be enough to solve whatever problem we have at hand.
Take for example, the question of storing data, which is pretty major concern for anyone doing a data science project. What database should you use? The temptation is to pick the funkiest, newest and coolest database out there. But, maybe it’s fine for your project just to use a MySQL database. Or if the project is a one off and only one user is using it, maybe just a binary flat file format like HDF5 is sufficient. The technologies chosen need to be appropriate for your project. If we insist on using adding every single cool technology we’ve heard of it’s going to end up being overkill, adding extra complexity without good reason, and lengthening development time in process.
We can’t know it all, when it comes to markets or technology (or indeed anything) but sometimes, if we know enough to solve a problem, then that’s enough! Code which works today is more valuable than “perfect” code which will take forever to release.