Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: What efforts go into a programming project? (Somewhat OT)

by mothra (Hermit)
on Aug 10, 2001 at 20:08 UTC ( [id://103929]=note: print w/replies, xml ) Need Help??


in reply to What efforts go into a programming project? (Somewhat OT)

Well, this is a very philosophical thread...but I like philosophical discussion, so why not? :)

Perhaps the biggest skill you need to have is the ability to solve problems. This is a remarkably domain-agnostic skill, but critical to give you a direction in everything you do as a hacker (after all, in one way or another, all programs solve problems). Conceptual Blockbusting is a great book for helping develop this skill (which, the author points out, not everyone naturally possesses, but most anyone can easily be taught).

Whether it be "Design", "Documentation", "Testing", "Coding", etc. the bottom line is that you have to be able to answer the question:

What problem am I trying to solve?
Percentage estimates of how much of each activity of design, testing, etc. should be done are relatively meaningless because it's fully dependant on what problem you're trying to solve.

By and large, hacking is far more about automating human reasoning than it is about computing, and by extension far more about being able to come up with a solution to a problem than it is about writing Perl code, or Python code, or <insert language here> code.

Replies are listed 'Best First'.
Re: Re: What efforts go into a programming project? (Somewhat OT)
by dragonchild (Archbishop) on Aug 10, 2001 at 21:17 UTC
    To elaborate what I meant by "Research/Design/Thinking", I meant to say that all cogitation about a project, be it on the problem domain, the answer domain, the implementation domain, and/or the testing domain ... all of that should consist of at least 3/4 of a given project's time.

    You cannot build a good set of test suites unless you've thought about how the requirements need to be tested. This includes black and white box testing, as well as other methods. (Bounds testing comes to mind...)

    You cannot build a good implementation without thinking about the ramifications of a given concept. A few things I like to think about would include:

    • Is it easily extended?
    • Is it easily maintained?
    • Is it easily documented?
    • Is it legible? (This is probably the most important, in my mind.)

    And every other domain you can think of falls into this catch-all category. I thought about possibly breaking it down further, but realized that you might have to research a lot of non-programming stuff (like I've been having to do) for one project, but have to research a lot on algorithms in another. Or, you might be spending a lot of time designing the test suite. Maybe the implementation is conceptually easy, but the testing is damnably hard. Or, it could be the other way round, or a mixture of both. Code Complete makes it very clear that what goes into the pre-coding aspect of a project is impossible to determine for all projects. That's why they pay us the big bucks. :)

    ------
    /me wants to be the brightest bulb in the chandelier!

    Vote paco for President!

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://103929]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (4)
As of 2024-03-28 13:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found