Slashdot Mirror


Tips for Independent Learning?

Austin asks: "As an undergraduate seeking a degree in Computer Science, I am very interested in expanding my programming skills and tools. Much of the platform specific knowledge, such as the usage of unique languages and APIs such as .NET and Cocoa, are rarely taught on an academic level, and independent projects are looking very appealing as a way to broaden my abilities. I find it difficult to maintain motivation developing software that there are already excellent alternatives to, and contributing to mainstream open source projects is an intimidating endeavor due to their size and complexity. What have many Slashdot readers done to gain experience with tools not taught inside the classroom?"

5 of 56 comments (clear)

  1. Practical Experience by MyLongNickName · · Score: 3, Interesting

    I find the best way to learn is to have a real life project you are working on. Their are too many people in the world with "paper certifications". That is, they can pass a test, but could not do anything with that knowledge in a practical way.

    I am in the process of studying for certifications. Three tests I was ale to pass with mostly work experience. One, I really needed to study... I found excuses to introduce some of the topics into my work. It helped a lot.

    You, likely, are not working in the industry yet. Find a way to work on a real project. It might be one you dream up. It might be working cheap at a local company. I don't really know enough specifics to advise. I'll just say that dreaming up your own project requires a lot of motivation to continue to work on.

    But bottom line, you need to be applying, or it is just book knowledge.

    --
    See my journal for slashdot ID's by year. Mine created in 2005. http://slashdot.org/journal/289875/slashdot-ids-by-year
  2. me too by bblazer · · Score: 3, Interesting

    I too am an independent learner. Although I have taken several language courses at my local college, I have found them to be limited at best. One thing you might consider is starting a project on sourceforge for something simple. Do you find yourself doing an repetitive tasks that you could write something to automate? Do you have anyone that needs some web development that you could use Ruby on Rails for? There is also TopCoder. They have a lot of coding competitions that you can participate in - many have cash prizes. Although I don't have the links handy, there are also some sites that have student programming project suggestions that you could look at.

    --
    My .bashrc can beat up your .bashrc!
  3. Apprentice yourself by Will+Sargent · · Score: 2, Interesting

    A couple of other people have suggested going to an open source project. I think you should as well. One of the best things that an OSS project will do is show you the true complexity of a working application, as opposed to the theoretical concepts presented in an education.

    You will also learn far more good practices from a well known / respected OSS project than you will in your average organization. I learnt a ton just reading through the Mozilla source code and following how they broke out interfaces and practiced defensive programming.

    Finally, you will have the chance to work with people who need you for something. Programming is very much a team exercise, and you can learn about teamwork as well as programming through the activity. Apprenticing yourself to a senior mentor is a great way to piggyback through your mentor's experience, as long as you have the necessary humility to have your work ripped to shreds...

    Finally, don't sell yourself short. Alan Cox has a story about a random guy who hung out on the Linux IRC channel until someone told him to make himself useful. He ended up writing most of the IPv6 stack.

  4. When you have a hammer... by MBCook · · Score: 4, Interesting
    ... everything looks like a nail.

    I'm sure you've heard that one before, and you need to be careful of it. That said, you found yourself a hammer (your new knowledge of whatever) so start looking for nails.

    I've run into the same problem many times. I understand not wanting to re-implement things (I thought about making an accounting program for a little bit before deciding to just use Quicken, for example). But you need to be creative.

    When I first learned Python I made a simple little game based on one of my favorite games that I used to play on my TI-85. This also let me learn OpenGL. The game was Blocks.

    Trying to do more, I made a simulation (I'd call it a game but it wasn't interactive) called Itty Bitty City which also included more OpenGL. It wasn't too complex but was fun to watch (even if I did have Pie-In-The-Sky ideas about what it would do as usual).

    I never updated my website because it was a hassle. I didn't want to do it in DreamWeaver or something like that. I wanted to automate things. Python was my favorite language at the time, so I wrote a little program I called SiteMaker to do it for me (ironically, that page is quite out of date). Python was rather well suited to that (it was command line, and needed good text processing) so I used it and gained a good knowledge of Python in the process (including the build-in modules you can use to open and send data across FTP connections).

    After that I wanted a program to make it easier to make blog style entries on my website (which would call SiteMaker). I had been wanting to learn Objective-C for use on my Mac so I used that for the project and it was fun, and I learned quite a bit (even if I don't use the program because I didn't add enough features to make it useful). This was SiteBlogger.

    When I wanted to learn Java 5 to get back into it (since it had features that fixed my biggest gripes) I made another simple game (which I took rather far) called Pond Game. I got to use all sorts of stuff in Java and got a good working knowledge (after quite a bit of time off).

    I was still weak in GUIs in Java (have done no Java GUI programming ever) so I used Java to scratch a major itch I had and made Scheduler which I am now updating for a Senior Project. I learned how GUIs were done in Java and got an even deeper understanding of Java from this project. It also fixed my problem of hating to figure out a school schedule.

    I had been wanting to learn PHP, so when a project came up at school to build a system for them (not an assignment, I work there part-time) and they asked me if I wanted to do it, I jumped at the chance to make such a system (which I hadn't done and included a large amount of DB programming) and used PHP (which they were perfectly happy with, and were actually going to suggest).

    There are other little ones here and there. The main point of all this is that most of these didn't bug me enough to make them (Scheduler was the only real problem) but I saw them as opportunities to try out a new language or some such. I've learned to do this because of a problem that I would suffer from which I assume you suffered from: I'm curious and would read about a language or some such but not do anything and thus forget it all. I needed the practice, so I found places to do it. Whether these were things I needed for myself (Scheduler, SiteMaker) or just little games that I wanted to make or to use to try something (Blocks which was an OpenGL test, Itty Bitty Citty which was going to be an AI test).

    My last suggestion would be to enter a programming contest. I've been enterin

    --
    Comment forecast: Bits of genius surrounded by a sea of mediocrity.
  5. Not so much an answer... by Silicon+Jedi · · Score: 2, Interesting
    This is not so much an answer as a semi-related question.

    What should you do when you've gone through school and NOT done what Austin suggests?

    Here is my story:

    I went to school, having no clue what I wanted to do.
    I figured out I LOVED coding, (yeah, doing it since age 7 kinda makes you like it...) and tried to make it my goal.
    I got distracted by a lot of stuff, (Kicked out of house, working min. wage job because I couldn't network to save my life...) kinda fizzled out in the middle of my education.
    I knew how to program, but had no idea how it actually worked in the real world.
    After barely doing enough coding to pass my classes, got two programming jobs that I bombed out of cause I couldn't develop the social or organizational skills to either do the job or get help.
    Working retail like 4 billion hours a week to survive, I squeeze out graduation and barely stay above water for a few years.



    Now I finally recover my wits, (I had some legit mental health issues that are now more resolved.) I am faced with this quandary.

    What next?

    Right now, I finally have a somewhat computery job, doing consumer tech support for a major ISP, but the pay is garbage and there is no mental challenge.

    My resume is a nightmare. I have little definable real-world programming experience, and my coding is rusty to boot.

    Is it possible to break into real programming jobs later on in life? I feel 10 years late for the prom.

    I figure I either need to come up with the plan from hell to make me a paid software developer in two years or I gotta find something else.

    So if anyone has any ideas?

    If there are other IT paths people could suggest I'm interested too.

    (Right now my best solution is trying to go back to school to become a teacher, but I haven't given up on "DO" yet...)