On 12/21/2011 10:07 AM, Joseph Apuzzo wrote:
<snip>
I think that all would are interested in learning are willing to put in
the work.
The question still stands what structure does one need to learn to be
able to use the language to be able to create?
Thus I am talking about "foundation" studying, granted it will be hands
on real programming projects, but like learning a new spoken language
how to lead the student so they can "think" in the new language.

Honestly, unless you are re-enrolling in college, the foundation comes later. Stop getting tripped up by how "language" gets used around programming. You aren't learning to speak french, you are learning to paint. Yes, you can learn a lot of theory up front before you ever put a brush to canvas, but at the end of the day, it's not going to sink in until your computer grinds to a halt because you accidentally loaded 2 GB into an in memory array, reversed it by making a second copy of the array, just to print out 10 entries to the terminal (on a machine with 256 MB of ram... yes I did that, and I remember that epic mistake well from college).

If you want to learn Android programming, and the Java that goes with it, here is how you do it.

1) Buy Hello Android - http://www.amazon.com/gp/product/1934356492?ie=UTF8&tag=seasmenwal-20&linkCode=shr&camp=213733&creative=393177&creativeASIN=1934356492 in dead tree format (it's important).

2) Go through the book page by page. Every time you code to a code example, type it in from the dead tree.

*Do not* get the ebook and copy and paste. I'll say that again, *do not* get the ebook and copy and past, actually type each character of the examples. It's *really* important that every character in every example program in that book goes in your eyes, through your brain, and back out your fingers to eclipse.

3) You'll make mistakes, there will be book typos, that's ok. It's kind of like life.

4) Google based on the errors you get. Try to fix them yourself. Fixing mistakes is the highest impact learning you can do.

5) If you can't make sense of Google, post the code you've got and ask others, someone else will see it. A second set of eyes will often jar you out of a rut, and even the process of you having to explain the problem to someone will make you solve it in your own head.

6) Success!

My last thought is that I feel that even code fixes need to be analysed
with overall architectural impacts or need for change in future or
upstream versions.
I know that I do that in my day job, when we define a "bug" we have a
fix/patch but we always review the impact and half the time re-work the
next version to allow the fix to cover more "cases".

It is way to premature to be talking about things like that when you are talking about starting to program. That's like telling a 2nd grade art class the importance of placement in SOHO galleries and the right timing for an opening show to get the best chance of being written up in the new yorker.

Architecture is important, once you've got a lot of working code. But before that, it's just this - http://www.joelonsoftware.com/articles/fog0000000018.html.

There is a lot of interesting philosophy here around software development techniques, and as with philosophy there are lots of different opinions. I'd say that belongs elsewhere than this list.

If you want to talk software development philosophy, there is actually a good group locally to get into that - http://www.meetup.com/hvprogrammers/. People with a lot of experience in that group, from a lot of different backgrounds. Also, read this - http://steve-yegge.blogspot.com/2008_02_01_archive.html (and if it took you < 20 minutes to read it, start over, because you were skimming, and skimming doesn't count).

Becoming a developer is hard. It is also awesome. To be able to conjure from the ether of your imagination new things that have never existed before and give them life, it's like magic. Because it is. Except it's real.

        -Sean

--

Sean Dague                       Learn about the Universe with the
sean at dague dot net          Mid-Hudson Astronomical Association
http://dague.net                         http://midhudsonastro.org
_______________________________________________
Mid-Hudson Valley Linux Users Group                  http://mhvlug.org
http://mhvlug.org/cgi-bin/mailman/listinfo/mhvlug

Upcoming Meetings (6pm - 8pm)                         MHVLS Auditorium
 Jan 4 - Getting Involved in Open Source
 Feb 1 - Home Networking Made Simple with Amahi Home Server

Reply via email to