|
I had an excellent question of me already, posed by HeavOnEarth. I invite all questions! I'm going to post my answers inline.
"how much is graphical design ( i've worked with autoCAD and inventor / adobe + bryce ETC )"
This is largely dependent on the type of programming/software you want to get into. Mainly, I have no experience with these types of things, although I do a few touch-ups and such with Adobe. But you can make QUITE a lot of money if you're good at these.
"and how much is physics ( currently taking phys II )"
Again, depends on what you want to do. People who are incredibly good at programming physics models have a lot of things open to them that others may not have - such as working in labs where they do that sort of thing. You have to be VERY good for that, though. On the other hand, game-programming needs people who know physics well, because game engines typically include physics.
"and of course math related ( currently taking Calc BC )"
Math- and physics-related courses are always good for programming. In general, neither specific course will probably automatically land you the programming job of your dreams out of school. For that, you need experience and show a strong work ethic.
"and how much is actual programing , python etc, and javascripting ( no experience whatsoever )"
Actual programming and design experience is very, very powerful and important. We even need people who use older languages such as COBOL and Fortran. (Most math/physics apps are written in Fortran, and many business apps are written in COBOL, and the people who know how to use them are retiring at an incredible rate!) On the other hand, knowing various languages moderately well will undoubtedly be a gigantic chip in your corner, especially right out of school. If you knew how to make, say, a calculator application in Ruby, Python, C#, VB, and C++, you would be a shoe-in for many, many jobs (given that your implementation doesn't suck, of course).
However, if you know one modern language fairly well out of school, you have a leg-up already. What you really need to be able to show a hiring person is that you have the ability to learn quickly and adapt. You should also at least get the basics down of what you're going to be interviewing for. But that's an aside.
In terms of classes that helped me the most, my object-oriented design class in Java helped the most, but to be honest, it didn't help that much at all. The class that helped me the most was the class of hard-knocks. I learned more on the job than any time in school. On the other hand, I learned even more studying in my own free time. I learned quite a lot doing that - studying websites like dotnetrocks.com, dnrtv.com, dimecasts.net, and many others. I intend to link to a bunch of them in a new post so that any new developers can use them. I'll do that sometime later; don't want to clog the blog posts notifier.
|
"Coder" is fairly ambiguous. I might just be rephrasing OP, but whatever.
It could mean "the guy that translates the user's description of what the program does into a language the machine understands." In which case you don't need much more than syntax.
It could mean "the guy that comes up with the algorithms for solving a particular program." In which case you'd probably want some understanding of how the machine works, if you want to optimize for something. And related mathematics.
It could mean "the guy that makes the GUI look perty." Knowledge of design (and a helping of common sense - don't apply everything you heard, or your head will explode with conflicting maxims) will help, but of course you'll need to know the syntax.
|
you can be a visual basic coder
lolololol
|
As a professional, how do you deal with the inevitable (in my case anyway) "but OMG if I abstract this just one more level, think of the possibilities!" and the subsequent torrent of design issues that crop up? This is usually a fast track down the burnout trail for me when I start off on a new project.
Essentially I spend all my time working on a perfect, "elegant" framework that will do all I want and just about inifinity more, and end up burning out before I even start on the application itself.
There are of course exceptions, but I've noticed that any software that actually functions and I end up releasing invariably has awful and unmaintainable code.
So in a nutshell:
1) Do you have - or have you at any point had - trouble with this sort of thing? 2) How did/do you deal with it, and do you still approach a new project with a view to putting it all together in the most elegant way possible? 3) In a professional environment, how often do you have to compromise code integrity to meet a deadline?
|
On August 05 2008 10:56 fonger wrote: As a professional, how do you deal with the inevitable (in my case anyway) "but OMG if I abstract this just one more level, think of the possibilities!" and the subsequent torrent of design issues that crop up? This is usually a fast track down the burnout trail for me when I start off on a new project.
Essentially I spend all my time working on a perfect, "elegant" framework that will do all I want and just about inifinity more, and end up burning out before I even start on the application itself.
There are of course exceptions, but I've noticed that any software that actually functions and I end up releasing invariably has awful and unmaintainable code.
Maybe that can point you into the "right" direction: http://www.joelonsoftware.com/articles/fog0000000018.html
|
On August 05 2008 11:15 0xDEADBEEF wrote:Show nested quote +On August 05 2008 10:56 fonger wrote: As a professional, how do you deal with the inevitable (in my case anyway) "but OMG if I abstract this just one more level, think of the possibilities!" and the subsequent torrent of design issues that crop up? This is usually a fast track down the burnout trail for me when I start off on a new project.
Essentially I spend all my time working on a perfect, "elegant" framework that will do all I want and just about inifinity more, and end up burning out before I even start on the application itself.
There are of course exceptions, but I've noticed that any software that actually functions and I end up releasing invariably has awful and unmaintainable code. Maybe that can point you into the "right" direction: http://www.joelonsoftware.com/articles/fog0000000018.html Hah, nice read :p Unfortunately it seems I'm a failed astronaut with no alternative means of transportation :D
|
I'd like to get into game programming anywhere in the future. Do you have any advice on what should i focus my attention in? Im still in college btw.
Do you have any good book to recommend to me? Do you think reading books of programming help? (because im more of a "teach me" person rather than to read a book by myself). Also, what languages do you think are worthier for this kind of programming?
About general programming, you said it helps tons to be good at graphics. I've always struggled with this. Do you have any advice here as well?
thanks!
|
On August 05 2008 11:15 0xDEADBEEF wrote:Show nested quote +On August 05 2008 10:56 fonger wrote: As a professional, how do you deal with the inevitable (in my case anyway) "but OMG if I abstract this just one more level, think of the possibilities!" and the subsequent torrent of design issues that crop up? This is usually a fast track down the burnout trail for me when I start off on a new project.
Essentially I spend all my time working on a perfect, "elegant" framework that will do all I want and just about inifinity more, and end up burning out before I even start on the application itself.
There are of course exceptions, but I've noticed that any software that actually functions and I end up releasing invariably has awful and unmaintainable code. Maybe that can point you into the "right" direction: http://www.joelonsoftware.com/articles/fog0000000018.html
this hurt my head >.<
|
On August 05 2008 13:05 RtS)Night[Mare wrote: I'd like to get into game programming anywhere in the future. Do you have any advice on what should i focus my attention in? Im still in college btw.
Do you have any good book to recommend to me? Do you think reading books of programming help? (because im more of a "teach me" person rather than to read a book by myself). Also, what languages do you think are worthier for this kind of programming?
About general programming, you said it helps tons to be good at graphics. I've always struggled with this. Do you have any advice here as well?
thanks! Books can never really replace experience, so I would say don't spend too much time on them. Just sit down and make stuff you enjoy, will find useful, or are interested in. The important thing when trying to improve your skill is to program a lot and have a desire to improve, not to try to do everything perfectly or even well the first time.
|
i don't understnad hwat u mean when u say "how much is ___" obviously, were not talking price.
|
On August 05 2008 13:29 tec27 wrote:Show nested quote +On August 05 2008 13:05 RtS)Night[Mare wrote: I'd like to get into game programming anywhere in the future. Do you have any advice on what should i focus my attention in? Im still in college btw.
Do you have any good book to recommend to me? Do you think reading books of programming help? (because im more of a "teach me" person rather than to read a book by myself). Also, what languages do you think are worthier for this kind of programming?
About general programming, you said it helps tons to be good at graphics. I've always struggled with this. Do you have any advice here as well?
thanks! Books can never really replace experience, so I would say don't spend too much time on them. Just sit down and make stuff you enjoy, will find useful, or are interested in. The important thing when trying to improve your skill is to program a lot and have a desire to improve, not to try to do everything perfectly or even well the first time.
I agree with this. Books will have a lot of the theory, but it's a very hollow understanding without the actual programming experience. Also, once you have the experience, the content of the books will also be more meaningful, since you have something to compare to.
|
Umm, sorry, but you're all basically wrong about the books vs experience. In my opinion, anyway. It may be true that books SPECIFICALLY are not as useful, but let me give you an analogy that I just gave my boss, the one who totally sucks at programming, even after 15+ years of experience:
You can draw and count all the rectangles under curves for as long as you want, and even begin to get pretty good at it. But until you learn to integrate, you've never really done calculus.
Most employers want you to be well-studied before getting into your job. Consider the above person who doesn't know how to integrate, but does know how to add things really fast. This person is essentially worthless to a place that needs a mathematician.
I can't seem to find the link to the place that I read it, but at least a few prominent bloggers agree with me on this: It is more important to study and understand than it is to have sheer experience.
Keep in mind, though, that a combination of the two is of course the best, like with almost anything. It would be better to study a book on programming, and do the programming that it suggests while reading it. It is better to follow along during a dnrtv.com session while doing the programming that they're suggesting - to see it working for yourself. It's always better to see it working for yourself.
As for what tec27 wrote, I think that's a terrible idea. Sitting down and making stuff you enjoy does not in any way show you HOW to improve yourself, and that's the major problem that people have these days. They want to improve, but they simply can't because they do not know how. The content of the books is actually quite useful to have before you sit down and start programming, because when a common problem comes up, you will be able to try the correct solution first without having to waste your time and effort on your "very own solution" which is massively incorrect.
I'll answer the other question in a new post. However, crabapple, that person meant, "How much does ____ help in the marketplace" or "how important is ___ to companies" or "how useful is ____ to have for you in your job".
|
On August 05 2008 21:50 Senff wrote:Umm, sorry, but you're all basically wrong about the books vs experience. In my opinion, anyway. It may be true that books SPECIFICALLY are not as useful, but let me give you an analogy that I just gave my boss, the one who totally sucks at programming, even after 15+ years of experience: You can draw and count all the rectangles under curves for as long as you want, and even begin to get pretty good at it. But until you learn to integrate, you've never really done calculus. Most employers want you to be well-studied before getting into your job. Consider the above person who doesn't know how to integrate, but does know how to add things really fast. This person is essentially worthless to a place that needs a mathematician. I can't seem to find the link to the place that I read it, but at least a few prominent bloggers agree with me on this: It is more important to study and understand than it is to have sheer experience. Keep in mind, though, that a combination of the two is of course the best, like with almost anything. It would be better to study a book on programming, and do the programming that it suggests while reading it. It is better to follow along during a dnrtv.com session while doing the programming that they're suggesting - to see it working for yourself. It's always better to see it working for yourself. As for what tec27 wrote, I think that's a terrible idea. Sitting down and making stuff you enjoy does not in any way show you HOW to improve yourself, and that's the major problem that people have these days. They want to improve, but they simply can't because they do not know how. The content of the books is actually quite useful to have before you sit down and start programming, because when a common problem comes up, you will be able to try the correct solution first without having to waste your time and effort on your "very own solution" which is massively incorrect. I'll answer the other question in a new post. However, crabapple, that person meant, "How much does ____ help in the marketplace" or "how important is ___ to companies" or "how useful is ____ to have for you in your job". http://www.codinghorror.com/blog/archives/001160.html
I never said books were useless, merely that experience was more useful. Books are far too often used as a form of mental masturbation, rather than as a tool as they should. Therefore, for any budding programmer, I'd highly recommend they stay away from that trap until they understand where books are useful. You analogy to calculus makes no sense, due to the fact that integration is a fundamental and necessary activity in calculus. In fact, integration could probably be compared to say... compiling in the programming world.
You don't need books to learn advanced concepts. If I sit down and want to make a program, I'll look up whatever advanced concepts I need to in order to get it done. And when I put those into practice on my own terms, with my own ideas and my own thoughts, I gain so much more than I ever would have by reading about it in a book, or even in the best case, doing an example project out of a book.
Programming is not like math. Programming is much more of an art. The hard parts of programming aren't the ones where there are "correct solutions", its the ones where there's no correct solution and its up to you to figure out whats best. And in those cases, everyone will come up with something different. It is for this reason books are not all that useful.
If people are no longer improving when they program, its not exactly hard to figure out how. The answer is: challenge yourself. If you're truly interested in improving, thats all that needs to be done. To say to yourself "I need to read <x> book before I can improve" is just slowing you down. And it is, again, mental masturbation.
I'm not recommending you have arrogance in your own solutions over all others. There are problems in programming and software design that have accepted solutions, and you shouldn't try to reinvent the wheel just for the sake of using your own ideas. But you also don't need to read ten books before starting to program. Heck, you don't even need to read one. Just make things you enjoy, challenge yourself, and have a genuine drive to improve and it will happen.And when you do sit down to read a book, use it like the tool it is, not as a form of mental masturbation.
|
I think the most productive programmers are the ones tec27 described. So many software projects get started and scrapped again soon. If you want to get things done, you need creativity over math, and a passion for programming instead of reading a lot. That doesn't mean that these things are bad, because it can help you a lot in some cases, but you probably shouldn't spend more than 25% of your time on that. Your main attention should simply be getting the program to work, instead of getting it to work "perfectly", because that can be a very time-consuming process which will hurt the project in the long run. Once the project is finished, however, and it's all about maintaining and improving it, then you might want to try to apply advanced techniques often found in books in order to improve it. But the #1 priority should be getting things done. The more theoretical blurb you read, the harder it'll for you to apply that knowledge to the actual code because you lack practice. You'll lose yourself in some rather insignificant details and the result is only a marginal improvement in many cases.
|
One thing about books that I noticed recently, is that they are overlooked or not even considered at all these days. I don't mean to say that theory studies are more important than practice/experience, but when you are in the situation that you need to seek some information/read up on something, for many people the logical solution is to ask 'The Great Google'. Sometimes it can be a lot more efficient to go to the library and grab a book than to spend hours skimming through worthless web pages that don't help at all. Think about it next time you fall into the trap - don't ignore the books when you need some information ;-)
|
My whole point is that if you go based purely on experience, you'll never get anywhere. The analogy succeeds because going purely, "With what you know" is the same as, "Drawing and adding the rectangles" - in other words, if you only go with what you know and don't bother studying, it's very, very rare that you'll get much better, even if you want to. You can want all you want - but it won't get you very far unless you have a plan, and just sitting down and coding is not having a plan. You do not necessarily gain knowledge from experience, and I agree that you don't get experience from knowledge. But having even a little bit of both is far more important than having a lot of experience, or a lot of knowledge alone.
I certainly agree that books are not used correctly these days, though. My point is only that knowledge is at least as important as experience. I, personally, would rate it much higher - a person that knows how to design a program correctly, and is able to elaborate (for example) as to why it was good to use the Command pattern in a specific instance is far, far better than the person whose experience has never shown them what the command pattern even is! I think we can all agree (if you know what the Command pattern is) that for a lot of these patterns for standard solutions, most people won't come up with them on their own, and will certainly not come up with the optimal implementations. That requires knowledge.
And further, a person cannot just sit down with no knowledge and start coding. It's too complex. If you rely purely on experience all the time, you still may not ever come up with anything new - the amount of creativity one has is independent of their knowledge or their experience. The key to having knowledge is that you know that there already is a solution to your problem, so you're able to look it up and do it correctly without having to waste time trying to do your own garbage.
|
|
|
|