I have recently been hired for a job as a Bukkit plugin developer for a gaming website. As the projects become larger and more complicated, I am finding it more and more neccassary to carefully design the components of my project before I begin coding. I am having difficulty deciding which components I should begin designing and coding first. I ask myself questions like "Should I start with the config, or the listeners, or maybe the I/O layer?".

Here is my question:

How do you as professionals organize your project components and decide which components require the most attention?

  • This is a question about Software Engineering and as such is off-topic for PMSE. Project Managers schedule the order of elements within the projects according to the needs of the project dependancies, milestones, deadlines and as proposed by the subject matter experts on the project team. – Marv Mills Apr 4 '14 at 11:33
  • I apologize for putting the question in the wrong forum. I was directed here from the stackoverflow main page. Thank you for the information. – James Allison Apr 4 '14 at 11:58
  • Wait! The question has a component of SW stuff but also scheduling, which is in the domain of PM! – David Espina Apr 4 '14 at 14:12

I will answer this question not from the perspective of SW engineering but rather scheduling. Obviously, there is some SW design build method you ought to follow but there are some considerations around scheduling that is true no matter the type of project, but that you need to equally consider along with the SW method.

First, sequencing of work is dictated by the logical work flow, meaning work A needs to occur before work B in all cases. Think: you cannot paint your wall until you hang the dry wall, which cannot be done until you framed out the room. This type of sequencing comes first.

Second, you have another issue with resources doing the work, either human or materiel, or tools. A person doing work A cannot do work B at the same time, so these are sequenced accordingly. It is not a hard sequence as you have some choice.

Third, you have soft logic built into your sequencing, which means you are simply choosing a sequence. In the schedule, you would create a dependency, even though it is a soft dependency.

You have options and play with the second and third type of sequencing and here is where the analysis begins.

While we put hard numbers in the schedule in terms of hours, days of duration, and resources, the work is actually probabilistic in a very random way, called aleatory uncertainty. So, based on the estimated logic you created against the work, you can model different sequencing scenarios that provide you with the best case in terms of lower risk. If you alter sequencing for the second and third types, you can materially change your risk posture, creating the most buffer within the work, thus minimizing the critical path.

Each project is different so there wouldn't be an answer from a scheduling perspective that would say, do this before that all the time. It is an analysis that would be done for each project during planning and replanning stages.

From a PM perspective, hope this helps.

  • Thank you very much for the information. This is very helpful for me, as I am largely still my own manager in terms of what areas of the project I chose to work on. You gave some very good advice, thank you. – James Allison Apr 4 '14 at 14:29

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