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