Learning on your own or formal training?
-
I find that 90% of the useful knowledge I have came from hours of coding on my own and the community. The other 10% aka my degree just gets me through the door in some cases and allows me to punctuate my documentation. Why go to school, teach the next generation to code? :thumbsup: or :thumbsdown:
I did it the wrong way round: first learning by doing (Self taught followed by 3 years work experience) then going to university. This has shown me that, in my case at least, I would have missed little to nothing by not having formal training. But as you say people just feel safer hiring you if you have some qualification.
-
devvvy wrote:
only in specialized fields you'd need the math/algo
That's BS. You probably don't feel like you could use it because it wasn't taught to you the proper way. The difference between knowing your formal stuff or not knowing it is a difference in app speed, code size, development speed and maintenance cost of maybe one order of magnitude, over the lifetime of an application. If you're not developing one-off, 200 lines of code apps. As for your self-taught thinking skills, I think there's a flaw there: you obviously didn't teach yourself that other people might actually know what they're talking about, and also that there's always some more to learn.
Agreed! Although I learned on my own most of what I actually used in my daily job, college education opened my mind to a lot of things that might exist out there. It also made my mind sharp with the intensive math education. College education also added a great value on fields I don't really use every time but may come in handy at any moment. In the end it turned my world broader and as you also said yourself, there is also some more to learn.
To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson ---- Our heads are round so our thoughts can change direction - Francis Picabia
-
I find that 90% of the useful knowledge I have came from hours of coding on my own and the community. The other 10% aka my degree just gets me through the door in some cases and allows me to punctuate my documentation. Why go to school, teach the next generation to code? :thumbsup: or :thumbsdown:
Getting a formal education is more than learning specific skills - it is also learning the structure and "short hand language" of your field and getting a broad exposure to aspects that may not be applicable to your current interest, but may be useful later. A formal education will also hopefully instill the ability to speak and write in a cogent fashion (with a minimum of "geek") when communicating with non technical people. Would you entrust a project to someone who's proposal is filled with miss-spellings and grammatical errors? I have met a number of smart, self taught people that had no chance of advancement because they lacked the skills needed to communicate with the next level of management or customers. A final argument for checking the formal education box is that most large organisations plus any (large or small) that do government contracting use it as an initial screen. No degree, no job.
-
I find that 90% of the useful knowledge I have came from hours of coding on my own and the community. The other 10% aka my degree just gets me through the door in some cases and allows me to punctuate my documentation. Why go to school, teach the next generation to code? :thumbsup: or :thumbsdown:
(This rant is not directed you more just the general class of people with this opinion. If you are offended then maybe it is directed at you.) You didn't learn anything else in college? You didn't read one great book or have an thought-provoking philosophical discussion? You didn't make great friends who you keep in touch with today? You didn't encounter one professor who pushed you to think beyond what you thought you could do? You didn't nearly cause yourself serious harm with a physics experiment gone awry? You never kissed a girl in a remote section of the library? And in that same library you didn't pick up a random book and learn about architecture even though it is not directly germane to coding? You didn't attend lectures on neural-networks and AI far beyond your own skills just for the experience of it? You never had one sensation of pride when your school's teams won? You didn't have one experience in 4 years that made you consider that going to college is more than just being "trained" to do some task? To me this question is usually asked by those who are in too much debt. It could also be you think of yourself as an autodidact and don't need help from other people. Maybe this is even the case. Perhaps you are the best coder in the world but you sound like a boring jackass.
-
I find that 90% of the useful knowledge I have came from hours of coding on my own and the community. The other 10% aka my degree just gets me through the door in some cases and allows me to punctuate my documentation. Why go to school, teach the next generation to code? :thumbsup: or :thumbsdown:
Programming is just about the only profession in which you can teach yourself, prove your ability and be allowed to practiice. I think there are two reasons for this: Only ability gets the job done. Unlike the people around you, computer logic will not bend to meet your will out of fear or pity. Most software is not life critical and is well disclaimed so there is less risk of expensive lawsuits based on someone taking a key role without formal 'proof' of their competance.
-
I find that 90% of the useful knowledge I have came from hours of coding on my own and the community. The other 10% aka my degree just gets me through the door in some cases and allows me to punctuate my documentation. Why go to school, teach the next generation to code? :thumbsup: or :thumbsdown:
-
IMO it all depends on the teacher. Putting all teachers in the same pot based on the few examples you got to know is IMO not pragmatic. Sort of catch-all exception handling ...
Florin Jurcovici wrote:
Putting all teachers in the same pot based on the few examples you got to know is IMO not pragmatic. Sort of catch-all exception handling ...
However, by definition, most teachers are average. And it also ignores the fact that for every student exposed to an excellent teacher another is exposed to a sub-standard one.
-
Idunno ... there's a saying: "boring code is good code" (not sure if it didn't originate with Joel Spolsky). Thing is, nobody has problems understanding boring code, and since you mostly read code (or javadoc - I prefer code), "creative" code, even if understandable, may be difficult to comprehend, increasing its TCO. Now, with architecture, it's an entirely different story. To be creative when architecting a new app means (for me) finding a basic structure for the application which should allow developing all parts in a highly decoupled way, communicating via a few, well defined and narrow interfaces, so that each part does just one thing and is therefore easily comprehensible - find a project setup which works well for every feature of the application but also makes reading and understanding code easy. While it doesn't sound too creative, it must be something difficult, since I've seen so many applications which lack this basic, central, spinal bone like abstraction, and are just a heap of heterogeneous parts which communicate via ad-hoc interfaces. That's not creative and not useful, that's just bureaucracy applied to software design. And, to get back to the original subject, that's where IMO it makes most sense investing in self-training - IME very few people in academia are really concerned with this issue, so while your formal training might give you strong basic knowledge about algorithms and data structures, IME most CS graduates don't even know who Christopher Alexander was, and using design patterns in a sensible way is something they haven't grasped yet, even if it was thaught to them. OTOH, training yourself in algorithms and data structures, while possible, isn't something I've seen many people do.
Florin Jurcovici wrote:
. OTOH, training yourself in algorithms and data structures, while possible, isn't something I've seen many people do.
Seems like a reasonable view. However how exactly does many hours of literature, sociology, psychology, etc required by universities (US) to graduate help one to understand how a list works? And if universities are actually interested in teaching then why are professors at universities not required to have taken any classes in teaching?
-
I find that 90% of the useful knowledge I have came from hours of coding on my own and the community. The other 10% aka my degree just gets me through the door in some cases and allows me to punctuate my documentation. Why go to school, teach the next generation to code? :thumbsup: or :thumbsdown:
Having taken several programming classes over the past few years, I can safely say that most of my knowledge of programming came from learning on my own. I'm not saying that there is nothing within the formal educational system that is not good, but I cannot see any value in focusing on programming theory in a course that is supposed to be teaching students how to code. I knew how to code before taking the classes and did not learn any of the theories like saying OOPs whenever the program erred out. The JavaScript programming class I took was so focused on the theory of programming, that some of the students were still unable to code by themselves despite passing the class. If you think those colleges are teaching a lot in the field, go ahead and sign up and actually take one of those classes. You might find that the tax dollars going to your local community college or University is quite a bad investment. I don't remember 99% of the theory that I studied in the various programming classes I took. Theory should be brought up as it is being applied in practice, not taught as a key word separately from coding that needs to be remembered. Then again, maybe my inability to remember all that theory is just me getting old. Speaking of theory, does anyone know any good spelling theory? Good thing Firefox tells me when I have a word misspelled.
Truth without love is brutality, and love without truth is hypocrisy. -Warren Wiersbe Tough love is not love, it's an act of war. Scott A. Tovey
-
I find that 90% of the useful knowledge I have came from hours of coding on my own and the community. The other 10% aka my degree just gets me through the door in some cases and allows me to punctuate my documentation. Why go to school, teach the next generation to code? :thumbsup: or :thumbsdown:
It doesn't matter because for most of us is a natural evolution. You start with an organized form of education until a point is reached where you learned how you can organize yourself and by that time you're anyway not satisfied anymore with being pointed in a general direction and you want to study alone on subjects you pick by yourself. That's the system but what matters the most is all in your genes. You're born with certain inclinations: let's say technical ones. Then you'll be either advantageously ar adversely affected in building upon your inclinations by your parents, teachers: in day care, preschool, school, high school, university, randomly by other people's advice, posts, blog entries. They can support or put you down, they can enlighten or leave you in the dark, they can expose you to good patterns of thinking, analyzing ... or they can teach you zilch. What's left, 10-15 years later, it's you. If you're still hungry for learning you'll do it by yourself cause you're fed up with other people putting ideas in your head (though you'll still be yearning for a personal guru you can reach any time, and find that answer right away - otherwise it can mean hours and hours of research on the net). So it's not easy to learn by yourself because there's no curriculum like in schools to organize youre educational path. Plus you may have a job and you have to organize that around the job time (let's not even mention having kids). So, depending on what money you got you'll attend some classes/courses because once you commit and pay you kind of have to follow through(maybe the company pays which is even better). I found and I am more and more inclined to start learning a new techonology by watching videos on the subject, like http://channel9.msdn.com/ [^] has for .Net developers. They are a good introduction and you then can build upon much easier 'cause you have a foundation. I could say more but I think you got a gist of where I am coming from. Cheers.
giuchici (two pigeons): - We shat on your car. Problem?
-
I find that 90% of the useful knowledge I have came from hours of coding on my own and the community. The other 10% aka my degree just gets me through the door in some cases and allows me to punctuate my documentation. Why go to school, teach the next generation to code? :thumbsup: or :thumbsdown:
Sorry to post a dissenting opinion, but formal training is foundational. Unless you want to limit your career to an endless, dreary parade of add/change/delete screens, you need to know the time complexity of a collection of common problems, beginning with searching and sorting, or else you'll go around burdening one code base after another with non-optimal code that doesn't scale. You *can* learn this stuff on your own, but it's pretty dry. I betcha most people who learned on their own never went through a data structures book from end to end and worked out the problems. You only do that if somebody makes you. But like the preverbial awful-tasting medicine, it's good for you. When I was an undergraduate, a Bachelor's Degree consisted of 180 credit hours of instruction, and probably 3x that much practice. And half of that wasn't even computer science. My first year of work was about 2000 hours, and probably 75% of that was practice. The scale tips rather heavily toward experience even if you do get a degree. Nevertheless, those few hours of instruction exposed me to more different areas of computer science than ten years of development. In the 21st century, with worked-out libraries of searches and data structures, some people question the need for all that boring, dry stuff. And as I said before, if all you want to do your whole life is login pages, you can maybe get by. But for many devs, comes the day when you're writing a program that's going to run flat-out on 1000 servers, and even a 2x speedup means not buying an additional 1000 servers. On this day, when you have to custom-code that data structure to squeeze the last cycle of performance, whatcha gonna do? These are the moments that separate the heros from the wannabes; the guys who get the big stock bonuses and the cool assignments from the interchangeable wetware parts. Yeah, you *can* learn that stuff on your own... ...but did you?
-
I find that 90% of the useful knowledge I have came from hours of coding on my own and the community. The other 10% aka my degree just gets me through the door in some cases and allows me to punctuate my documentation. Why go to school, teach the next generation to code? :thumbsup: or :thumbsdown:
I reckon I've learnt most of my development skills (coding and other stuff) from others code - good and bad - and from colleagues.
-
wizardzz wrote:
Which 90% taught you your math skills?
I took his "other" word as either an intentional intent on humor or a misstatement. I have a tendency that when trying for the former I achieve the latter, so I could relate either way. I'd personally go with 5% of my coding skills came directly from schools, 5% personal inspiration, and 90% consuming and integrating things I learned. Continuously reading training material, combined with things I had been taught in school and didn't really understand when I was taught. When you are taught, you don't understand. It takes time for understanding to come to you. When you chase it, it seems to run away. In order to learn from others, they have to teach. Therefore, teaching is critical to reach understanding. Don't need a physical building and class to get that training.
-
Florin Jurcovici wrote:
Putting all teachers in the same pot based on the few examples you got to know is IMO not pragmatic. Sort of catch-all exception handling ...
However, by definition, most teachers are average. And it also ignores the fact that for every student exposed to an excellent teacher another is exposed to a sub-standard one.
-
devvvy wrote:
only in specialized fields you'd need the math/algo
That's BS. You probably don't feel like you could use it because it wasn't taught to you the proper way. The difference between knowing your formal stuff or not knowing it is a difference in app speed, code size, development speed and maintenance cost of maybe one order of magnitude, over the lifetime of an application. If you're not developing one-off, 200 lines of code apps. As for your self-taught thinking skills, I think there's a flaw there: you obviously didn't teach yourself that other people might actually know what they're talking about, and also that there's always some more to learn.
-
devvvy wrote:
only in specialized fields you'd need the math/algo
That's BS. You probably don't feel like you could use it because it wasn't taught to you the proper way. The difference between knowing your formal stuff or not knowing it is a difference in app speed, code size, development speed and maintenance cost of maybe one order of magnitude, over the lifetime of an application. If you're not developing one-off, 200 lines of code apps. As for your self-taught thinking skills, I think there's a flaw there: you obviously didn't teach yourself that other people might actually know what they're talking about, and also that there's always some more to learn.
-
Florin Jurcovici wrote:
Putting all teachers in the same pot based on the few examples you got to know is IMO not pragmatic. Sort of catch-all exception handling ...
However, by definition, most teachers are average. And it also ignores the fact that for every student exposed to an excellent teacher another is exposed to a sub-standard one.
-
Florin Jurcovici wrote:
. OTOH, training yourself in algorithms and data structures, while possible, isn't something I've seen many people do.
Seems like a reasonable view. However how exactly does many hours of literature, sociology, psychology, etc required by universities (US) to graduate help one to understand how a list works? And if universities are actually interested in teaching then why are professors at universities not required to have taken any classes in teaching?
jschell wrote:
And if universities are actually interested in teaching then why are professors at universities not required to have taken any classes in teaching?
you kidding, teachers to teach teachers as if they are not *academic* enough teachers should first be taught by real businesses and industry
dev
-
Sorry to post a dissenting opinion, but formal training is foundational. Unless you want to limit your career to an endless, dreary parade of add/change/delete screens, you need to know the time complexity of a collection of common problems, beginning with searching and sorting, or else you'll go around burdening one code base after another with non-optimal code that doesn't scale. You *can* learn this stuff on your own, but it's pretty dry. I betcha most people who learned on their own never went through a data structures book from end to end and worked out the problems. You only do that if somebody makes you. But like the preverbial awful-tasting medicine, it's good for you. When I was an undergraduate, a Bachelor's Degree consisted of 180 credit hours of instruction, and probably 3x that much practice. And half of that wasn't even computer science. My first year of work was about 2000 hours, and probably 75% of that was practice. The scale tips rather heavily toward experience even if you do get a degree. Nevertheless, those few hours of instruction exposed me to more different areas of computer science than ten years of development. In the 21st century, with worked-out libraries of searches and data structures, some people question the need for all that boring, dry stuff. And as I said before, if all you want to do your whole life is login pages, you can maybe get by. But for many devs, comes the day when you're writing a program that's going to run flat-out on 1000 servers, and even a 2x speedup means not buying an additional 1000 servers. On this day, when you have to custom-code that data structure to squeeze the last cycle of performance, whatcha gonna do? These are the moments that separate the heros from the wannabes; the guys who get the big stock bonuses and the cool assignments from the interchangeable wetware parts. Yeah, you *can* learn that stuff on your own... ...but did you?
SeattleC++ wrote:
But for many devs, comes the day when you're writing a program that's going to run flat-out on 1000 servers, and even a 2x speedup means not buying an additional 1000 servers.
you don't need to know what's np complete or np hard to figure out if you have a performance issue - you just need good common sense. That's exactly where *academics* failed and failed miserably. education is just 90% shit for 90% people - if real estate is a bubble, education is a much larger bubble (Think of the poor guy PhD grad 25 years old graduate find a job to code up website or warehouse apps?)
dev
-
I reckon I've learnt most of my development skills (coding and other stuff) from others code - good and bad - and from colleagues.
i am master degree educated, work in quant finance but i agree with you - i still regret countless hours i wasted in education just to get the right paper so i can be hired by reputable firms to earn a *middle class* income Also, schools didn't teach me how to think or communicate - they lied.
dev