Fog Creek Software
Discussion Board




Best Way to develop Web Application by 1 person

I am new here! and this is my first post here on this discussion.

I need your advise that what should be the best way to develop web application (online communication system) by one person. (have to do all stuff. i.e. design, development, UI, testing and finally deploy)

What can be best steps according to you to finish the work more efficient way.

Thanks for your input in advance.

Regards,

Ashvin Savani - Arckid

Ashvin Savani - Arckid
Monday, August 30, 2004

First, get two eggs...


Monday, August 30, 2004


For a total beginner who is interested I would say...


install apache + php + mysql/postgres and start coding examples.

Then in 3 months when you have a couple of simple database driven websites re-consider what technology to use.

If you install all this free stuff at home and develop something you can host it for very little, ($10 a month).

That feeling of having your first website out there in the real world will be great.

Action not knowledge, get into it.

braid_ged
Monday, August 30, 2004

IS THIS FOR CONTRACT?

Babu Jones
Monday, August 30, 2004

>Action not knowledge, get into it.

WTH?  You must be from Texas. :)

Kalani
Monday, August 30, 2004

"For a total beginner who is interested I would say..."

I am not that much starter ... I am working on this type of stuff since last 3 years but i want to know best way / standard way to do it out. I just use my own rules to do it.

"IS THIS FOR CONTRACT? "

I am freelance developer from India. So for me its a freelance work i have to do from home.

thanks for quick response!

Ashvin Savani - Arckid
Monday, August 30, 2004

python is the best language for every-err, sorry, this board must be getting to me.  How big of a project are you working on?  If its small, and you just want to mess around with some DB stuff, go with Perl and CGI.pm.  If you wanna make a more complex application, download tomcat and start doing it in java.  Without knowing your background or the scope of  the app you want to work on, its hard to say.  (i do all of my personal projects in java but thats also one of the languages im most comfortable in)

vince
Monday, August 30, 2004

I guess my communication skills are too poor :(

Here is my desired technologies to use:

Front-end: html + flash
middleware: remoting, amfphp, PHP
backend: MySQL
others: macromedia flash communication server mx

What I need to hear from you is like ...

- first make rough layout
- then do this
- then make db
- then do that
- then show to client
- then start coding
- etc.,

:)

Ashvin Savani - Arckid
Monday, August 30, 2004

- Put "professional webmaster" on resume
- write cool HTML using <blink> tag
- do some testing
- find a midi file to play in loop
- use black and yellow background
- code SQL statements
- design front end using forms that send an email to the client and have a clear button.
- create database schema
- repeat



 


Monday, August 30, 2004

Allow me to over-simplify:

Write out the requirements on paper, in lists or whatever works for you.  Make wire-diagrams of the layouts of all of the pages.  Maybe create a site map.  Create some template examples for the look and feel.

Review all of this with the client.

Repeat ... until you both know and agree on what is being built and paid for.

profound insights galore
Monday, August 30, 2004

- first make rough layout
- then do this
- then make db
- then do that
- then show to client
- then start coding
- etc.,

Babu Smith
Monday, August 30, 2004

1. learn some css and html standard
because in real projects, the clients will ALWAYS ask you to make printer-friendly page. If you donot know basic knowledge of css, html, the clients will make you crazy!!!

In one of my nightmare project, I have to screen-capture every html page and email them to my clients.


2. learn C programming language and assert
I am just wondering why the web programmers can not use such simple, time-saving and useful technology

3. find a debugger (I recommend Microsoft Script Debugger on windows)


For the database design and other parts, it's easy.

--------------------------------------
D2KSoft, Different and Elegant
http://www.d2ksoft.com
We provide advanced tools only for YOU,
the smart, tasteful and lazy hacker!
--------------------------------------

redguardtoo
Monday, August 30, 2004

- go to internet kiosk in village and post message on internet: "we are CMM level 5 company for cheap outsourcing"
- receive contracts from rich american companies
- post message on internet "plz help for contract, how is to program"
- happy western programmers will help you to make the program in HTML or C program language and will email you the programming codes.
- eat the sweetmeats

Babu Johnson
Monday, August 30, 2004

Ehm... excuse me but how the fuck did you get this contract if you have no idea how to go about it?

Use some common sense, do a bit of research, above all just try doing it - you'll probably find better ways of working the more of these projects you do but I'm sure it differs a lot from person to person and I doubt anyone here is gonna feel like giving you detailed coaching.

Matt
Monday, August 30, 2004

>>Action not knowledge, get into it.

>WTH?  You must be from Texas. :)

Australian. 

We is bigger and badder, they had to find a massive island to dump us on so we could slug it out amoungst ourselves.

And that's pretty much just the women.

braid_ged
Tuesday, August 31, 2004

Most Australians are a lot smarter than braid_ged and aren't so stupid as to hold the hands of less-than-competent outsourcers.

Aussie bloke
Tuesday, August 31, 2004

sigh.

braid_ged
Tuesday, August 31, 2004

If you want to go the Microsoft way, don't do designer created aspx, and System.Web.UI.WebControls.

Rather write your own System.Web.iHttpHandler. Try and use the System.Web.UI.HtmlTextWriter as much a possible.

Write classes for bits for common Html that you create.

Gary van der Merwe
Tuesday, August 31, 2004

Ah, full moon and methinks you have all been trolled.

Harvey Pengwyn
Tuesday, August 31, 2004

You need to start out with a clear requirements document. Make sure you and your client agree _exactly_ on what you have to produce, and exactly what it has to do. See Joel's article on writing good specs for help with this.

Then, when you've completely agreed a spec write an ERD (Entity Relationship Diagram) and get your database design perfect. Don't modify the database as you go through, get it right from day one. And don't code a single line until you have the DB.

It would be immensely beneficial next if you were to get yourself set up with a decent testing tool like SimpleTest (search on google). It is an automated unit + regression testing tool which you can use to test your whole app as you write it. Infinitely better than testing yourself.

I guess you should then write any classes or objects that you need, testing all the time, and then move on to other, client facing code that makes use of the objects.

Many people use 'test driven development' - where they write a test case before they write the code. Then they get the code to pass the test, write another test case and do more code. And so on. That would potentially be useful for you. See the Simple Test site for more on that.

Also it is really useful to use a version control system like CVS if you have access to one. You can also download CVSNT and install it on your own Windows system if not.

This is just an opinion / suggestion so take as much or as little of it as you want. But it's good advice from a self-employed web application developer :) Read some of Joel's articles, while they're more geared to compiled languages like C etc the same principles still apply.

Let me know if any of the above is not clear and I'll try to rephrase :)

James U-S
Tuesday, August 31, 2004

Babu Johnson

I dont want to start offshore development company ... niether i need to do that much advertise. My clients come directly because of my skills.

Matt

I have better knowledge and skills about the technology and i already did several projects like this before. I am not asking that guys please teach me how will i do the projects ... I want to know that which steps you people usually do to complete the project ... i.e. phases of a project like this ...

James

Thanks a lot for your nice answer.. this is what i was expecting. I already finished these phases.

- Obtaining complete application requirements
- Designing of DB

what i should do next ... I know all the stuff ... how to do it technically .... but i want to know how can i finish it more better with some good management skills.

hope atleast you are getting me.

:)

regards,

Arckid

Ashvin Savani - Arckid
Tuesday, August 31, 2004

The best way to finish the project "more better" is tp bill the client and collect your money.

Babu Doe
Tuesday, August 31, 2004

Well, the development model that will make you the most money is one that I saw used by a consulting firm on a big company I used to work for:

1)  Sign a contract for $x to deliver product y by date z
2)  Deliver exactly half of what you promised by date z
3)  Complain of cost overruns on your end and demand .5x more money to complete the project
4)  Deliver 10% of the remaining work in 2 or 3 months.
5) Goto Step 3, unless the company finally gets tired of your B.S. and wants to buy you out of the contract.  In that case, goto Step 6.
6) Collect 2.5x in a buyout fee from the company, after having delivered 80% of what you promised in just over twice the amount of time that you originally promised.
7) Profit!!!!!!

They were an obviously awful company, but they got away with murder, so I guess they aren't THAT stupid!  Had I been in charge, I would've sued their @$$es into submission for failing to live up to the terms of the contract.

Jack B. Nimble
Tuesday, August 31, 2004

"James

Thanks a lot for your nice answer.. this is what i was expecting. I already finished these phases.

- Obtaining complete application requirements
- Designing of DB

what i should do next ... I know all the stuff ... how to do it technically .... but i want to know how can i finish it more better with some good management skills.
"


I would now start thinking about the internals of your software. Do you use OOP and classes, or functions? If so, which classes? What are they called and what do they do? What are the methods in the classes? What are the functions? How will you handle errors gracefully?

Lots of what follows is assuming you're using OO (which probably is quite a good idea if you have experience of it). Though it can mostly be equally applied to functions without OO as well.

It is sometimes helpful, in my experience, to use information gathered above to build outlines of your classes. Then you fill in the actual code later. Like (assuming php):

class User {
  function add($variables, ...) {

    return true;
  }

  function delete($variables...) {

    return true;
  }

}

If you want to work like that, you can then start making some tests. So, for example, think to yourself 'how do I test that my the add function in the user class works properly?'. Write a test case for this in SimpleTest (see my earlier post) including test data. Then code the function to pass the test. Move on to the next function, write the test case then the code to pass the test. Ad infinitum.

When you've got your classes made & working (and keep re-testing the old ones to make sure you don't mess anything up later. SimpleTest makes this really really easy), then start on the front-end code. Say you're making a login box. Using your design spec/document you know how it has to work, so write a test case for it in SimpleTest. You can have simpletest actually fill in the login box and simulate a submit then scan the following page for a result, so take full advantage of this. As earlier, once you have the test case write the code. When it passes the test, move on to the next bit. Ad infinitum, again!

And make sure you use CVS or some other version control system. It really is worth the trouble of setting one up. I put all my spec documents and everything in there.

As before, this is all really a matter of opinion as there are countless ways to develop a decent web application. This is along the lines of my own personal choice as I think it helps to ensure that the software does exactly what it should do, and it does it well. It encourages you to keep exactly to the spec and helps to get rid of bugs. It also gets rid of the common (in my experience) problem where the spec is written, and the program doesn't quite match the spec for whatever reason (changing requirements etc), but the spec is never updated, so the spec becomes completely worthless.

Hope that helped!

James U-S
Tuesday, August 31, 2004

You should add user interface design as a step somewhere in there too, James ;)

Phibian
Tuesday, August 31, 2004

:) I normally have that as part of the spec, though yes I should have said that!

James U-S
Wednesday, September 01, 2004

*  Recent Topics

*  Fog Creek Home