Slashdot Mirror


Project Management For Beginners?

lawpoop writes "At my current workplace, I'm tasked with creating a rather complicated and metastasizing web-database application. I've mostly been the sole 'IT guy' at my workplaces in the past, so I've never had to, nor taken the time, to learn proper project management routines — code comments mostly got me through it. Now for this project, it's getting somewhat hairy and I'm sensing that I need to start doing things in a more organized manner. What resources would you direct me to? Books? (I wouldn't mind buying one good one.) Websites? What do proper 'specs' look like? Must I use UML (seems complicated and unintuitive) or a simpler ER diagram? For this job, I just need to provide better estimates for completing features, but what will I need if/when I would be working with a team?"

24 of 168 comments (clear)

  1. A book I thought was good by stoolpigeon · · Score: 4, Informative

    I recommend Making Things Happen: Mastering Project Management (Theory in Practice) by Scott Berkun. Berkun has quite a bit of experience working on and managing teams. You can check out his blog for more info. and to get a taste of what his writing is like.
     
    There are a ton of books out there - his blog has a sample chapter to read so you can see if this will work for you. I thought it was easy to read and covered quite a bit without getting bogged down. The table of contents breaks things down to a pretty low level - so that is another good way to see if it hits on what you need or if it might cover a lot of stuff you don't care about. I know I wish some of the people I've worked for had read it and took it to heart - especially the stuff about how not to annoy people.

    --
    It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
    1. Re:A book I thought was good by stoolpigeon · · Score: 4, Informative

      Making Things Happen is the second edition of The Art of Project Management. They cleaned some things up and I think added in some practical exercises - and changed the title. (I'm not sure about the exact differences because I never read the first edition) I think Berkun explains why they changed the name in the forward but my copy is at home and I can't remember for sure. It is unfortunately confusing.

      --
      It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
    2. Re:A book I thought was good by Jay+L · · Score: 3, Insightful

      After a long spell away from project management, I bought a few books to catch up on what I'd missed. I did read the Art of Project Management, but I wasn't that mesmerized by it (though I did start following Scott Berkun's blog). It felt too sterile and academic as a starting point. Maybe it's better if you're already in the thick of it, and maybe the new edition is cleaner.

      What did mesmerize me was Agile Estimating and Planning, by Mike Cohn, who also has a good blog. It's quick reading, in an appropriately lightweight style, and it introduces all the concepts of agile planning (independent of Scrum, XP, etc) in a way that... that...

      Well, remember that one professor you had, who taught you biology by deriving it from chemistry from physics from mathematics? Cohn explains agile planning from first principles, in a way that made me wonder how we spent two decades not realizing how obvious it was. My forehead hurt from all the slapping. Of course! Why are we forcing humans to estimate time and to calibrate their estimates? All we know is "hard" and "easy"; estimate in points, track your velocity, and let a smart computer figure out what that means in weeks. Of course! We don't need to plan hour-by-hour for dates 18 months away; we don't even know what we'll consider important than.

      If you're considering agile methodologies, you must buy this book. If you're considering traditional top-down/waterfall planning, do yourself a favor - just slap your forehead every day. It'll build up calluses for when you buy the book later.

  2. ITIL by NeutronCowboy · · Score: 4, Insightful

    Start there. There's a ton of stuff online. If you can get your work to spring for certification, great. If it doesn't, no worries. Project Management is easy. Just keep in mind a few things:
    - You need a project schedule with milestones. Live by it. Make others live by it.
    - Understand GANTT charts. Don't necessarily use them, but the principles behind are solid.
    - Google is your friend. The wikipedia article is actually a good start.
    - Above all, understand that this is a team effort. You won't succeed without others. Time to start honing those social skills.

    --
    Those who can, do. Those who can't, sue.
    1. Re:ITIL by mc1138 · · Score: 3, Informative

      ITIL is great and all, but might be a bit monolithic for a first time project manager, especially working solo. Your other recommendations are right on track though.

    2. Re:ITIL by Anonymous Coward · · Score: 3, Insightful

      Be careful with ITIL as it can massively overcomplicate things for people trying to do the bare minimum that works. We used ITIL based software at our company for release and service management and talk about overhead.

      My recommendation is to do a lot of reading to familiarize yourself with the topics.
          - Start with a basic analysis and design book (which will walk through requirements). From there you'll get ideas of other books you need to read.
          - Many of your questions are asking about how to be a development lead. Read "Ship It" by Richardson and Gwaltney. That is the best software book I've ever read

    3. Re:ITIL by Tiger4 · · Score: 4, Informative

      In addition, be be careful with your requirements, specifications, and testing.

      Your users and customers (two related but often slightly different groups) are supposed to come up with the requirements, but often they are clueless on what they need. So you will often need to help them with suggested feasible solutions. However, the ultimate decision on what is REQUIRED is theirs. Just be sure to help them with the difference between required vs nice to have vs "you have got to be dreaming". The budget and time estimate is based on the requirement.

      ONCE THE REQUIREMENTS ARE LOCKED DOWN you do not accept changes to them. Any changes go into a NEW requirement that will be harmonized with the old one at a later date. Think of it like a train leaving the station. No new passengers get on, none of the old ones jump off, except under controlled conditions. If the users want to change the requirement, tell them to get on the next train. As the PM, you decide when the new stuff can be included into the old AND HOW MUCH IT WILL COST TO DO IT. Never let them think it will be "free".

      Getting a good estimate from the written requirement is tough. Trying to determine Function Points and lines of code and complexity and speed of development is a serious art form. Get good people and go over it a lot, from different angles. If you are lucky, this project is similar enough to past projects that you won't plant the seeds of destruction at this stage. You need to be sure you can really live with the cost and time estimate you give them. DO NOT ASSUME BEST CASE just because it look "easy". Too many people do. DON'T JUST DOUBLE EVERYTHING unknown. that is just wasteful. If you have serious unknowns, do some risk reduction explorations to be sure you do know what you are talking about (or at least plan to do them so you will know when the time comes).

      The best specifications are testable. And the Tests should be written at about the time the specs are written. A Requirement might say "full color display". A Specification might say, "display in at least six colors, including white, black, red, green, blue, cyan, magenta, and yellow". Guess what the acceptance test is going to look for? It should be as Unambiguous as possible. This is where team work is good. Don't let the designer write the specs and the tests. Too much chance for hidden assumptions to creep in.

      Which reminds me, be sure to explicitly lay out the overall software design, all the modules, all the interfaces, and subject them all to thorough rigorous Reviews. Too many otherwise good projects die from unstated assumptions that lurk under the surface. The coders are so anxious to get started they forget to examine where they are and where they are going vs the tools and skills available. They never see the iceberg until too late.

      Please do your best not to become another "out of control software project".

      --
      Behold, this dreamer cometh. Come now, and let us slay him... and we shall see what will become of his dreams.
    4. Re:ITIL by anonymous_wombat · · Score: 4, Insightful
      The above post implies that you are going to use a waterfall type development methodology. A more light weight alternative is to do iterative development. Deliver a release to the customer every 4 - 6 weeks, and ask if that is what they want. After each one, if they like what they see, ask what they want to see in the next iteration. Negotiate the scope of each iteration, but not the customers priorities.

      Of course, if they don't like what they see, you have a different problem. Figure out how to get on the right track.

  3. PSP by Walterk · · Score: 3, Insightful

    Something that may be of interest to you is the Personal Software Process, see http://www.sei.cmu.edu/publications/books/process/psp-self-improvement.html

  4. PMI by rodrigoandrade · · Score: 3, Informative

    I suggest using the PMI methodology, as it is the industry standard, it'll add a lot of credibility to your resume, and make life much easier for those who follow your work (co-workers, or the guy replacing you once you brush up that resume with a PMI cert).

    Now go research about it, as a good PM needs to be able to do the legwork, too, not just shout orders around.

  5. Only as much as you need by Jawn98685 · · Score: 5, Interesting

    My advice is to adopt only the project management tools and methods that you need to get the job done effectively. It is all too easy to become mired in learning a complex discipline (project management) when all you really need is a well thought out flow chart and a good ER diagram. In other words, do not spend your valuable time trying to learn MS Project or any of the several readily available alternatives. They are tools for someone well-schooled in the techniques in managing complex projects. Your flow chart could easily expand into groups of related tasks, one grouping for each element in the chart. To manage that, a simple task list manager will do.

    1. Re:Only as much as you need by D3 · · Score: 4, Insightful

      This is what PMI says to do, cherry pick what you need out of the vast standardized body of knowledge (PMBOK in PMI terms). However, if you don't have a good grip on the BOK, how do you know what to cherry pick and what to ignore? I'm not saying you need complete mastery of the PMBOK, but a course in the groundings of it helps immensely. I'm working on my SANS GIAC certification in PM and would be lost just picking up the PMBOK without the background of the class. The work project I'm doing right now is small and so some things like Budget Management and HR Management don't apply, but that might not be the case for the submitter.

      --
      Do really dense people warp space more than others?
    2. Re:Only as much as you need by myvirtualid · · Score: 5, Informative

      Mod parent up. With all due respect to other posters, sending the submitter to ITIL is overkill. Talk about drinking from the firehose.

      I use to run a number of development teams in a systems integration and custom development shop: We took our employer's base products and toolkits and integrated them into customer environments. We did a lot of "1.0's" - typical projects were 2 to 6 weeks in length and if we ever saw them again, we lost money. We could afford one or two moderate bugs (sev 3 - functionality impaired); more than that, we lost money. We could not afford major bugs (sev 1 - all is borked; sev 2 - most is borked). And given the tight timelines, we had to be very sure that what we were developing was what the customer asked for and what the customer asked for was what the customer wanted.

      We almost always made money and our customers were almost always very satisfied. We very rarely lost money, and it was usually on strategic projects (spend integration money to make more license money).

      Here's what we did:

      1. Write a high level design document describing the major components and data flows. A mix of diagrams and text. Nothing too technical, because the customer has to understand it. But it has to be enough for a senior dev to either start coding (2 week project) or write an internal-use mid-level design doc (6 week project).
      2. Developer, tester, and writer estimate how long to do their bits based on high-level design. Project management adds some buffer (10% to 50% based on complexity).
      3. Customer reviews design, expected ship date, signs off. (Because the design has to be fit for the customer, no UML diagrams or fancy methodologies that the customer doesn't understand. These things have their place, to be sure. But if you cannot describe it in pictures and words, it may be too complicated for you and your organization's current level of development methodology.)
      4. Based on the high-level design document, start three simultaneous streams:
        1. Development: Either start coding or write that mid-level design document.
        2. Test: Write the test plan. Not the test cases. Start with the acceptance test plan. Have this signed off by the customer.
        3. Documentation: Start putting together the major structure of the documentation. (ToC, section headings, text where necessary, etc.).
      5. Checkpoint: The developer, tester, and writer meet to ensure that they agree that what they are each working on aligns with the others and with the high-level design. This can be a 30 minute meeting or a three hour meeting, depending on scope, etc. Most important things:
        1. Do we align with the design?
        2. Will we ship on time?
      6. Add detail. The developer codes, the tester writes test cases or test scripts, the writer writes documentation.
      7. Checkpoint: The developer, tester, and writer meet to ensure alignment.
        1. Do we align with the design?
        2. Will we ship on time?
      8. Repeat "add detail" and "checkpoint" steps as necessary. Stop adding detailing when done (e.g., often the writer will finish first, then the tester, then the dev - and it's nice when it goes this way, because the tester can review the docs and make sure test plans and docs really align).
      9. Test.
      10. Ship.
      11. Profit.

      Handling exceptions. If at any point things start to drift out of alignment, stop. Figure it out. If the problem was the high-level design, go back to the customer. Otherwise, it's an internal issue you have to identify and correct.

      VIP: Acceptance test plan. Having the acceptance test plan signed off by the customer is crucial. If they sign it off and everyone codes to it and it aligns with the high-level design and the deliverable passes acceptance, then you are done.

      One thing I've left out: Change requests. They are the bane of every project under development. You need to dig in your heels and manage them properly. Work collaboratively with the

      --
      I'm here EdgeKeep Inc.
    3. Re:Only as much as you need by digsbo · · Score: 3, Insightful

      Jawn is right, but remember that You Will Fail. Accept that. Experienced project managers fail most of the time. When I say fail, I mean you will be late and over budget. "Managing" expectations is what the learning experience is about your first time around. Good luck.

  6. Not enough information by MikeRT · · Score: 3, Insightful

    You didn't state whether or not you were on a team or not, but if you aren't, then just document the hell out of everything.

    If you are become a project manager over a team, here are some helpful hints that someone should have told a boss I know at a different site from mine:

    1) Learn the difference between delegation and dereliction.

    2) Defend your team against outsiders unless your team is behaving indefensibly.

    3) Your biggest job is to remove hurdles from your team's path. These may be helping them on technical decisions, but more commonly will be you marching into someone's office demanding their cooperation with your team when your subordinates cannot get any information or cooperation from them.

    4) Don't take on more work than your team can handle unless you are willing to double up on helping them AND your management role.

  7. Rules of Thumb by mseeger · · Score: 3, Interesting
    Some rules of thumb:
    • If someone gives you a time estimate: multiply with two, add one and go to the next bigger unit. E.g. if another developers says he needs one hour, take 3 days. Proceed similar with costs others tell you (unless you have a binding offer).
    • If you give someone else a task: Ask him/her about the current status, tell him what to do, let him repeat it, repeat last two steps until bot descriptions match, repeat all steps the next day.
    • Try to keep meetings smalls, the effectiveness of meetings is inversely proportional to the number of participants. Typical error of beginners is trying to get everyone at one table and to clarify everything there. Usually that burns a lot of time and achieves nothing.
    • Plan for tests, fixing and documentation... Costs typically the same or more time and money as all code development.
    • Be aware of Murphys Law... You can't plan for it, but you can grant it some room in your plans.
  8. Triple constraint by 93,000 · · Score: 3, Insightful

    Understand the triple constraint, and more importantly, make sure those above you understand it as well. Much like the old adage 'you can have it cheap, fast, or good. pick any two.' Cost, time, and scope. A change to any one affects the others.

    - Due date got moved up? Project just got more expensive or lost a feature or two.
    - Scope increased? It's going to take longer or cost more.
    - funding decreased? Lose features or increase project duration.

    Leave it to the sponsor to determine how to deal, but be certain that they understand how things affect one another.

    Practical Project Management by Michael Dobson is a good intro*. It's clear and uses good examples, without digging too much into the PMBOKish stuff that can be overwhelming when starting out.

    *disclaimer -- I didn't read it all (dove into the PMBOK to prep for the test), but very much liked what I read. Plan to go back to it someday.

  9. Metastasizing?! by MaerD · · Score: 4, Funny

    At my current workplace, I'm tasked with creating a rather complicated and metastasizing web-database application.

    I don't think that word means what you think it means, unless the "web-database application" moves to new hosts on it's own..

    Metastasis
    a. the transference of disease-producing organisms or of malignant or cancerous cells to other parts of the body by way of the blood or lymphatic vessels or membranous surface.
    b. the condition produced by this.

    Wait, you're trying to tell us you work for skynet, aren't you? Carry on, then.

    --
    I put on my robe and wizard hat..
  10. Re:just say no by thoughtspace · · Score: 3, Insightful

    Your statement is an example why we have Project (and other) Managers. The 'programming project' is only part of the objectives of the business. As you have a hostile view towards management, it would be correct for the Project Manager (and Software Manager) to isolate you from the upper management so you can work how you like with your view. There is nothing wrong with your view. A Project Manager would just have a tougher job ensuring everything gets done and getting status from you as you would feel they are interfering and incompetent. As a Project Manager, you just accommodate the different personalities. The trick is to get everything required out of the team without them knowing I am doing it.

  11. Another way to look at it... by Alpha830RulZ · · Score: 5, Insightful

    A lot of good suggestions above. I'll add the following: Project management is the art of creating lists of tasks and getting them done. It's really as simple as that, and it's also more complex.

    You need a list of your requirements. What are the things your system needs to do?

    You need a list of things you'll develop to meet the requirements. These include the pages, the back end modules, the database schema/tables, etc.

    You need a list of the tests you're going to perform.

    You need a list of the steps to move into production.

    The act of creating these lists will force you through the process of thinking through your project. Assigning elements from these lists to other people is how you get the project done. Understanding the dependencies between the items on the list identifies your path through the project. Watching how items get added to these lists lets you know whether your project is under control (high addition/change rate is bad).

    The process of formal project management just codifies certain documentation approaches to the above. You can do everything you need in Excel/word, or use tools like MS-Project. The fancy tools are overkill for a small team/project.

    Many of the disciples of project management lose sight of the fact that a project plan is not the end goal, it's a visualization of the work to be done. When you have enough detail in the plan so you can understand the work to be done well enough to estimate it, assign it, understand the dependencies you need to manage, and report your status to yourself and interested parties, you're done.

    That's my take. I have 20+ years of project management experience, sometimes while being called a project manager.

    --
    I was taught to respect my elders. The trouble is, it's getting harder and harder to find some.
  12. Process and Book Suggestions by Laoping · · Score: 3, Interesting

    First I want to say that several of the comments that came before are very good. There is a wide variety of experience and can help you get started.

    I would say start as small as you can and expect to not get it right. Take your big project and break in into a few smaller easier to digest sections. You are going to make mistakes, but as you practice and you get you company more used the process will evolve and work better.

    I won't give you specific examples of process, because I am not familiar with your organization and the process will have to be tailored for you company to work well. I will give you two books I feel are good to help. I read a lot of books on project management and I think these two are very good starter book.

    Information Technology Project Management , Kathy Schwalbe

    and

    Managing Software Development Projects: Formula for Success , Neal Whitten

     

  13. Some recommended reading by Stop+A · · Score: 3, Insightful

    I've been a project manager for a couple of years now. Still have lots to learn. The basics:
    - Scope: Define the project and what it's going to deliver.
    - Requirements: Define the finish line, what's the product or service your project is going to deliver.
    - ONE BUSINESS OWNER/SPONSER: Who has the purse-strings and will sign off on the completion of the project.
    - Activities and Milestones: Define what needs to be done and pick off some deliverables on the way to completion, so you can show everyone (and yourself) you're making progress.
    - Schedule: Put the activities and milestones on the calendar. Do you have people who can complete those activities and deliver the milestones? (Have you factored in vacation time...?)

    Some recommended reading:
    Head First PMP--the PMBOK is dry, Head First made it very accessible.
    The Art of Project Management, by Scott Berkun--Learned a lot from this book. I come back to it time and again for ideas.
    Managing Humans, by Michael Lopp--Enjoyable read, got some good ideas. A lot of the chapters in the book can be found at www.randsinrepose.com

    Another recommendation: Get a mentor. Check out the local PMI chapter (www.pmi.org) and see if they have a mentoring program.

    Good luck!

  14. Do something radical... by stonewolf · · Score: 3, Interesting

    Hire an experienced person on contract to get you started and mentor/teach your team how to do a professional job of software development.

    Stonewolf

  15. Want to say thanks to everyone's input by smooth+wombat · · Score: 3, Interesting

    I'm glad this question was posted because I have come to the conclusion that no matter how good I am at my current job, I'm bored and need to continue to advance myself. Unfortunately, because I work in a government environment, upgrading your skills is somewhat difficult due to union regulations about who does what as well as the whole "who you know" nonsense.

    As a result, I've taken stock of what skills I do have and have realized the "Those who can't, teach" rule applies to me and will (hopefully) be shifting gears in the (very) near future. Specifically, project management.

    If all goes well, I'll be heading back to school in the fall (while still working) to get a degree in IT Project Management using both credits I've earned in other computer classes as well as life experiences. I'm still waiting on word from the school as to how many credits I can transfer so we have an idea of what classes I need to take.

    The information provided here, some of which I already knew about, is invaluable and while I'm one of those who will bitch about the cruft you folks sometimes write when responding, the responses so far are probably the most informative I've seen in a long time.

    Thanks again and keep those suggestions coming.

    P.S. If anyone has an opening for a low level PM, drop me a note. Organization and the ability to see the entire project, and in what order things need to be done, are my forté.

    --
    We will bankrupt ourselves in the vain search for absolute security. -- Dwight D. Eisenhower