Hacker News new | ask | show | jobs
by dkbrk 4227 days ago
I think the author is correct in that he tried to learn too many things at once; starting with a friendlier environment and focussing on a small number of new technologies has obvious advantages.

But in some other ways, the author is too self-critical:

> I'd spent months sitting alone in libraries and cafes, blindly installing tools from the command line, debugging Linux driver problems, and banging my head over things as trivial as missing parenthesis.

All these things have value, and I doubt that this was time truly wasted. Although some people can get by for a while without it, becoming intimately familiar with the command line is extremely valuable. Also, although this is by no means a requirement for being an effective programmer, most good programmers I know use a traditional text editor such as emacs or vim.

Ultimately, I think the point is that expending time is an investment, and you should prioritise based on the expected future utility from your time investment. More often than not, this means finding the most important thing and putting almost all of your energy into it.

4 comments

>> I'd spent months sitting alone in libraries and cafes, blindly installing tools from the command line, debugging Linux driver problems, and banging my head over things as trivial as missing parenthesis.

> All these things have value, and I doubt that this was time truly wasted. Although some people can get by for a while without it, becoming intimately familiar with the command line is extremely valuable. Also, although this is by no means a requirement for being an effective programmer, most good programmers I know use a traditional text editor such as emacs or vim.

I agree. I think the prime takeaway is do what you need to do to solve a problem and then most of these things that the OP described came organically for me: I started on Windows, learned programming via Python, used a wide variety of text editors. Eventually I grew dissatisfied by the tools windows provided me and installed Linux. I spent many hours debugging weird weird issues with my then laptop, until one issue (a kernel bug? I think...) forced me to abandon that laptop and switch to a thinkpad. When I started my first software job my coworkers recommended vim to me. After I used it for a while, I began to become fond of its key bindings so now I'm using sublime with vintageous and just straight up vim if necessary for my development.

Along the way, I've learned unix tool sets, dealt with init system, know how to find and interpret logs in a reasonable manner, figured out where to get help from people if needed, and so forth. The experience from this is invaluable to me when looking at a problem and being able to quickly identify at least where the problem is coming from based on what I've seen in the past.

At the end of the day it all depends on what you're interested in and what problems you have/need to solve. I'm interested in the stuff I've done, so I found it to be a valuable exercise (albeit some headbanging every now and then). If someone is only interested in doing iOS development or Windows development. They might find the things I've fiddled around with to be not useful, and I think they would be right.

Programming is full of bang-your-head-against-the-wall moments, getting good at working through them with unfamiliar tech is an important skill.

Of course, from a professional perspective, you want to minimize how often that happens, but there will be plenty of blind stumbling as your work takes you into less-traveled territory.

This. I learned programming the "bang your head against the wall" way, and I think I'm much better for it. I'm much more familiar with the innards of my tools, operating systems and programming languages as a result, and I'm much better at debugging things and understanding what's going on when I write a certain piece of code. I also have a pretty diverse set of skills. I find that any information you pick up somewhere eventually ends up being useful elsewhere.

But I'm privileged in that I wasn't ever pressured to learn, it wasn't a point where my livelihood depended on it, so that's a factor.

I agree with you so much.

Learning without casting a wide net may means you end up with the kind of tunnel vision that used to lead poor souls to 'learn Dreamweaver', or 'learn Crystal Reports', or ... ASP.NET controls, or something.

This guy ended up with a sense of the tech landscape, and knowledge that will serve him well. In one year!

Honestly, if people copied him and just avoided editor/keyboard silliness, they'd do well.