Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been assigned an in-house web application that is basically an Employee and Project Management System.

I'm getting confused as to where I should really start with this assignment (I mean I'm my own development manager and I really don't have experience with making a project alone) and I'm hoping that you guys could share your experiences when you were given an assignment/project to build by yourself.

Thanks

share|improve this question

5 Answers 5

up vote 6 down vote accepted

You need to ask yourself some questions about the project first to better understand what and how will be realized.

Here are some key points you should consider. These are only suggestions, or points you may want to take into consideration or not. Everyone has a different way of doing things, just think about it.

By NO WAY this is a complete list!

1) Gather info

Ask as much details about the project as possible. Both to your contractors, and to the people who will actually use it. Try to understand what are the expectations about this application and what it will be used for.

2) Understand what the project should be able to do when finished

You may want a detailed analysis about your project before actually thinking how to build it.

What are the functionalities it must have?

What kind of commands and data the users expect to see and use?

How should the application being structured?

You can make sketchs using paper and pen, post-it, or using some software to help you keeping tracks of your ideas and thinking.

3) Choose the right tools for the kind of application you need to make.

There are many programming languages, databases, server typologies, frameworks, etc. out there. You have to choose the right tools for the job, based on what you actually need to develop, and what you feel most comfortable with.

Sometimes you cannot choose any of this, but if you can, choose them well.

4) Start making some prototypes of the user interface.

Again, you can use paper or software or both or what you think it's the most useful tool. Just start to have an idea of how the application will look like, where to put the functionalities you need, the commands, where to display the data, etc.

This will give you a better idea if what you thought before is ok or if you need to change something (back to point 2).

5) Start to prototype some code functions.

You may want to be sure you are actually able to do what you are going to do before you are already halfway on your coding and understand (too late) that you went the wrong way.

Start coding the key-functionalities of your application and test them to see if they work as expected.

Perhaps the programming language you choose is not so well-suited for the kind of task?

Or your skill with that particular language/framework are not so good and you feel you could do it better or faster using other tools?

6) Show your contractors your prototype, both the UI and the basic functionalities.

You only prototyped a basic UI skeleton and application functionalities so far. But it's already enough for other people to see if this is what they expect or not.

Gather as much feedback as possible, understand what's wrong and what's work ok. If something is not working as expected you will have to rethink about it and change your project accordingly.

7) Start coding the application in detail.

Now you can start implementing all the code and UI details.

The order in which you develop the application is up to you, and varies depending on the application.

Just focus on one small piece of the application at a time, divide the project into small pieces.

I won't go more far than this since the question was only about starting the project, but I think you have some good points to think about.

share|improve this answer
    
I strongly urge those who haven't already used it to try using pencil (pencil.evolus.vn/en-US/Home.aspx) for point #4. –  Demian Brecht Sep 1 '11 at 22:28

My advice:

Adapt one of the agile software development methodologies (scrum works just fine).

A software development methodology is exactly what you're searching for. It shows the path from the very first day of an infant software, born now, till it gets developed and used and pushed out of the usage because of getting old. It covers topics like:

  1. Who should define requirements
  2. How to break down user stories into small, managable work items, commonly known as tasks
  3. What to deliver in each planning
  4. How to manage time and plan for everyday work
  5. How to merge R&D into actual development, so that no one will overwhelm the other

and many more items.

share|improve this answer

I would suggest to search for some open source alternatives. If there are some alternative available which may be suitable for the defined needs, you can build on top of them and deliver much faster.

share|improve this answer

Start by getting some requirements down. Refine those requirements. Once you're happy with them, you can start putting together some preliminary design documents. Revise those documents. Write some prototypes. Revise those prototypes. Get down some more requirements for the next piece, and so on and so forth.

Essentially, I'm suggesting working in an agile manner with yourself as the client.

share|improve this answer

It depends on what you already know and how much time you have.

That said, I'm a system programmer and wanted to build a website for some services, something related to twitter. After a few researches, and knowing that I had very basic knowledge of Python, I got interest in Django.

I bought some books to know Python better and read one to the middle before starting to play with Django. With a friend (coming from C#/ASP.Net) we built the basis of our website in 1 week.

So I guess that using Django (and its very complete documentation) would be a good solution for you if you can use Python.

I suggest Django mainly because it's complete, easy and written in an easy to understand but still powerful language. You'll get faster to the point with such tool.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.