Sunday, 19 June 2016

Talking Project Management: A Reflection

Hello to you, and thank you for visiting my Blog!

 Well, my studies at TAFE SA are drawing to a close. It has been a fun and sometimes bumpy ride, more so when it came to enrollment processes. But that isn't what this post is about today. It's not about my learning journey though TAFE in particular either.

This post is about an invaluable skill that every developer absolutely must have a grasp on. That skill is Project Management.

In this post, I speak a little about what Project Management is, and what it means to me, and also go in to some detail about a Project I have recently taken this approach on, and what I have learned from it.

 So.. What is Project Management? 

I used to think of 'Project Management' as simply planning ahead with what your project requires, and having mechanisms set up to organize and streamline the way that you go about it.  But over the last semester, I have learned that it is so much more than that.

Project Management is about the planning, executing, controlling, and closure of a project. When said in a sentence, it seems a simple thing, however there is more to 'Project Management' than those few things. Team Management is a huge factor for Project Management, especially when any such project has resources that come at a cost and the project is running to a budget.

While it is used to help plan, and manage the team and project itself, it also has a very strong analytical role. Planning a project is one thing, but to do it accurately, to not only a deadline but a budget also, is another. Without any Project Management experience, it is nearly impossible to know what you are doing is accurate and going to meet the constraints that are set for the project. That is until you complete one project, and begin another.

You will probably have made mistakes the first time around. Said a task would take you 2 days, but ended up taking a week.. estimated a deadline of June, but wont see it done until November.. Set out with a budget of $5k but uncover hidden costs that eat it up to quick.. It can all happen. Once these mistakes have been made, it's easier to learn from them, and apply what you have learnt to your next project. Instead of setting this task 2 days, give it 5 days and so on.. you get the point.

Once the project has been executed, one can complete various reports to learn about the spending and rate of progress on their Project, and find what they can do better the next time around. Project Management is about analyzing your progress, spending, foresight, and identifying risks so that you can minimize these for your next project.

Before taking the Project Management class this semester, all Project Management was to me, was a single document that defined my project scope and what I needed, and then perhaps a few checklists along the way to see how I was progressing. But now, I have come to learn that it is an incredibly useful and expansive process, so that you can continue to learn and better yourself about the process of efficiently executing a project to a deadline or a budget.

My Experience with Project Management (SarjApp)

The Project

Over the semester, I conducted work (and continue to.. the project is still ongoing) on a project with another student at TAFE SA.
The project was fairly simple.. Our client had a WordPress blog, Facebook page, and YouTube channel, where she would post blogs, videos, recipes, and often do live cooking demos. Most of her content was authored through her WordPress Website. The client wanted a mobile app, so that their audience could more easily access her content and engage with her. 

The project itself was fairly simple. An app that hooked in to her blog, and represented the content on a mobile device through an App tailored to her business. We knew that going in to the project. 

The Process

The first thing we had done, is research some ways that we could make this app possible and cross platform. Neither I, or the other student had done this kind of app before, so we spent some time researching frameworks, tools, and APIs, and found some that would enable us to complete the work. With us now knowing that we were theoretically capable of executing the project, we set up a meeting with the client to discuss their needs. 

Meeting with the client is the most important step in the process. It was at our first meeting we identified what we needed, came up with the project scope, and got to know who our client was. We had also taken down some notes and done some doodling, so that we knew we were on the same page and thinking the same idea. We both walked away from the meeting eager to jump in and start working on the project, but there was still some planning to be done. 

As a team, we had established some communication methods, cloud storage, and version control software so that we could communicate and share files and code. For this we used Slack, BitBucket, and Google Drive. Other than the BitBucket repository (which is obviously key for co-developing code), Slack helped us to communicate via Instant Messaging, and served us very well as it was private, always up, and easily used from the web, mobile, or desktop. I probably don't need to talk about how good Google Drive was for us to use, but the great thing about Slack is that it plugged straight in to Google Drive, and BitBucket, and there were a lot of other ways it could interface with other existing tools too. 

While we were working on some documentation (Project Charter and Microsoft Project Plan), we were trying to get the tools set up and tested, so that we were roaring to go. In Microsoft Project, we identified tasks we'd need to complete, and estimated how long they would take us.We also completed the Project Charter, with clear definition of our scope and agreements that had to be made between us as developers, and the clients. A second meeting was arranged (which I was unable to attend) where the charter was signed, giving us the green light for the project. 

Once we had a signed charter, I had issues setting up the tools, that got in the way of us completing some tasks and threw us off schedule. A risk we didn't identify in the planning phase. We were able to dodge this in some way, as I took a more 'front-end' developer role, tasked working with the interface and representation of the data that the other student, as a 'back-end' developer would deal with retrieving. I was able to work essentially with html and css files, dodging the 19gb that stubbornly had to sit on my SSD.

In this troubled patch, I had taken the time to work on some mock-ups, which we sent to the client for approval. These did serve their purpose and the client was happy with them. These didn't truly reflect how we wanted the app to look, more just how it should feel, which was stated to the client. 

Currently, we are still working our way through the project, and we have had some success in retrieving and styling the content, and according to our MPP, we are wildly behind our initial schedule (life tafe finds a way), and are around a third completed of what we set out to do. 

The Evaluation

The main problems that we had with the project have been schedule related, or the software issue mentioned above. In terms of the schedule, both us and the clients were aware that this may be an issue, as both of us were trying to complete our Diplomas at the same time as this Project, which if you put 'Study' and 'Project' together and rearrange the words, it spells 'Behind Schedule' (It doesn't, but it was inevitable). 

The software issue we found our way around, however this did alter our task allocation and roles.
I was comfortable with the idea that I could complete the front-end, as I believe I can make a decent designer, but the unforeseen and (sadly) unavoidable software issue kept me from completing some of the more serious work on the project. There were times where the other student would come across problems with the development, and we were able to discuss and work around these, despite me not actually being able to experience the process myself. 

Now to look a this Project from a 'Project Management' point of view, the next time around we go to take a similar project, I think we can do better. And it's easy to say that even now, when the project is not even half completed. 

We could more clearly define our process, and bring it closer in line with an Agile approach. We would have a much better understanding of how long a task may take, and have a better idea of risks that we may encounter and how these could effect the project. We could be better prepared, by ensuring the Development Environment is set up, and actually does what it needs to do ahead of time, so that issues like the software installation don't happen. 

So while the (internal) process has been a very bumpy journey so far, it has been an incredibly valuable learning experience, especially as it is a practical example for a real world client. This has offered us the skills to conduct Project Management processes, and provided us with the opportunities to make mistakes that matter - and can be learned from. And that in itself is a very valuable lesson that can be applied to the next project. And I'm sure on the next project, there will be mistakes made too.. hopefully not as many, but I can continue the cycle so that all projects in future are able to be initialized, planned, executed, and closed all in an effective and efficient manner. 

To Summarize

  • Project Management is an invaluable tool, especially on Projects with large teams or complex tasks
  • The Project Management journey is about analyzing and learning from your mistakes, so that the next Project can be completed more efficiently to budget and/or deadline
  • It is absolutely vital that Development Environments are established (and working) prior to work commencing on a project
  • Interaction with the client is key to the projects success 
  • It's not about looking back at the end. It's a constant reflective journey to evaluate your performance
  • Experience and making mistakes is the only thing that will help you learn Project Management. 
  • Slack is an excellent communication tool, especially with its various extensions that enhance team communication and collaboration in a developer team. 
  • Work on the above project is still continuing. This shows you don't have to close a project to learn from it's process

In Conclusion

It may seem daunting, with all the processes and stages involved, but the experience along the journey is helpful to evaluate the progress of the project, and also to learn from to improve the experience for any subsequent projects. Project Management should be used as a 'tool' - it's clear that it greatly enhances and optimizes the process, incredibly so for a larger or more serious project. 

I've learned a lot on my journey so far. Project Management isn't just about identifying what you need, and making checklists to see your progress. It's about constantly learning and improving your development process. Along this journey, I have uncovered tools and processes that I will use for the rest of my life.

Because who doesn't love learning?

So until next time..
Bejasc... out!