I’ve had a hectic last couple months – holiday traveling, family get-togethers, end-of-year projects at work, and so on, and so forth. Despite this, I think I’ve made some big strides in learning the technical skills needed for my upcoming computer projects. In the closing months of 2013, I learned Python. I learned git. I read a 400-page book on how to use the Linux command line. However, every time I felt like I was confident enough to start on a project, I would soon stumble across the latest thing on Hacker News and would have to learn it because it’s the hottest language in the field and every developer will be using it soon.
Haskell you say? Okay, I’ll put in an order for another 350-page book on Amazon. Yes, Haskell, but you need an IDE to edit your code. Alright, that 500-page book on vi and Vim goes into my shopping cart. Okay, no need to worry. It’ll take a while to learn, but this will be the text editor to end all text editors. Then I’ll finally get started on something. But what about Emacs, not everyone uses Vim, maybe you need to learn it to get a better perspective on things. So then another 500-page book goes in the cart. Then I need to learn how to parse text files so yet another book on regular expressions gets added to the cart, then a book on sed, another on grep, and so on, and so forth…
$400 later and enough new books to occupy myself for another 2 years – and I still haven’t gotten past the brainstorming phase on my latest project (to be specific I’m working on some software that will simulate economic markets – but that is a subject for another post). Part of this is a symptom of me not starting programming 10 years ago, but another part of it is that I keep waiting to have the perfect skillset just to start a project. I’ll have to come to grips with myself that my desired state of programming nirvana will never happen.
Every product that reaches the market, and every technology that is developed, will never be perfect. I’m not talking about fatal design flaws that lead to product failure, but imperfection in the sense that human wants and needs will continue to evolve, and under these circumstances, existing products will need to be improved or redesigned to meet the needs of the future. On the other hand, as a designer, you want to be able to anticipate anything that can go wrong with a product. However, the fear of failure can be crippling and in the end, you never get anything done as a result. But it’s not really until you get your product into the hands of other people that you really get to see where improvements can be made, and such feedback is vital to the designer. The key is that you need to make your creation improve the human condition in some way, even if it’s not perfect. As your product, and the ideas and innovations that come along with it – are circulated throughout the population, only then does it allow other people build upon what you’ve done and to create new ideas of their own. Then, life marches on. But if your ideas never get executed, nothing happens, and humanity leaves you behind.
– P.S. –
You may have noticed that I added a github link to the top of the page. There’s not much on it currently, but I did create and give a presentation on dynamic documents at the Houston Visualization Meetup two weeks ago. You can view the presentation materials here. In the meantime, I will be updating the repositories daily.