[nycphp-talk] Learning to program the right way
Federico Ulfo
rainelemental at gmail.com
Mon Jan 23 13:50:21 EST 2012
Everybody wants to see fast results, and starting with Hello World is
always the best way. Also starting from the basics is good because once you
master the logic of OOP and procedural programming you can move from one
language to another.
About Git and Unit, I agree partially, if you decide to go into the PHP
world is good to know them from the beginning, may be soon after Hello
World!
On Mon, Jan 23, 2012 at 1:31 PM, leam hall <leamhall at gmail.com> wrote:
> Gary,
>
> Part of me thinks this is a great idea. Another part of me thinks
> you're thinking inside the box. Why not have a "How to really program"
> class where you introduce these topics, functional and OOP, MVC, go
> over the basics of a few languages, and stuff like that?
>
> I would have loved something like that. Heck, I still would! Have you
> read Zed Shaw's "How to program python the hard way"?
>
> Leam
>
> On 1/23/12, Gary Mort <garyamort at gmail.com> wrote:
> > One thing that has annoyed me more and more over time is the way books
> > and classes go about teaching /how/ to program in a language.
> >
> > They all start off with "Hello World" and then progress slowly form
> > there to more and more complicated things. I've noticed that even Ruby
> > books, the poster child for unit testing, proceed in this manner.
> >
> > In short, they wait until /after/ someone has developed bad habits and
> > then introduce version control and unit testing as an afterthought.
> >
> > It seems to me that the /correct/ way to teach programming is to start
> > with a little version control, then do a little unit testing, and then
> > proceed to the coding. Especially useful is to structure the course so
> > that the users experience just /why/ version control and unit tests are
> > a good thing.
> >
> > As such, I'm going to try to put together a course on learning to
> > program PHP the right way.
> >
> > It starts off with learning a minimal number of git commands[you don't
> > need to know them all, and there is no reason to confuse yourself at
> > this point! All you need are "git clone...", "git commit...", and "git
> > push..." while not necessary is a nice to have. This unit will include
> > cloning an existing code repository on github, making a change, and
> > commiting your change.
> >
> > The code should include a class or two /and/ some incomplete unit tests
> > for said class.
> >
> > The next step is learning some basic unit test commands, run the unit
> > tests on the code to see them working, demonstration of how to run the
> > checks so you can see what methods are not currently covered by unit
> tests.
> >
> > Unit tests are fairly trivial bits of code, so the first introduction to
> > coding will be to add the missing unit tests. Verify the addition.
> > Commit the changes.
> >
> > After that, we can do the traditional "hello world" app....the RIGHT
> > way, ie make a unit test for it, then implement it. Verify the new
> > code. Commit the changes.
> >
> > Next up will be making some major functional changes to the code,
> > extending it, expanding it, etc. At this point, we should be doing some
> > fairly radical, but simple, changes to the code where we will be
> > deleting entire sets of logic and replacing them with new sets -
> > including changing the unit tests first! Verify the new code. Commit
> > the changes.
> >
> > Following all these changes, we will now have to undo some of the
> > modifications and use the original code.... so a quick review now of
> > how to use git to browse through previous commits, review differences in
> > code, etc. And of course, as always start with unit tests, verify the
> > changes, commit the changes.
> >
> >
> > As you can see from the above, this also explains /why/ programming
> > books suck so much. It's a lot of extra verbage to go step by step
> > through the testing/commit process - and programmers are by nature
> > lazy! So they skip it.
> >
> > I'm curious if there are any other items people think should be
> > incorporated into this tutorial.
> > _______________________________________________
> > New York PHP User Group Community Talk Mailing List
> > http://lists.nyphp.org/mailman/listinfo/talk
> >
> > http://www.nyphp.org/show-participation
> >
>
>
> --
> Mind on a Mission <http://leamhall.blogspot.com/>
> _______________________________________________
> New York PHP User Group Community Talk Mailing List
> http://lists.nyphp.org/mailman/listinfo/talk
>
> http://www.nyphp.org/show-participation
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nyphp.org/pipermail/talk/attachments/20120123/ea9488c1/attachment.html>
More information about the talk
mailing list