

Ask HN: Resources for a self taught developer to "fill the CS gap"? - talkingquickly

I'm a self taught programmer without a computer science background but some development experience both as an in house developer and a freelancer. Recently I've been doing a lot of work in Python (some standalone and some Web stuff with Django) and I'm looking for ways to specialise more in Python/ Django development and particularly to fill any knowledge gaps likely to have crept in through not having a CS background.<p>Has anyone out there been in a similar position and if so what resources have you found valuable to "fill the CS gap" and generally ensure credibility as a developer without a CS background?
======
diminium
If your looking specifically for "CS" then you need to start thinking of the
problem differently than Python/Dijango.

Take a problem and break it down to what you think are it's smallest
components. Now break it down even more beyond what you think and once you get
there, break it down way beyond that.

In your case, since you know Python, the question you must ask next is "how
does the interpreter process my Python code?" In short, learn how the Python
interpreter works. After that, figure out, how the Python interpreter was made
by a compiler and so forth. Inside each of those items are treasure troves of
algorithms, ideas, theory, etc that would fill years of curriculum at a
standard university.

If there's a hard part that you don't understand, don't ignore it or facde it
into an API, study it and see what it does and by the time your done, you'll
probably have enough knowledge to create your own interpreter for your own
computer language.

(Note: This is only one idea. There's many ways to approach this problem.)

------
atarian
I would look at the curriculum of most computer science programs.. you'll see
subjects like discrete mathematics, computational theory, statistics, etc.

I would say however, if you want to specialize more in Python/Django you might
want to look into a software engineering track as computer science tends to be
much more theoretical in nature.

------
glimcat
Do a lot of reading and work on projects which stretch you. This doesn't
depend on whether you have a CS degree - the field is fairly equal-opportunity
that way.

Algo and math is probably where you will be weak compared to someone who
completed a formal CS program. How about adding Skiena's "Algorithm Design
Manual" to your reading list?

------
mastetech
[http://ocw.mit.edu/courses/electrical-engineering-and-
comput...](http://ocw.mit.edu/courses/electrical-engineering-and-computer-
science/)

A broad answer to a broad question... What you will want to investigate
depends on what you are trying to do.

------
talkingquickly
A better title might be "Ask HN: Resources for developers without a computer
science background to fill skill gaps" I can't change it with the Edit option
unfortunately.

