Hacker News new | past | comments | ask | show | jobs | submit login

When it comes to the computing field, there is a core to it: what is computation. What it means to have a programmable machine: and algorithms and all that jazz. The pragmatics of it: how do we design, develop, test deploy. The hardware: what computing architectures do we have and what are their strengths and limitations.

On the opposite end, there are specialized applications, and in between there are application areas with specialized tools, infrastructure, software components and whatnot.

You're simply not going to be an expert in every application area. Realize that, and stop trying!

Buckle down and specialize. Be an expert in some subset of the abstract core, and its realization in some choice of platforms and tools that you follow, and beyond that, pick just a few application areas. Have a main area or two, and then some fringe areas that you are interested in that are little bit on the side.

You can switch application areas in mid-career. Being good in one application area is better for being able to dive into another than just knowing a smattering about many areas without any expertise.

Going far and deep in any application area as a developer will give you the skills to be able to work on almost anything.

Any code base in any application area has lots of code that is not specifically in that are which needs general expertise and experience; you can make meaningful contributions to those areas almost from the get go.

In my university time, I was crazy into OS programming: systems programming on Unix, and kernel level. I was also crazy into computer graphics. Alain Fournier (RIP, cancer) tried to award me 110% in CS414 at UBC, but he reported that the antiquated mainframe wouldn't take the value. Compilers and languages interested me, but not as much as today. I used Lex and Yacc regularly, and in one contract project I created a billing system with a custom query language. I had an interest in implementing data structures as well.

There were things I was not into, like for instance databases or anything having to do with AI, or programming language semantics (other than taking one compiler construction course, for which I lacked prerequisites); when some buddies started on about what they were doing with, say, Prolog, I didn't follow that. I was impressed, but my plate was full of my current interests to be actually distracted and derailed. I had this intuition that life is long, and there will be plenty of time to get into other things, and that as long as you're constantly learning, you're preparing yourself for the stuff you don't yet know.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: