ExpressionEngine CMS
Open, Free, Amazing

Thread

This is an archived forum and the content is probably no longer relevant, but is provided here for posterity.

The active forums are here.

[Now with summary] What features would you want in a Project Management System

May 19, 2009 11:11am

Subscribe [13]
  • #1 / May 19, 2009 11:11am

    Dam1an

    2385 posts

    Update: I’ve made a summary of everything which has been covered so far here

    Hi guys (and gals)
    As part of my 3rd year project at Uni, I’m creating an online project management system. Now I’ve got what I consider to be a fairly good set of core features, but want some input from you guys.
    What features do you think are a must have, nice to have, and should be avoided at all costs?

    I’m intentioanlly not saying what my ideas are just yet, as I don’t want what I think to influence your thoughts. (although I will post my thoughts in a later post to see what you think of them)

    Thanks guys, any ideas are really appreciated 😊

  • #2 / May 19, 2009 11:17am

    rogierb

    697 posts

    A few ‘must have’ features:
    - ability to write time on task, based on date
    - ability to plan a few hours a day to one project, a few to another and so on. Most PMS(:-)) allow only one concurrent project
    - ghant support, person based and task based
    - per task a TODO list(like TADAlist)

  • #3 / May 19, 2009 11:26am

    Dam1an

    2385 posts

    This is what I love about these forums, start getting feedback with a matter of minutes 😊

    ability to write time on task, based on date

    By this, do you mean track how long a time took, the time/date it was added/completed, or the time/date it was started and finished? Or all of the above

    ability to plan a few hours a day to one project, a few to another and so on. Most PMS(:-)) allow only one concurrent project

    I intend to allow concurrent projects and dependencied between projects, but not sure if I want to go down the the hour by hour level (eg 8am-11am work on this task on project A, 11am-3pm work on this task on project B)

    ghant support, person based and task based

    So you get a differant view based on what user you are, what project it is, what tasks are currently active etc?
    Or to just have a fixed chart for each set of tasks and users? (I’ve never really used gantt charts so it’s something I will have to look into some more)

    per task a TODO list(like TADAlist)

    I assume you mean milestone or multi step tasks? (I use task and todo interchangibly lol, so just want to make sure I get the right end of the stuick)

    Thanks for the ideas 😊

  • #4 / May 19, 2009 12:56pm

    Gordaen

    76 posts

    Not sure if you’ve used many other systems, but looking at others (e.g., Trac, GoPlan, etc.) will give you some ideas.

    Integration with subversion or other source management is awesome.  When you can tie a code check-in to a particular ticket and then see the diffs, it makes things a lot easier 😊

    Support for multiple projects; projects can have multiple milestones; milestones can have multiple tickets; user can create new ticket types easily; support for priorities; support for hour estimates, progress, comments on tickets; support for due dates;

    In most cases, things shouldn’t be required (e.g., you shouldn’t have to have hour estimates or due dates on a given ticket/task), so users can use the tool how they want rather than how you expect them to.

    You also need an easy way to do reports, such as looking up what tickets are assigned to me and sorting them by priority.

    Some sort of basic API is always really nice, so you can integrate with other systems (e.g., message from customer automatically creates a ticket).

    A notepad of some sort is nice for just braindumping thoughts (like what I’m doing now, haha) that you might want to look back at the next day.

    Hope that’s a good start 😊

  • #5 / May 19, 2009 5:00pm

    Dam1an

    2385 posts

    Thanks for the feedback Gordaen

    Integration with subversion or other source management is awesome.  When you can tie a code check-in to a particular ticket and then see the diffs, it makes things a lot easier smile

    At this moment in time, I’m not yet sure if I should go with a slightly more generic PMS, or target a particular market (programmers/developers)... Thats one of the things I’m trying to see what there’s more demand for by bugging lots of people 😊
    Are you thinking like a hosted subversion system, or just hook into an existing one via an API?

    Support for multiple projects; projects can have multiple milestones; milestones can have multiple tickets; user can create new ticket types easily; support for priorities; support for hour estimates, progress, comments on tickets; support for due dates;

    Multiple projects: Check (including nested projects)
    Multiple milestones: Check (probably with support for dependencies)
    When you say multiple tickets, do you mean stuff like TODOs/tasks, or user submitted tickets such as bug fixes or feature requests?
    Priorities: Check (probably just 3 levels, high, medium and low)
    Hour estimates: I was thinking of having (optional) estimates and then actual times, so it would work out stuff like efficientcy and fudge factor to make future estimtes more accurate
    Progress: Yup, this would be based on a combination of not only % complete, but if its on schedule (that part will be hard if they don’t provide time estimates)
    Comments: On everything! Even on comments 😛
    Due dates on tickets: If by tickets you mean tasks then yes

    In most cases, things shouldn’t be required (e.g., you shouldn’t have to have hour estimates or due dates on a given ticket/task), so users can use the tool how they want rather than how you expect them to.

    Yeah, I didn’t plan on making much required, as the more they have to fill out, the less likely they are to use it… Although they will obviously get a lot more value from it the more info they give me… Maybe add some sort of intelligent estimates based on past data?
    Regarding the “So they can use it how they want instead of how I expect them to”, thats one of the main reasons I don’t want to go down a specific route, such as being too focused on devs (with the SVN and tickets stuff)

    You also need an easy way to do reports, such as looking up what tickets are assigned to me and sorting them by priority.

    I planed on doing this over 2 parts…
    There would be a ‘My stuff’ section which would have all tickets/tasks/milestones assigned to you, and all supporting material
    The other part would be a reporting section where it gives various stats (maybe some pretty graphs?)

    Some sort of basic API is always really nice, so you can integrate with other systems (e.g., message from customer automatically creates a ticket).

    I’ve thought of this one as well… but I’ve never done an API, and can’t seem to find a decent, complete tutorial on PHP APIs (any links anyone?)
    I know I’ll probably be needing to use cURL… but not looked into it too much. Shouldn’t be too hard to add hopefully… just create a wrapper for my models 😊

    A notepad of some sort is nice for just braindumping thoughts (like what I’m doing now, haha) that you might want to look back at the next day.

    I have considered just a big textarea as a scratchpad… maybe even a mini one thats always in the sidebar, and will just append to the end of your main scratchpad? Good/bad idea? Should this be one per project, or one per user per account? Or each user can write to their own, but everyone on that project has read access?

    Thanks again for the suggestions Gordaen 😊
    Keep ‘em coming 😉

  • #6 / May 19, 2009 5:42pm

    Gordaen

    76 posts

    Are you thinking like a hosted subversion system, or just hook into an existing one via an API?

    I was thinking along the lines of hooking into an existing one (you would specify the repository and possibly username/password for the project management system to use).  Honestly, I find this to be extremely valuable as a developer, but it’s also one of the features that you might push off for a bit because it will take a large chunk of time.

    When you say multiple tickets, do you mean stuff like TODOs/tasks, or user submitted tickets such as bug fixes or feature requests?

    I guess I was sort of just running down the line (you can have multiple projects, each project can have multiple milestones, each milestone can have multiple tickets, etc.).  It’s up to you if you want to have tasks be separate from tickets or tasks/tickets can have types (user defined would be great).  There’s enough similarity that they could easily be combined, but many systems separate them because of the conceptual differences (i.e., the difference between proactive and reactive).

    Priorities: Check (probably just 3 levels, high, medium and low)

    I think this is something where the user should be able to create as many types as they want (just use a separate table and foreign keys).  For instance, those three might be good in general, but I might want to make “Show Stopper,” “Vital,” “Man, this would be nice, but I know I’ll never get to it,” etc.  The table could essentially just be id, name, rank (or weight, basically, a numerical importance compared to other types).

    Hour estimates: I was thinking of having (optional) estimates and then actual times, so it would work out stuff like efficientcy and fudge factor to make future estimtes more accurate

    That would actually be pretty cool, especially once you get to the point where you can create reports showing how long different milestones or types of tasks took.

    Yeah, I didn’t plan on making much required, as the more they have to fill out, the less likely they are to use it… Although they will obviously get a lot more value from it the more info they give me… Maybe add some sort of intelligent estimates based on past data?

    Estimates start to get tricky though because you have to compare task similarity, which isn’t easy.  I’d suggest leaving “Due Date,” “Expected Hours,” and other such fields blank, or else give the user the option to create defaults.

    Regarding the “So they can use it how they want instead of how I expect them to”, thats one of the main reasons I don’t want to go down a specific route, such as being too focused on devs (with the SVN and tickets stuff)

    That’s good.  You might try coming up with some scenarios for possible uses to ensure that the system will still meet those possible needs.  From a web development team to a manager at a fast food store, you can decide how broad you want it to reach.  You might also have a setup script that allows the user to select which scenario most matches his/her expected use in order to create good defaults.

    I planed on doing this over 2 parts…
    There would be a ‘My stuff’ section which would have all tickets/tasks/milestones assigned to you, and all supporting material
    The other part would be a reporting section where it gives various stats (maybe some pretty graphs?)

    Sounds great to me.

    I’ve thought of this one as well… but I’ve never done an API, and can’t seem to find a decent, complete tutorial on PHP APIs (any links anyone?)
    I know I’ll probably be needing to use cURL… but not looked into it too much. Shouldn’t be too hard to add hopefully… just create a wrapper for my models 😊

    Well, you could use cURL to interact with external APIs, but you can create a specific controller for your own API (such as a REST-based one).  Again, I think this is probably something that would come a little later on, but it’s worth thinking about upfront, so that you can plan for it and ease its development later.

    I have considered just a big textarea as a scratchpad… maybe even a mini one thats always in the sidebar, and will just append to the end of your main scratchpad? Good/bad idea? Should this be one per project, or one per user per account? Or each user can write to their own, but everyone on that project has read access?

    Hmm, that’s actually an interesting idea.  You could have a nice sidebar for that and interaction with some of the other aspects of the system.  That would be great for me because I like throwing chunks of data/thought into a place quickly when working on certain things.  I’d say it’s your own, and you get one per project.  Usually notes like that aren’t so helpful to others.  It’s worth having a simple wiki for projects though.

    Thanks again for the suggestions Gordaen 😊
    Keep ‘em coming 😉

    Glad to help.  I have actually thought off and on quite a bit about writing my own project management software, but I always put it off because writing it would take a good chunk of time that I could just be using on the actual projects, haha.

  • #7 / May 19, 2009 6:05pm

    Dam1an

    2385 posts

    I was thinking along the lines of hooking into an existing one (you would specify the repository and possibly username/password for the project management system to use).  Honestly, I find this to be extremely valuable as a developer, but it’s also one of the features that you might push off for a bit because it will take a large chunk of time.

    I had a feeling this would be something that would take a lot of time, and it would be hard to add in at the end if I had time, as a lot of stuff would build on this (I’ll talk more about this point later on in this post)

    I guess I was sort of just running down the line (you can have multiple projects, each project can have multiple milestones, each milestone can have multiple tickets, etc.).  It’s up to you if you want to have tasks be separate from tickets or tasks/tickets can have types (user defined would be great).  There’s enough similarity that they could easily be combined, but many systems separate them because of the conceptual differences (i.e., the difference between proactive and reactive).

    Good point about the proactive/reactive, thats something I’ll try to incorporate, but maybe a more generic name, as certain types of users might be confused by ‘tickets’, and I want to avoid lots of “What does this mean” things, as on they’re own they don’t matter much, but once you have a fair few, it might out of normal users (non devs)
    As I plan on letting both the company and client access the project, I might make client submission under tasks appear as a user ticket or requests… small change, but I think it will make a difference (I can’t beleive I’m paying attntion to things such as names of things so early on)

    I think this is something where the user should be able to create as many types as they want (just use a separate table and foreign keys).  For instance, those three might be good in general, but I might want to make “Show Stopper,” “Vital,” “Man, this would be nice, but I know I’ll never get to it,” etc.  The table could essentially just be id, name, rank (or weight, basically, a numerical importance compared to other types).

    This was just an idea so as to keep it simple… also, I’m not sure how many users would use custom priorities? (but this is why feedback is so important, I would have just done the 3 and been done with it)
    I might have the 3 as defaults on each project/account, and then they can add more if they need, think thats the best compromise 😊

    That would actually be pretty cool, especially once you get to the point where you can create reports showing how long different milestones or types of tasks took.

    It would also be useful if you bill by the hour, maybe hook into an invoicing app via an API

    Estimates start to get tricky though because you have to compare task similarity, which isn’t easy.  I’d suggest leaving “Due Date,” “Expected Hours,” and other such fields blank, or else give the user the option to create defaults.

    This might be more useful as a per project thing, so if you normally spend X hours on R&D, this could be the suggested value etc. Maybe hook with up with the time reporting?

    That’s good.  You might try coming up with some scenarios for possible uses to ensure that the system will still meet those possible needs.  From a web development team to a manager at a fast food store, you can decide how broad you want it to reach.  You might also have a setup script that allows the user to select which scenario most matches his/her expected use in order to create good defaults.

    Thats a really good idea, have a generic base, and then build layers on top for various usage scenarios. I can imagine that would be one of my later additions 😊
    It also means the PMS can adapt to new markets fairly easily

    Well, you could use cURL to interact with external APIs, but you can create a specific controller for your own API (such as a REST-based one).  Again, I think this is probably something that would come a little later on, but it’s worth thinking about upfront, so that you can plan for it and ease its development later.

    How much would an API differ from my models (I know you can give an exact answer as you don’t know what my models are like). Should there be much more then adding a wrapper which authenticates the user with an API key, calls the models and structures it however it should

    Hmm, that’s actually an interesting idea.  You could have a nice sidebar for that and interaction with some of the other aspects of the system.  That would be great for me because I like throwing chunks of data/thought into a place quickly when working on certain things.  I’d say it’s your own, and you get one per project.  Usually notes like that aren’t so helpful to others.  It’s worth having a simple wiki for projects though.

    Yeah I guess keeping it specific to that user will probably make the most sense
    Not sure if this is what you meant, but you gave me a good idea with the interaction with other stuff…
    If you type something in there with a keyword, it does certain actions, eg:
    [milestone] 23/5/09 Complete end user testing
    This would then create the milestone instead of adding it to your scratchpad
    This would obviously be veruy limited at first, and you’d have to get the right syntax, but it coould evolve into a very powerful feature

    Glad to help.  I have actually thought off and on quite a bit about writing my own project management software, but I always put it off because writing it would take a good chunk of time that I could just be using on the actual projects, haha.

    This is something I’ve been wanting to do for a year or so now, but never had the time. Then we had to either suggest our own 3rd year project or pick one from the list… so I grabbed the chance to finally do this 😊

  • #8 / May 20, 2009 3:25am

    rogierb

    697 posts

    This is what I love about these forums, start getting feedback with a matter of minutes 😊
    😉

    ability to write time on task, based on date

    By this, do you mean track how long a time took, the time/date it was added/completed, or the time/date it was started and finished? Or all of the above

    ability to plan a few hours a day to one project, a few to another and so on. Most PMS(:-)) allow only one concurrent project

    I intend to allow concurrent projects and dependencied between projects, but not sure if I want to go down the the hour by hour level (eg 8am-11am work on this task on project A, 11am-3pm work on this task on project B)

    ghant support, person based and task based

    So you get a differant view based on what user you are, what project it is, what tasks are currently active etc?
    Or to just have a fixed chart for each set of tasks and users? (I’ve never really used gantt charts so it’s something I will have to look into some more)

    per task a TODO list(like TADAlist)

    I assume you mean milestone or multi step tasks? (I use task and todo interchangibly lol, so just want to make sure I get the right end of the stuick)

    Thanks for the ideas 😊

    A task can take more then one day, or even only be performed every monday. So I would want to write time on a specific task,but specify what day/hours I worked on it.

    As for the todo, A task can be “install a server”, when working with more then one person, it is helpfull if there is a sort of todo list. For instance, order server, test server, install server, place server in dc, test server, tweak server etc. Especially if something goes wrong you can add todo’s like, order server component, kick supplier in the n*ts etc.

    As for concurrend projects, I’m working on about 20 projects or so. Hour to hour planning is a must. A few collegues have helpdesk duties, so I coan only plan them for 4-6 hours a day. Most PMS only allow planning per day. And that is where they fail. A 4000 hour project with 4fte and 3pte cannot be planned if you cannot plan per hour.

    The same applies with small task. Especially small itterations or tests. Some only take half an hour. When allowed detail planning, the billing can be as detailed which saves a shitload of problems with clients.

  • #9 / May 20, 2009 5:57am

    Dam1an

    2385 posts

    “A task can take more then one day, or even only be performed every monday. So I would want to write time on a specific task,but specify what day/hours I worked on it.”

    I like the idea of recurring tasks/events, so things like ‘every monday’, ‘first friday of the month’ etc.
    As with the how much time and when, I’m not sure of the best way to approach this. Should I only let you do start date and time, end date and time? This gives me more exact data, but I can imagine a lot of people will just want to say ‘x hours on 20/5/09’. If I add both options to the screen, it starts to get too cluttered. Maybe a user settings in the CP… but this will assume they always want to enter the date/time in the same format.

    As for the todo, A task can be “install a server”, when working with more then one person, it is helpfull if there is a sort of todo list. For instance, order server, test server, install server, place server in dc, test server, tweak server etc. Especially if something goes wrong you can add todo’s like, order server component, kick supplier in the n*ts etc.

    Would this not basically just be a list of tasks (aka a todo list). You can create as many lists as you want, and even nest them, so you may have a list called “Site upgrade”, and one of the tasks on that list could be to add a new server, which would be a list containing the above steps. Do you think this would be a good way to go about it?

    As for concurrend projects, I’m working on about 20 projects or so. Hour to hour planning is a must. A few collegues have helpdesk duties, so I coan only plan them for 4-6 hours a day. Most PMS only allow planning per day. And that is where they fail. A 4000 hour project with 4fte and 3pte cannot be planned if you cannot plan per hour.

    The same applies with small task. Especially small itterations or tests. Some only take half an hour. When allowed detail planning, the billing can be as detailed which saves a shitload of problems with clients.

    I can see this being one of those things that users will either love or hate
    I know it can be made an optional feature, but IMO it will add a lot of additional clutter for users who choose not to use it, and I don’t want to have hundreds of options in the CP

    I’m thinking a good compramise might be to let you track time spent in 15 minute blocks, but to make the plans a daily thing… you can always add the time yourself (eg [8am-9am] Do something)
    Think this is a good compramise? Any other possible solutions?

  • #10 / May 20, 2009 11:37am

    slowgary

    654 posts

    I like the idea of a small desktop utility for time tracking.  Something that lists your current active tasks and allows you to toggle between them, keeping a cumulative time record of the hours/minutes spent on each task.

    I know this is kind of an add-on to what you’re creating, but I feel like keeping track of time per task is like going to your job and writing your hours on a sheet of paper.  Just as most jobs have some sort of time clock, it would be ideal if one could easily click on a new task and just begin, letting the software do the job of recording time spent.

    Adobe Air is great for cross platform web-based desktop apps (if that even makes sense).  If your PMS has an API, I’d be willing to put some time into a desktop time tacking utility, if you see value in it.

  • #11 / May 20, 2009 11:53am

    Dam1an

    2385 posts

    I like the idea of a small desktop utility for time tracking.  Something that lists your current active tasks and allows you to toggle between them, keeping a cumulative time record of the hours/minutes spent on each task.

    I know this is kind of an add-on to what you’re creating, but I feel like keeping track of time per task is like going to your job and writing your hours on a sheet of paper.  Just as most jobs have some sort of time clock, it would be ideal if one could easily click on a new task and just begin, letting the software do the job of recording time spent.

    Adobe Air is great for cross platform web-based desktop apps (if that even makes sense).  If your PMS has an API, I’d be willing to put some time into a desktop time tacking utility, if you see value in it.

    I think desktop apps/widgets are a little out of the scope of my project for the time being (although the API is on the list of things to include)
    I’m thinking of a simple start/stop times for various tasks which you use online, and then leave it running in the background (with a ensible timeout incase you forget to stop it). This would, as you say make a lot more people use the time tracking, as it makes it almost effortless compared to manually entering time sheets, especially if you go down to say 15 minute blocks.
    Do you think this (the stop/start times) should appear next to pretty much everything (tasks, milestones etc) or just tasks assigned to you?
    Could maybe then have these in the sidebar with start/stop, and a counter for total time spent.

    And I might hold you to that about helping with the desktop utility 😛 (although not sure if something like adobe air would have more appeal or widgets for vista sidebar/OS X)

  • #12 / May 20, 2009 12:16pm

    slowgary

    654 posts

    I didn’t read this entire thread, so I’m not sure if this is already answered, but I think including the time spent would depend on the architecture.  Will there be different levels of authorization?  A manager might prefer to not divulge time spent.  If a client might use the software for updates or comments, I would definitely not include time spent, as labor hours may have no bearing on billing (client sees only 5 hours were spent on his $10,000 project).  Also even from employee to employee, it may not be a good idea to show time.  People may resent their coworker who is spending way too much time on one small portion of the project.  I think that actual ability to view time should be reserved for management, although viewing your own time spent per task would be assumed.

    As far as tracking the time, I never liked the idea of having to keep a browser tab opened for it.  What if the browser crashes?  Or you shut it down accidentally?  Would it be able to log your quit time?

    I hate vista, and you should too.  Adobe Air is nice because it’s cross platform, and uses web based technologies, so the whole app can be written with XHTML/XML,CSS and JavaScript.  I don’t do much compiled coding.  Air apps can be completely skinned to look pretty, and all it would need to do mostly is to AJAX data to and from your API.

  • #13 / May 20, 2009 12:30pm

    Dam1an

    2385 posts

    @gary

    I can’t blame you for not reading the entire thread… chances are, a lot of people see how long some of the replies are and close the tab, so you’ve made it further then a lot of people 😊

    Good point on the time tracking visability, its something I’d initially overlooked (I was just going to make it open for all to see).
    I think the best method would be to have only the project manager able to see everyones times by default. The PM could then enable it so the client can see total time spent, or time per milestone (2 seperate levels of visability for the client).
    And yes, you can obviously view your own time logs 😊

    With regard to tracking your time as it happens, I never meant for it to require you keep your browser window open, you can cary on using the site as normal. I’m thinking of having it in the sidebar, and if you log back in X hours after you started a timer, it would show an alert asking to confirm you’re sill working on it, or forgot to stop it

    I don’t hate Vista because I don’t use it, Linux and XP all the way 😊
    As for what format I’ll release a desktop widget in, it will depend on the user uptake of Air at that point (another cross browser option is Java, which I’ve been using for 3 years now, but thats hideous)

  • #14 / May 20, 2009 12:50pm

    Phil Sturgeon

    2889 posts

    I did something very similar for my project, shame the codebase was so screwy and not version-controlled as I changed my workflow and the app couldn’t keep up. Now its broken and uninteresting!

    What stage is the current development at? And do your lecturers have any issue with you getting any help? 😉

  • #15 / May 20, 2009 12:55pm

    Dam1an

    2385 posts

    I did something very similar for my project, shame the codebase was so screwy and not version-controlled as I changed my workflow and the app couldn’t keep up. Now its broken and uninteresting!

    What stage is the current development at? And do your lecturers have any issue with you getting any help? 😉

    It may be broken but I’m sure its still interesting 😉
    The current development is still in the early stages, as I only had my project choice confirmed 2 weeks ago, but we don’t technically start till September, but I thought I’d get a head start.

    We’re allowed to get input from other users (its actively encouraged), we’re allowed to use existing libraries and frameworks (but I can’t hand in a copy of ActiveCollab as my project, thats’d be taking it too far). We’re allowed to get some help with the actual code, as in “This isn’t working, I’ve tried xyz… Anyone got any ideas” but I probably couldn’t get someone to write it for me (unless they wrote is a a library which I used 😉)

.(JavaScript must be enabled to view this email address)

ExpressionEngine News!

#eecms, #events, #releases