Quote:
Originally posted by Bloo
Adonis, I'm getting ready to apply for PhD programs in computer science... Coding is easy to me. But I like the science, not the money. I was answering a question.
Also, learning a programming language is not difficult. Once you've learned a paradigm (like Object Oriented), then you just learn the languages as you need them. If you actually waste your time trying to learn an entire language, memorizing functions/methods, memorizing APIs, etc. then you will overwhelm yourself. Instead, focus on learning paradigms and concepts. The languages aren't that important.
|
I wasn't targeting you specifically. Sorry if I seemed that way.
I know many people who know theory but they can't use it to build a real product. At work we just let go of a guy who knows OO Design but couldn't turn it into a useful product and we've turned down a number of people who know the theory but again can't use it in real world projects. The programming language is what you are going to use to build a real product. As a business you need a product. Products will trump theory. Theory is helpful but real world is so different. In many cases you simply don't have the perfect system to work with. Software architects can help you with theory and you will lean that over time. Perfect for today may be all wrong tomorrow.
EDIT:
I agree on trying to memorize everything in a programming language. The issue with both trying memorize design patterns and programming languages is that you get asked these things in interviews that you'll maybe use a few times in your entire life. In many cases things that developers didn't have to know what they expect new incoming developers to know.... What makes these people think they can learn on the job better than someone else who may be imperfect? iMO companies aren't sculpting and enhancing their talent.
Design patterns can box you into predefined solutions that may be better solved with flexibility that design patterns don't always allow for. When experimenting design patterns can be great but they can also complicate things for people who come after you and have to read your code.
Same thing goes with programming languages that you know. You tend to want to use them for everything when they may not be best suited to solve the problem at hand. So in both cases it's a when you have a hammer everything looks like a nail type problem.
Programmers from a CS background tend to over design rather than apply the KISS principle. Programmers from a non CS background tend to not consider design enough. OOD is one paradigm you have Protocol Oriented Design and Functional Programming and OOLO as well.
There is so much more to programming than the language and design paradigm you are taught in school. You have the tooling being able to produce a product with it, being able to work under less than ideal situations and conditions etc... School code is quite a bit different than coding in the real world.