• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

self-taught programming != mission impossible?

 
Ranch Hand
Posts: 32
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
To make things short I would like to hear your opinions/experience is this really possible? Learning programming is not an easy task, as there so many different concepts to learn, design patterns, syntax, API's, testing, debugging and so on . Somebody has given a link to this site which has shed some light on this subject, and I'm thinking it truly takes ten years to master programming (in any language). But the question is, is that can you do it all by yourself? without any guidance or assistance? Sure, if you are enthusiastic and feel confident in yourself, why not?. But sometimes I see that there is so much information that is difficult to grasp without any help. I work on a very comfortable job, I work early hours in the morning and finish my job by the afternoon, so I can say, that I have much free time. But the problem is, is that I don't have any control over my time or any sort of management how I learn things. As many of of you might guessed I'm learning java, so one day I'm, learning howto use JDBC, then i'm tempting to learn AWT basics, then again i'm interested how networking works in java. I always found learning syntax and various API's easy, this is just how technology works, but I see that I have missed so much information like: data structures and algorithms, set theory, boolean logic and so on. Heck, I didn't even who Boole was. I like what i'm learning, but books alone can't help you out? Or can they? I know, many of you may provide a simple answer: just go to college/tech/university whatever, but unfortunately I cannot afford that right now, and I don't want to risk taking any student loans (especially in my country).

So any self-learners out there?
 
Ranch Hand
Posts: 859
IBM DB2 Chrome Java
  • Likes 2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Oh yes..

I built a Sinclair ZX-80 from a kit. Built a "hi-res" graphics card for a ZX-81.

Taught myself since since there were no formal resources, then went to university for one of the first "Computer Science" degrees offered.

Read, play, prototype.. Don't focus on patterns or whatever, simply go the flow. You will learn so much more that way.

WP
 
Saloon Keeper
Posts: 15510
363
  • Likes 2
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Not completely, but I like to think I learned a lot before I went to university and started frequenting CodeRanch.

Most of what I know now comes from searching the internet if I have a question about something. Searching for answers to questions leads to more questions in the fields you're interested in, and is very educational. I also recommend practicing a lot. When someone else is facing an interesting problem, see if you can solve it for yourself. Set challenges for yourself.

If you become interested in certain areas and wish to know about them more in-depth, then I suggest getting books about them. There's not much use in getting books if you're not interested in how things work on a more detailed level, because you'll put them away after reading the first two pages.

For Java, a book I can *strongly* recommend is Joshua Bloch's Effective Java. Very interesting, helpful, and written in an accessible and sometimes entertaining way. I also recommend looking at other languages. Knowing multiple languages makes you appreciate the different features that different languages provide. I started out with Pascal, and it made me realize how awesome Java's object orientation was. C taught me how awesome Java's garbage collector was. Java in turn taught me how awesome high-order functions are, in languages such as Haskell.

And remember you're not without guidance. You can always ask questions at CodeRanch.
 
Rancher
Posts: 4803
7
Mac OS X VI Editor Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
You can learn it all yourself, but its much easier if you are working with others. Find a hacker space, or create one. http://hackerspaces.org/wiki/ Nearly all hackerspaces
have (1) classes and (2) other interested folks

The new Raspberry PI is aimed at bringing low cost technology education. http://en.wikipedia.org/wiki/Raspberry_Pi

 
Pat Farrell
Rancher
Posts: 4803
7
Mac OS X VI Editor Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Stephan van Hulst wrote: I also recommend looking at other languages.


+1

I believe you can't understand this stuff until you are on your third or fourth language. And the languages have to be non-close, C and Java are too close.
Java and then Perl then Haskell or Lisp or ....
 
Ranch Hand
Posts: 2108
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I couldnt afford it so I just borrowed books from the library (great national library here in Singapore; contains a lot of IT books). From zero on java to scea (enterprise architect), I learned by myself.

Thanks for Head First Series, Kathy Sierra books, Bert Bates, Monson Haefel's web services book, etc. I learned all by myself: java core, ejb 2, ejb 3, jsp servlets, jpa, web services. And I took certifications to measure myself. I am able to use what I learned at work.
 
Waldemar Macijewski
Ranch Hand
Posts: 32
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thank you for wise words.

Stephan van Hulst wrote:
If you become interested in certain areas and wish to know about them more in-depth, then I suggest getting books about them. There's not much use in getting books if you're not interested in how things work on a more detailed level, because you'll put them away after reading the first two pages.



Exactly my thought I have "Java Complete Reference Eight Edition", not that it's a bad book but it feels more like a manual when reading it. When I got to Collections Framework chapter, I read it, and yet I had no idea what data structures was. It felt sort of absurd, because I knew how to use the API, and still didn't know what binary tree/linked list/hashtable was. On the other note, I do agree that it's much more easier to learn with somebody, but none of the people I know are interested in this stuff, sure it's nice to have forums like this and talk to people online, but I wish I had some "real" people for a change.
 
Pat Farrell
Rancher
Posts: 4803
7
Mac OS X VI Editor Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Your "binary tree/linked list/hashtable" are typically covered in a sophomore level Computer Science course, after the student has the basics of one or two languages down. Sometimes its even delayed until third year.

Google is your friend here, and Wikipedia has fairly good descriptions of these structures.
 
Stephan van Hulst
Saloon Keeper
Posts: 15510
363
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
You'll always run into more questions. Once you run into something you don't understand, first look it up on the internet to get a broad idea of what it means. For instance, you can go on the internet to find out that a hash table can locate data very quickly based on a code calculated from its properties. You can read that linked lists are simply nodes that contain data, and also refer to the next node, like a daisy chain.

Getting a global idea of what something is, is often enough to make sense of what you're reading about them. If you find that you are getting interested in how these things work on the inside, then you can read a more detailed explanation about them, or even get a book on algorithms, data-structures and complexity.
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic