views:

329

answers:

6

This past year I completed college and gotten nowhere in terms of the job search, so meanwhile I have tried to expand my knowledge base as much as possible. All I seem to achieve though is to increasingly understand that I know virtually nothing.

It's an unrealistic goal for anyone to have insight into every facet of development and all languages, but it's also hard with all that information to determine what's significant, and what is a niche understanding that has little practical value.

In short, what are the areas of knowledge that are vital, and what is better relegated to learn-as-you-go?

+2  A: 

All I seem to achieve though is to increasingly understand that I know virtually nothing.

Well, you're already more than halfway there; it takes most people much longer to achieve that insight :-)

But to finish answering your question, I think we'll need to know a bit more: What goal(s) do you have that more knowledge would help you achieve?

Dan Breslau
A: 

I wish I knew more about communication with real people. I'm struggling writing documentation, presenting my work on my homepage, making demonstration videos and not getting in contact with the right people.

Maybe take some courses in communication?

neoneye
+5  A: 

Interesting question. The fact that you have realised that there is far more to learn than you could possibly hope to achieve is a positive insight that I wish others could share. The problem you are facing here, is actually identifying what areas you wish to pursue as a career.

If you're interested in becoming a device driver coder, for instance, then you probably don't want to spend much time researching database programming. Similarly, if you want to develop user interfaces then you possibly would not want to learn assembly programming.

Only you can know what areas you wish to move into, so it's up to you to work out what you want to do - and only then can you figure out what knowledge you will need for that career.

Pete OHanlon
Pretty much what I tried to say in my comment to the question. +1.
strager
+2  A: 

Everything can be learned as you go. The two things I advise people to know are:

  1. What you don't know
  2. How to find out

Basically, be teachable and resourceful.

Specfic technical things really depends what you want to get into.

If you want to get into the desktop programming world, know your C89 inside out, as well as the common libraries on the system you intend to develop for (or, better, know cross-platform libraries).

If you intend to do mostly webdev, know PHP (for templates) and one other server-side language (ruby, python, perl, C, etc).

If you intend to be in design, know design tools (inkscape, the GIMP) and expressions (XHTML, CSS).

As you can imagine, the list of things you might want to do, and hence want to know, is quite endless.

singpolyma
I fully agree with you, particularly regarding #2. I've interviewed many college-hire candidates, and very often I find them lacking a basic idea of how to research or learn on their own. Their time in school working in study groups tended to make them dependent upon others for answers.
bedwyr
+2  A: 

I personally found math is quite useful and powerful.

If you goal is to become a programmer/hacker, which I interpret as giving you the "technological leverage" that no other professions ever come close, then some simply math (matrix algebra, algorithms etc.) can magnify this leverage, not by 2, 3 folds, but by 100, 1000 folds.

Then, it comes down to how you direct your powerful leverage. There are millions of good, technical programmers out there; but how many have the insight to know what to do? Here you need a sense of design and aesthetics --- not just graphics and illustrations --- but more conceptual side of things, abundant in the fields of architecture, science, philosophy and even biographies of your favorite people (for their thinking process).

ivanTheTerrible
A: 

If you follow what your interested in with passion and focus, you can parlay that into a living regardless of what you do. This applies to programming as well as anything else in life.

Think about what it was like to be Linus Torvalds starting the Linux project when Windows already ruled the world. Or, perhaps a more modern example, David Heinemeier Hansson who chose the then-obscure Ruby language to be the foundation of the Rails framework. Both of these individuals took an interest of theirs and then applied a level of focus and enthusiasm to achieve their own ends.

If you have an interest in the Web, choose a language/framework that interests you and master it. If you're passionate about Macs, learn Objective-C and Cocoa. There is a wealth of opportunity out there and even the most niche interest can be rewarding both from an intellectual level as well as from a career perspective.

hyuan