It's interesting that this question implied the negative -- not what's the difference between , not even what are the strengths and weaknesses of , but: > What pieces of the whole are missing? The implication being that without a formal CS education, it is an impossibility to obtain a whole. As if whole matters; how does one obtain whole , anyway? This is a very loaded question and perspective that betrays a serious…
Read Knuth's Concrete Mathematics, do all the exercises you can, but this time this is not a requirement.
Forget about Java related design patterns.
Now you know more about programming and CS than 99% of population. Problem solved.