From My book title: Web Design and Programming1 From My book title: Web Design and Programming1 From My book title: Web Design and Programming1
This is an Into. from My book title: Web Design and Programming, I hope you can learn one or two things from it.
This Introduction will not be make by me, I think a reply I found to be very interesting and enlighten by Dr.Kameleon on stackexchange website forum title "How to be a successful programmer without a CS degree" will be best to introduce this book:
I am 26 years old, and thanks to my father (btw, a mathematician and currently working as a professor) I've had the chance from a very early stage of my life to be around computers. (back in 1986 when I was born, though not the most common thing in those days, we always had one or two computers at home). That being said, and - obviously because of my curious and math-inclined / problem-solving oriented nature - it wasn't long before I found myself in love with programming. First with Pascal, at the age of 7-8 and then pretty much everything else just followed.
First, let me say that, while at school, I've always excelled in anything math-related, simply because I liked it, and honestly I could easily follow my father's example and become a mathematician too. But that didn't happen.
What did happen was probably the biggest mistake of my life (so far) : What would you call it when someone in love with code, who speaks 15+ languages and has written thousands of lines of code (from compilers to micro-kernels and web frameworks) by the age of 18, suddenly (the reasons are still too obscure in my mind, but the general, even if subtle, influence of your environment is never too negligible) decides to pursue a career in Medicine? I guess a "mistake".
The result? 5 years later (at 23), and 1 year before finishing my Med degree (still working on personal open-source programming projects as a hobby all the time), I decided I've had enough and decided to quit. And it was not only that I hated this new field (Medicine) so much, but also that there was something unsettling in this whole situation, an insatiable itch hidden deep inside... (what would it have been if...? ) Moreover, I had just realized that my hobby, what I considered great but had not even imagined as a real job, could not only bring some money but bring me lots of it + keep me happy as an individual. So, I decided to quit. (= the best choice, even if a bit late, I've ever made).
So, here I am now, an once-gonna-be-doctor (on-the-verge-of-a-nervous-breakdown psychiatrist to be precise; stupid me!) going for a CS degree (on my 3rd year actually; and, honestly, pursuing it in order not to end up lacking in those dreaded typical qualifications...) and a more-than-happy professional working on something that I adore and definitely the subject on which I have to offer the most.
A few observations (from my own experience)
- Programming is one of the very few fields where the really good ones will always find their way up, no matter what. And this is most definitely NOT a matter of typical qualifications (honestly, if I had a company and wanted to recruit programmers, I can easily tell who's good in a matter of minutes - regardless of whether he even has any degree or not)
- What it takes to be a good programmer is : math-oriented intelligence (but NOT maths itself) and passion (that will make the endless hours of studying a pleasure instead of a burden; and, even if I haven't realized that, trust me i've studied TONS of material on the subject in my life, purely on my own). Formal education is a nice thing, but it's a bit overrated. The core ingredients of success are the first two.
- Maths is definitely where CS was born. But CS is not just maths anymore. I've always had a strong math-oriented brain, but I'm by no means a math guru. And honestly, in every day programming, (unless you're into building a graphics engine or something too localized) you'll most likely never need anything other than simple arithmetic (addition, subtraction, multiplication, division, modulo) and a few things about arrays. (many will disagree with me, probably mathematicians or too academic-oriented programmers, but definitely mastering calculus is NOT what it takes to be a good programmer). Having a good math background will maybe help you, but NOT because of the math itself; it'll help you solely based on one common thing these two field share : problem-solving skills.
- Maths is a science (and a science I respect).
- Programming is an art. (And an applied science as well, if you insist) But keep that in mind : an art - and that's how I've always treated it. And as with all arts, it cannot be taught. I may teach you the formal way of drawing a face and make you better than average but that won't make you neither a Da Vinci, nor a Klimt. Mona Lisas are painted by Da Vincis, and not by carefully educated painters. Great code is written by great code artists. And skill and devotion can easily outbalance formal education.
So, what does it take to become a *really* good programmer?
- Being smart, great problem-solving skills and a passion for the subject (if you don't have it, just leave it; being mediocre is no excuse)
- Lots of time to devote to the subject
- Studying all the time ('coz you'll simply never know it all; and note: why does 'studing' has to be related to some degree? I've always found it far more pleasure doing things on my own pace...)
- Writing code all the time (no matter how many books you have read; your coding level is directly equivalent to the amount of code you've written)
- And again, LOVE for the subject (if you don't love it enough, and I mean really love it, all of the above will sooner or later become unbearable; for me, coding as a job is still like getting paid for... watching movies : absolutely absurd but yet simply great)
Get to know what you want to do, and trust your instinct. Of course, having a solid basic knowledge is a must. But what you'll delve into, it's entirely up to you. Also, plan your career carefully : if you want to be employed, then choose your target and be great at it (e.g. wanting to be employed by Google and not knowing how to read a simple Python script is probably one of those no-go situations). If you're starting something on your own (a company), then you have no "boss" to satisfy; just pick what suits you best.
I, for instance, am now primarily coding in Objective-C / Cocoa. Would I advise you to pursue that? Definitely not. That is : unless you're into Macs or want a career selling Mac/iPhone-related software. If you're into Windows development, going for C# / .NET Framework would probably be your best choice. (if you want to get an idea of what I'm mostly into, just have a look in my StackOverflow Profile)
"What is the best way (over the next two years) to supplement my education to attain those attributes in such a way to match or even surpass the level of a CS undergrad from a top university?"
Study a lot (books, internet, other people's code, whatever) and write as much code as you can.
Ah, and try to get a job in anything code related. (I first started working as a freelancer and it's been a really valuable experience, just to see how things really work in the real world).
Just my .2 friendly cents... :-)
Sidenote : I know that some of my points may seem controversial, and i'm sure that there'll be many who will disagree with me. That's acceptable. But that doesn't change the way I see things - and especially the things i love.
Submitted by: Dr.Kameleon
If you read this intro carefully you will see truly that it really worth using for the introduction of this book.
NOTE: I WILL BE UPLOADING SOME INTERESTING PAGES OF THIS BOOK, ENJOY.
By: Ben Onuorah