Web Hosting Talk







View Full Version : Impossible to master php?


lexington
07-17-2007, 04:33 AM
For the past six years I have read a lot of php books and visited php sites but I still cannot grasp how to create a complex php script. I know all of the basics and can fix errors, but as far as coming up with a unique idea and creating a script that would work is impossible. I am considered to be a smart person by those who know me but for the first time in my life it seems as if this is a challenge that I cannot win. I tried to depend on paying developers but I believe there is no way to find a developer who is dependable for the long term. It is as if devs do not like money and rather go out and party.

The thing about php that has me stumped is that no book or tutorial says "if you want to do this, then use these commands". It basically just shows "preg_grep — Return array entries that match the pattern"

Ok, that was an easy example, but it doesn't tell you "if you want to create an automated shopping cart do this..." Every tutorial is like a dictionary. I can memorize all of the functions, but when I sit down and look at a blank white page and say "ok, I want to create such and such script" I have no idea where to start. I tried many hours without giving up and the worst thing is when there are no errors and the code looks correct but the script doesn't work. Then I ask or pay a developer and they take five seconds and use some unheard of command that I couldn't find on the internet to do the task.

I would very much love to create my own scripts so I won't have to get stressed out over developers who do not like money and are bs'ers, and I have created simple scripts in the past but the complex scripts are way out of my league. Plus when I search Google for a similar script or function I come across a billion entries that have nothing to do with what I am trying to accomplish. It really sucks when I come across posts from users with my exact problem and noone can help them either.

feedsfarm
07-17-2007, 05:57 AM
Maybe you should stick to making porn?

The issue here seems to be planning and maybe a general lack of knowledge in generalised programming theory.

Get a good general programming book.

tsj5j
07-17-2007, 06:25 AM
My problem is that I totally suck at CSS.
I'll have to use an existing site design and "pull" my code over it.

Mxhub
07-17-2007, 06:52 AM
HUH? i don't think it is impossible. It depend on whether you want to master. Most of the time, people are just lazy to search and learn.

azizny
07-17-2007, 07:31 AM
Two things: First you will need to understand how a language works and handles things. Second, you will need to practice making small scripts (user login, contact form, etc..).

Reading only will not help.

Peace,

lexington
07-17-2007, 07:40 AM
I have created contact forms and user logins those are easy. However, let's say I want to make a script count up and display and cache the top doner of the previous month and give that person a special item. I have no idea how to do that and there is nothing in books or the internet to explain how to do it. It isn't like I can search google for "display top member of the previous month in php" and find out how to do it.

Azavia
07-17-2007, 07:47 AM
Programming is not like a step 1, 2, 3 and get this result. It's more like, well I think of it as similar to math in one regard. Sometimes you have several different ways you can go about solving a problem, and you just have to rely on your experience to go about it in the easiest and best way.

You have to plan a bit. Let's say you're making a user authentication system.

What does such a system need? Users must be able to login. OK, so you make a form. Now something must process the form so you make the code to do that.

Then something has to recognize that the user is logged in on the various pages. So you write something to check that.

A user must be able to logout, so you make a page for that that destroys the session.

of course there are many ways to do each of these things, but all around it is pretty simple.

Or, if you learn object oriented programming you can think of it all like objects and just tie together their interaction.

It's a challenge to find the best way, but if you run into a wall, you refactor and try again.

You might be interested in unit testing, specifically writing the tests before you even write the code. You know what you need, so you write the tests to verify that the code is doing the correct thing, even before writing the code. Then once you have the tests in place you write the simplest code required to pass the tests.

Azavia
07-17-2007, 07:50 AM
I have created contact forms and user logins those are easy. However, let's say I want to make a script count up and display and cache the top doner of the previous month and give that person a special item. I have no idea how to do that and there is nothing in books or the internet to explain how to do it. It isn't like I can search google for "display top member of the previous month in php" and find out how to do it.

Hmm, maybe not, but if you learn the syntax of SQL you should be able to extract any information you want, given your database is normalized sufficiently.

gophp
07-17-2007, 09:06 AM
If I can't understand some concepts I just say that frankly. Why to blame the technology? You should probably be good at doing some other tasks. Why not to concentrate on them? And try to find better folks that will do the tech things for you?

sharednick
07-17-2007, 09:52 AM
Php is an easy language to learn... however you need to learn the basics php.net and google are your best friends. And there is a lot of sites with tutorial that shows how to do some basic stuff with various command. It is only a matter to search. Being doing php for a couple of years and im still learning it every day. You must be ready and have a love to learn to be able to code in a good way. You cannot be an expert at something you do not enjoy.

mwatkins
07-17-2007, 12:37 PM
I think the OP's issue is on two fronts.

One is how to break down a seemingly complex requirement into logical pieces.


1. get data
2. cache result
3. award prize
select prize
notify winner
publicize (display a html widget on your page(s))


1. Get data

SELECT total, person_id, p.first_name, p.last_name
FROM
(SELECT sum(amount) as total, person_id
FROM transaction t group by person_id) as TEMP,
person p
WHERE TEMP.person_id = p.id
ORDER BY total DESC LIMIT 1;

You'd have to add the date range in there of course too but that is trivial.

def get_top_donor(year, month):
# execute sql
return result

2. cache it. In Python, particularly for a persistent Python web-application (such as a Django, TurboGears or QP/Quixote web app) this is simple - either use a decorator designed for the purpose:

@memoize()
def get_top_donor(year, month):
# execute sql
return result

Or if the data is small (as it is in this case) you could just shove it into a variable that remains alive between requests.

PHP is a big system. Too big. By default its "namespace" includes all sorts of junk which you need to navigate.

3/4/5. Award Prize / notify recipient / update site

def assign_prize(recipient, year, month):
prize = random_choice(prizelist)
award = add_award(recipient, year, month, prize.id)
# insert (recipient.person_id, prize.id, year, month) into awards;
notify_recipient(recipient,
("You won this month's top donor prize! "
"Your %s will be mailed to you shortly!" % award.prize.name))
generate_monthly_award_html(award)


At any rate, what you'd like to do isn't all that big a task, even in PHP, although I have empathy for new programmers who are new to PHP because it is a big, complex, and inconsistent language and system. Even a fan of the language ought to recognize that, but many of the vocal fans haven't used any other language and have little to compare it to.

For example, PHP, depending on whether you are dealing with PHP5 or not) has 66 keywords. As a contrast, Python has 29.

PHP has no concept of namespaces. It further pollutes its one name space with predefined variables, innumerable functions (the extent of which depends on how you compile it), and so on. This means quite literally hundreds and hundreds of keywords, statements, functions to sift through, all of them competing for the same namespace as your application.

Conceptually simple enough, PHP throws a ton of mud at the wall and hopefully some of it sticks.

But the real problem with PHP is that it isn't a general purpose application programming language.

It is instead a "web application framework", only not a very good nor very complete framework. It becomes more complex than it needs to be by shoving all this junk ("predefined variables" aka _POST, etc) into its one namespace. It makes a bunch of decisions for you and you have little say in the matter. As has been discussed in a recent thread here, some of the challenge for any one coming to PHP is deciding what function to use for a particular operation. Reading a bunch of words from a file could be done using several completely different PHP functions. Its a lot for some folks to remember.

Perhaps the OP might consent to trying an experiment.

Try out Python and one Python web framework - Django. I pick Django not because I use it but because it has the largest community around it, a ton of mind-share, and many non-programmers report being able to understand it and become productive.

Install it on your local machine and play with it for a week, and report back whether you find the experience to be positive or not.

What have you got to lose except one week? By the OP's own admission, getting past simple hacks in PHP has proven difficult for a number of years - so one week time investment in another language and a decent web framework might really pay off.

http://www.djangoproject.com/documentation/install/

http://www.djangoproject.com/documentation/tutorial01/

lexington
07-17-2007, 01:22 PM
If I can't understand some concepts I just say that frankly. Why to blame the technology? You should probably be good at doing some other tasks. Why not to concentrate on them? And try to find better folks that will do the tech things for you?

Because as I have said in my original post I love my internet job that requires programming from time to time but I cannot find a reliable developer. If I ask to seek for a new dev they would want login access to everything up front and will say that they will begin working within a day or so but a month later they are still making excuses. It must have been a miracle that I found my dev team from years ago but now they are making excuses as well. Even though I want to pay them $500 or so for a simple script they decline.

dexxtreme
07-17-2007, 01:42 PM
Programming is somewhat similar to chess. There are only a set number of pieces and moves (i.e., functions). However, just knowing all of the moves (i.e., PHP functions) will not guarantee to make you a chess master (i.e., PHP guru). You have to know how to look at the bigger picture, and understand how to break big problems down into smaller, more manageable chunks.

Let's take your earlier idea:

I have created contact forms and user logins those are easy. However, let's say I want to make a script count up and display and cache the top doner of the previous month and give that person a special item. I have no idea how to do that and there is nothing in books or the internet to explain how to do it. It isn't like I can search google for "display top member of the previous month in php" and find out how to do it.

You have to:

*) Determine what the date range of the previous month actually is (either the last 30 days or the previous calendar month)

*) Use the date range from the previous step to pull the previous month's data (usually using some SQL queries)

*) Find the ID of the highest donor in the data you just pulled (sort the query results, or just combine this in the previous step)

*) Find all of the user information for the ID you just pulled (another SQL query)

*) Send that person whatever prize you promised them (display all of your results in your browser depending on how you want them to look)

You will also need to break down each of the above steps into manageable chunks. Eventually the steps will get broken down far enough that they start resembling existing PHP functions.

Jatinder
07-17-2007, 01:52 PM
It is as if devs do not like money and rather go out and party.

It must have been a miracle that I found my dev team from years ago but now they are making excuses as well. Even though I want to pay them $500 or so for a simple script they decline.

Well, I think there are two possibilities here:

1. All PHP devs in the world have decide en masse to not work for you. :)

2. You are not communicating effectively with your dev team.

Czaries
07-17-2007, 03:49 PM
It is as if devs do not like money and rather go out and party.
It must have been a miracle that I found my dev team from years ago but now they are making excuses as well. Even though I want to pay them $500 or so for a simple script they decline.

As a freelancer myself, I can relate to this, and have often turned down good-paying jobs as well. You see, most php programmers out there are either:
(1) pre-teen and teenagers
(2) college students, or
(3) working a full/part-time job somewhere else

Almost no one will take the risk of freelancing full-time. It's not really a matter of money - it's more a matter of time management. Of those in category (1), they will be flaky by nature, because they are adolescents - they just might value hanging out with friends over money. In category (2) and (3), time is more the issue. Of those in category (3), it can also be burnout. Their daytime job is likely to be programming as well, so when they do programming all day and then come home to freelance programming jobs, it gets old really fast.

It also may be the case of the work not actually being that simple to program, and the hiring person simply does not understand the underlying complexity.

My point in all of this is - php has a VERY low learning curve. It's both a weakness and a strength. It happens to be a bad weakness when it comes to reliable programmers, because most of them out there who are freelancing fall in category (1).

Engelmacher
07-17-2007, 04:36 PM
Would you expect to be able to recreate the complete works of Michelangelo just because you spent some time learning how to hold a chisel? Skill is virtually useless without talent, and both are absolutely useless without practice. I have a feeling web development is simply not a career you should pursue.

sasha
07-17-2007, 07:30 PM
.... Even though I want to pay them $500 or so for a simple script they decline.

When client asks for anything simple I tend to decline it. If it is simple - do it yourself. In the past when someone asked for simple that meant they thought they know more then they did, they interfered with development process and expected us to make things that were not quoted or even mentioned before work started. I still have loads of emails from one such client that all go like "That is great. Can you just fix one simple thing..." and it goes from there. Note how such client tends to refer to additional work as small fixes.

mwatkins
07-17-2007, 09:11 PM
Some "projects" can be simple, provided the right infrastructure is already in place. I tell my clients that if they invest in putting proper "plumbing" in place, the benefits to them in the long run will be significant. Changing a faucet isn't a big job; adding a faucet when the house isn't plumbed is. Some get it. Some don't. I fire the clients that don't.

Burhan
07-18-2007, 03:19 AM
mwatkins: I guess you won't ever stop with the whole Python-in-every-php-thread bit ;) but I don't mind :) Maybe I can catch you online if I am having trouble taming the snake? :)

To the OP:

Mastering the language is one thing, mastering the art of programming is something else entirely. Anyone, with some concentration and time, can "master" the PHP manual, it is just some functions and what they do (true for any other language. If you really wanted to, you could learn any language and its syntax and functions). You only need a subset of that manual to perform 99% of the programming tasks asked of PHP programmers. Once you have mastered a programming language, this makes you an operator (or "scripter"); however, it doesn't make you a developer.

Difference? It is the same as someone that knows how to use Photoshop (by reading tons of books, they know what each tool does, what layers apply to what filters, etc.) but they cannot create a design from scratch. To tell them to create something, someone has to say "Okay, make a red circle, apply this filter, crop this much, add a new layer, apply this affect" -- and they can do it, but they couldn't sit there and come up with an idea and create it.

This ability to create something form scratch, comes in part from experience; but mostly it is the ability to look at things from a higher, more abstract level. Take the programming language out of the equation and think how would you solve the problem in logical steps -- this would form the basis of your algorithm (which is really what programming is all about; impelementations of algorithms). Skills such as critical thinking and problem solving are not going to be honed with your face burried in stacks of books explaining syntax and function signatures.

Of course, the positive side of this is -- once you attain these critical thinking and problem solving skills, then you are not limited to the language currently at hand, you can spend a few days to learn any new language, and apply these skills to that language and be productive.

Example -- someone that knows the basics behind the client server computing model, how http works, the nature of http and the fact that it is stateless; database theory & design (concepts like normalization and atomicity of data) can use any webdevelopment language to create web applications (and be very good at it).

Notice, there is no mention of any programming language in the above; just concepts. Progamming languages are just tools that one can use to create a solution; they are not the solution -- you must know how to solve the problem before you even start development.

Hopefully, the above made some sense :)

siforek
07-18-2007, 06:23 AM
Whenever I sit down to start a large/complex script/software I always map out everything on paper first. I mean, I don't write commands and code, but I will sometimes draw up database tables and coordinate things for the most part before I crack on the keyboard. It works for me, not sure about others. We've all got out own techniques.

AS far as finding similar scripts and stuff by search, that's another thing to master. How you phase searches and such.

Azavia
07-18-2007, 07:12 AM
fyrestrtr, that's an excellent description.

firevps, well now that we're getting into planning, I'll have to throw in a recommendation for CRC cards. They can really help a lot especially in the beginning of a project.

To the op, ok so for example i've been working on a certain large project.

I started by thinking that basically there would be a lot of posts, of different types. So I thought there could be an object Post with a child Type to tell what kind of post it was. Then I thought there's a difference between a post and a thread, in that a thread has child posts, whereas posts just belong to a thread and have no child posts. So now we have Thread as an object with Type, User, Posts, as wel as the other properties you'd expect for a thread. We're talking of a thread in the context of a forum for example.

I created first the tests, then the tables, the stored procedures, and the business objects.

Test goes something like this (this is C# by the way, not PHP):

[TestFixture]
public class ThreadsTests
{
[Test]
public void TestThread()
{
Thread thread = Thread.NewThread();
Guid id = thread.Id;
thread.Title = "Test";
thread.Body = "This is a test.";
thread.Views = 0;
thread.CreatedString = DateTime.Now.ToString();
thread = thread.Save();
thread = Thread.GetThread(id);
Assert.AreEqual("Test", thread.Title);
//thread.Delete();
//thread = thread.Save();
}
}
}


Only a very simple example. First a thread is created, then retrieved with the generated ID to make sure it was in fact created, then the title is checked to be what is expected, then it is deleted. Further tests might include testing the business logic by, for example, entering a created date in the future. Anyway the point is that such uni tests are in place, then you can code according to such tests and know immediately when something's gone wrong. In my opinion it can help with the design of the application a bit, as you're just creating the code to pass the test, as I mentioned in a previous post.

The above is just to give an example of planning out something rather simple. I guess I tend to think of the business domain first, deciding which objects I need and what their relationships are. I tend to do all this in my head because, well I do a lot of things in my head :P, but you could use CRC cards or UML as well.

ActivI
07-18-2007, 10:46 AM
Greetings,

Some of the posts in this thread point exactly the most usual problems with developers, and that is programming language agnostic: people can know all the functions but they cannot solve problems from scratch, without constant supervision.

Why does that happen? Well, from my experience, it happens mostly because people tent to approach software development from the wrong perspective. Developing a software is much more than knowing the functions of a language. In fact, since I've started doing project management I always try to take programming languages out of the equasion. It's not that odd, if you look at it. This is also something I usualy apply when I have to teach someone how to program.

There's an old saying that I tend to use when I tell anyone to forget the programming language: “Give a man a fish; you have fed him for today. Teach a man to fish; and you have fed him for a lifetime". Memorizing the functions of a given programming language will only take so long, teaching how to develop is a whole different thing.

If I'm in the process of teaching smoeone how to develop software I first teach them what's an algorithm, in theory (remember the no programming language?). Then I explain some theories about variables, data types, cycles, etc, using pseudocode only. After some pratical exercises, when they understood how things work you start working on the most important thing: how to think.

There are a number of ways to approach that. Again, I usualy use the same method: theory -> pseudocode examples -> practical exercises.

There are a number of known excercises, usualy seen in pascal classes. I have some favorites for when people are starting: Recieve 3 numbers and put them in ascending order in the least number of steps; Recieve some numbers and determine the type of triangle; Working with arrays is also very important. For this I usually hand a request to create an array of a ficticious class room students and order them, also being able to add and remove names reordering.

Some other good topics to teach people is how to do things in the most efficient way, performance wise that is. Last, but not least, make sure peolpe understand the most known security issues, how to have security in mind from design to deploy, etc.

The fundamental issue is not knowing the language. It's learning how to think out of the box to solve complex problems.

Never forget that when you say something like I want to do an awards system it is impossible to go there and type awardSystem() and is all done. You need to break it into small, workable, pieces. What is required to make such system work? (e.g. Users, prises, etc)...

This post is getting long. To conclude, I'd advise you to stop reading the PHP books and start reading logic books. There are also some good books about software architecture out there. Such books can also help you understand how to do the hardest thing of all: How to go from the BIG picture to a development plan to get there.

PS: Just keep in mind one thing: There isn't any magical formula to solve all problems. That's why experience pays quite well in this field ;)

GPearce
07-18-2007, 11:19 AM
PHP is ok to learn, if you are trying to, i would reccommend www.w3schools.com - they have a great tutorial that helped me loads when i was starting.
Another good thing is the PHP and SQL for dummies book, that is an excellent starting place :)

mwatkins
07-18-2007, 12:12 PM
Of course, the positive side of this is -- once you attain these critical thinking and problem solving skills, then you are not limited to the language currently at hand, you can spend a few days to learn any new language, and apply these skills to that language and be productive.

Agreed, and these skills are equally applicable to any system administration or implementation task, not just software design and development. Unless one develops an ability to boil problems down to basic components, and think in "if" "then" "else" terms and apply that to problem solving in general, frequently one will end up chasing their tail around in circles when something unusual pops up.


Example -- someone that knows the basics behind the client server computing model, how http works, the nature of http and the fact that it is stateless; database theory & design (concepts like normalization and atomicity of data) can use any webdevelopment language to create web applications (and be very good at it).

I couldn't agree more, and to some degree this is why I suggest that new web developers (regardless of language) spend some time writing basic CGI programs.

A newbie to PHP frequently wonders about "... headers already sent" error messages without really understanding how HTTP works. A little dose of CGI helps with that. Environment issues often stop people in their tracks. A little CGI development can help with that understanding too. Having to write some of your own helper functions or classes in order to make CGI programming easier tends to open eyes up when a web framework, which is what PHP is - a language with its built in web app paradigm or framework - is adopted. Things start to make some sense.

Unfortunately many just rush in before they have some basic knowledge and concepts understood and become forum fodder for some time, at least until they get a clue.

A newbie to Python could fall into some of the same traps, particularly if they pick up an advanced framework that does most of the web thinking for them. But this tends not to happen as much because there is a higher bar which prospective web developers choosing Python (or Perl or Smalltalk or ...) have to cross - some investigation and learning has to take place first. Perhaps that acts as a filter and blocks a certain percentage, or simply forces a base level of understanding before progress can be made.

Notice, there is no mention of any programming language in the above; just concepts. Progamming languages are just tools that one can use to create a solution; they are not the solution -- you must know how to solve the problem before you even start development.

Absolutely. If you look at many of the questions posted on WHT related to development, that lack of understanding is frequently the root problem the poster faces, not the programming challenge.

mwatkins
07-18-2007, 12:16 PM
mwatkins: I guess you won't ever stop with the whole Python-in-every-php-thread bit ;) but I don't mind :)

LOL I'm not trying to be a pest, really. I do think its useful to show differences occasionally for educational purposes and contrast. Always happy to answer questions.

Azavia
07-18-2007, 12:33 PM
I agree about trying a different language that, actually makes you think about this stuff.

When I first started programming, I began with PHP. I eventually got really confused with it somehow (can't remember the exact source of confusion), so I decided to be drastic and try C. And then C++. After mastering these two languages I went back to PHP and it was nothing to learn. almost laughable really.

Once you learn different languages, it's almost trivial to learn new ones. Unless it's a completely different paradigm like lisp or something lol.

Also assembly is an experience everyone should go through, IMO.

ActivI
07-18-2007, 12:51 PM
C -> C# / Java -> PHP is usually the easiest way. Eventually, you can skip C if you already have some background. You can also start directly in PHP, but you are more likely to be learning some bad programming practices. Although not entirely, Zend is fixing some of the bad practices in the upcomming version 6 of PHP.

Azavia
07-18-2007, 01:00 PM
Although, IMO, if you learn C# and don't mind using Windows, you might be tempted just to use that....it can do everything PHP can, and far more.

But to each his own I guess. :)

C's always a good idea though, despite how much of a pain it can be with its character arrays.

jellysandwich
07-19-2007, 02:37 PM
Even though I want to pay them $500 or so for a simple script they decline.

a simple script for $500? ill do it! ;)

I fire the clients that don't.

oh my, since when did workers start firing their clients? :D

You might be interested in unit testing, specifically writing the tests before you even write the code. You know what you need, so you write the tests to verify that the code is doing the correct thing, even before writing the code. Then once you have the tests in place you write the simplest code required to pass the tests.

isnt that called 'test driven development'?



this threads seems to bring up the difference between designers and programmers. designers sit back, conceptualize, and try to formulate a solution. programmers take what theyre given (ie, implement so and so function) and go straight to it. in my experience, ive noticed that people tend to be stronger at one and weaker at the other. and from what ive read so far, it seems like youre more of a programmer than a designer.

so how do you get better? practice. sit down, think of something that might be useful, and get to it. reading and following examples is good to start with, but wont let you 'master' things.

js

ThatScriptGuy
07-19-2007, 03:20 PM
And you, my dear js, sound like you have never taken on a large-scale project. One of the most fundamental things that is taught in 'programming' classes across the world is planning. Without a solid plan to build your work upon, you are asking for trouble.

If you were asked to build a piece of software to help manage a chain of, oh, 1000 hotels, and you immediately sat down and started typing without any prior thought given to the situation, you would soon find yourself overwhelmed with what you had gotten yourself into.

Planning and designing is a basic part of programming. Without it, you can only get so far.

Kevin

mwatkins
07-19-2007, 03:21 PM
oh my, since when did workers start firing their clients?

I was quite serious about that.

It has happened often enough that, after sizing up a client and their expectations, I have had to walk away from business. There is more to the relationship between consultant and client than simply an exchange of money for work, particularly if the consultant is taking on some component of project risk.

"Fire the client" hopefully is done figuratively, before project work begins, as a result of the pre-sales evaluation of the client, the project, and whether the proper conditions for success are in place.

However once in a blue moon in my career I have run into a Dr. Jekyll client that morphs into Mr. Hyde during the work, and I have found it necessary to "fire the client" at such times. I once had to do this in the middle of a multi-year project that involved a large team of expensive resources. It was the right thing to do; the political situation within the client degenerated significantly during the course of the work and it was clear that the client's principals had no intention of stepping in to ensure project success and a win/win situation for both them and my firm.

Walking away was easy.

sasha
07-19-2007, 04:26 PM
..programmers take what theyre given (ie, implement so and so function) and go straight to it.

That is mistake I made so many times. Experience thought me not to do it again. Even if I think I know how some project should be done, I let it sit and wait and go through due process.

The first thing I try to do is to identify problematic portions of the project and just code "proofs of concept" that solve those problems. As I work on those parts, big picture starts to form and by the time I know how the problematic parts will work, I have very good idea how it will all work together. That is when I start actual work on project. Every time I just "jumped on it" I ended up going one step forward and two steps back.

Burhan
07-19-2007, 05:45 PM
In most professional development firms; the act of 'coding' usually takes the least amount of time in a project. The majority of the time is spent:

1. Analyzing the problem at hand. What is the core business need the client is trying to solve?

2. Understanding expectations and deliverables.

3. Use-case diagrams and static walk through the screens of the project (generally done in a large room with a large whiteboard).

4. Planning the objects and their relations (UML)

5. Distribution of work to teams

6. Assignment of crisis team, bug resolve teams (and responsible parties)

7. "Coding" begins

8. Commits

9. QA/QC

10. 'Dry run' (ie, beta releases)

11. RTM / delivery

The large majority of time is spent before step 7 actually begins; because the act of 'coding' is rarely time consuming (thanks to RAD techniques, advanced IDEs, competent programmers, etc.) Unfortunately, most teams and people that I have seen working seem to skip straight to 7, 8 -- then 10 and 11.

knightofshadows
07-23-2007, 05:36 PM
Impossible is nothing.. You just have really to want it!

Duorkin
07-23-2007, 05:42 PM
I don't wanna be rude, but... this post fits perfectly for the Comedy Central... u know what I'm talking about...

Engelmacher
07-23-2007, 07:14 PM
I don't wanna be rude, but... this post fits perfectly for the Comedy Central... u know what I'm talking about...

No I don't because that's not really a sentence that makes any sense.

avocado
07-24-2007, 04:30 PM
In most professional development firms; the act of 'coding' usually takes the least amount of time in a project. The majority of the time is spent:

<list snipped>

The large majority of time is spent before step 7 actually begins; because the act of 'coding' is rarely time consuming (thanks to RAD techniques, advanced IDEs, competent programmers, etc.) Unfortunately, most teams and people that I have seen working seem to skip straight to 7, 8 -- then 10 and 11.

fyrestrtr, what would you recommend to a self-taught programmer who wants to learn the planning and architecture aspects of the craft?

Azavia
07-24-2007, 04:39 PM
fyrestrtr, what would you recommend to a self-taught programmer who wants to learn the planning and architecture aspects of the craft?

All I can say is: Extreme Programming (http://www.extremeprogramming.org/)

I think it's the best thing I've come across. I just used many of these techniques on the last project and it worked out very well.

Other useful pages: Portland Pattern Repository's Wiki (http://www.c2.com/cgi/wiki?WelcomeVisitors), especially their Extreme Programming category (http://www.c2.com/cgi/wiki?CategoryExtremeProgramming).

ThatScriptGuy
07-24-2007, 04:51 PM
fyrestrtr, what would you recommend to a self-taught programmer who wants to learn the planning and architecture aspects of the craft?
If you've got a local community college, check it out and see if they have an intro to programming class. These usually cover a LOT of planning and pre-development steps.

cygnusd
07-24-2007, 06:15 PM
fyrestrtr, what would you recommend to a self-taught programmer who wants to learn the planning and architecture aspects of the craft?

You may want to properly learn some software development methodology: the trend is in the direction of agile/iterative/test-driven methodologies. Software development is inter-disciplinary; which includes (my emphasis on):

project management (communication; people)
software design (data structures)
programming (KISS principle; code maintainability)
software testing (test test test ...)
more...


Note that software design/architecture is entirely a different thing and that it demands a great deal of experience and enough theory/tools that you can apply. You can learn a great deal from case studies and the industry's best practices.

I have to admit. My post above contains a lot of buzz words. Pick up a good book on software development. Bottomline, learn something and apply it.

Cheers :agree:

jt2377
07-25-2007, 12:38 AM
OP, what you describe is actually one of criticisms of PHP on the wikipedia's entry.

http://en.wikipedia.org/wiki/Php

"PHP has no namespace support, which leads to a very large amount of globally available functions that can easily number into the thousands."

jt2377
07-25-2007, 12:41 AM
I don't wanna be rude, but... this post fits perfectly for the Comedy Central... u know what I'm talking about...

No. I don't know what you're talking about. This is a public forum and No question is stupid or funny question. You either contribute or stop talking in riddle or try to be funny.

Say what you want to say and stop being a clown.

Burhan
07-25-2007, 02:54 AM
fyrestrtr, what would you recommend to a self-taught programmer who wants to learn the planning and architecture aspects of the craft?

I would recommend you take classes (if they are available) or pick up a few books on software engineering and software design. The good books (and classes) will be language neutral. I also suggest a familiarity with UML; as this is the de facto standard modeling and planning language of the software world (think of it like a language to create blueprints of software).

Try not to get enamored with a particular development methodology; try them all and see what fits your team and your style best.