[Edu-sig] Migrating to Projects - Was: Low Enrollments - programming as anti-intellectualism

David Handy david at handysoftware.com
Fri Nov 4 21:12:06 CET 2005


On Fri, Nov 04, 2005 at 12:31:03PM -0700, Trent Oliphant wrote:
> Toby Donaldson wrote:
> > 
> > One thing CS departments could do is offer service-oriented software
> > engineering courses. It's clear that many people nowadays learn to
> > program on their own, and run into well-known difficulties once their
> > programs get too big. Those people would probably appreciate and
> > benefit from a software engineering course, especially if was
> > platform/lanuage neutral.
> 
> This brings up an interesting discussion point, one in which I would be 
> extremely interested personally:  How do you help students (or yourself) move 
> from writing scripts, functions, classes, modules etc. to writing a larger 
> project.  I am actually at that stage right now in my personal learning curve. 
> That curve seems extremely steep.

[snip]

> Is that part of the reason for the perception that Python is not
> approriate for large scale projects - because there are no tools that make
> the job realistic? 

No, that's not the usual reason people give. The main reason that people
who've never tried Python give for assuming that it's not appropriate for
"large scale projects" is its dynamic typing. Sometimes they also assume
that Python execution speed is "too slow".

[snip]

> I know it may seem that I am talking about an IDE - but even those (at
> least the ones available for Python that I have seen) assume that you
> already know how to do a project.  So I get overwhelmed.  I want them to
> work for me - but they just haven't yet.

[snip]

> ... but I don't even know where to start and there appears to be nothing
> out there to help me learn that.
> 
> Trent Oliphant

You do not need another tool nor another IDE in order to "move up" from
writing scripts to creating a larger project. What you need are knowledge,
experience, and good methodology.

The reason there is no book or manual on how to make this transition is that
it strongly depends on what type of project you want to do. Plus it is like
riding a bicycle. There is only so much a manual can do for you. But here's
the good news: there are plenty of resources, plenty of help out there for
you.

I offer these sincere suggestions:

1. Figure out what you are trying to do. What lights your fire? Come up with
concrete goals and write them down in your project notebook.

2. Find an existing Python open-source project that in some way resembles
what you want to do.

3. Figure out how that project works. Read its source code and trace
through it. Hack it, change it, put print statements all over just to show
you were there. Diagram its packages and modules. Figure out how it is
installed and configured, and how it accesses data.

4. Now work on your own project, following the model of the one you
reverse-engineered.

5. As you find out that things aren't working for you, change your approach,
or find a different model to follow. Write down your lessons learned, then
move on. Don't be afraid to throw away code and start over. If you can't
stand to delete something you have worked so hard on, move it to some other
directory where you can keep it and cherish it forever (but move on!)

6. As you find that you have bitten off more than you can chew, narrow the
scope of your project. Do something less ambitious, but do something.

7. Gather your fan club -- any victim or captive audience to whom you can
show off your work. In the case of the StarSim game I am writing, my sons
are willing enough to "test" it for me. And the local Zope/Python users
group has been kind enough to let me show my work in progress a couple of
times.

8. Have fun or get paid for it, or both. If it doesn't do at least one of
those two things (generate enjoyment or cash) do something different.

Good luck! If you've got time to work on a project but don't know how to
begin, then you're a lot better off than I am, regardless of how much I
think I know... :)

--
David Handy
Computer Programming is Fun!
Beginning Computer Programming with Python
http://www.handysoftware.com/cpif/


More information about the Edu-sig mailing list