How to approach a new project

TL;DR Understanding the purpose and goals of your client will help you develop meaningful and efficient code. Focus on one task at at time.

Approximate reading time: 3 minutes

As a consultant here at Liferay there are plenty of great clients to work with. Each engagement provides me with the change to develop my skills and design process. I had the opportunity to be a part of project last year that taught me a number of important skills. These are not necessarily unique nor are they new; however, I have found there are many advantages to be had from reading different insights. I would like to share a couple things I learned from my last project.

Imagine working with over a thousand pages that provide visitors with important information. The pages have been developed over a long period of time and there are many different design patterns used. Imagine being told you need to migrate these pages from where they currently are to an instance of Liferay. It is going to be a long process, it is not going to be easy, and there are a number of tools that will need to be developed. Remember your towel and don’t panic.


Don't Panic

 

When I approached the tasks I was given I panicked. I tried to do too much at once and thought that if I concurrently developed my tasks for my client to see they might be more pleased with the project. This was the wrong way to approach my problems. Towards the end of the project there were a number of loose ends that needed to be taken care of. These were problems that could have been avoided if I would have stayed focused on one task at a time. I’ve learned a lesson from Ron Swanson, “never half ass two things, whole ass one thing” thanks Ron.


Ron Swanson saying, 'I'm really proud of you.

 

The ambition to accomplish goals is great. I had a lot of joy seeing the puzzle pieces come together during the project. The only problem is that deep understanding did not back my development. My code was functioning (not always perfect) yet I did not understand my client. The gap in understanding quickly led to cynicism and project fatigue. Take the time to understand your client and know why they exist. Taking the time to understand the how and why of your client before you develop will give you direction and clarity to create clean and useful code.

There was a lot of stress in my last project. Client frustration and daunting tasks quickly gave way to stressful weeks and late nights. It was not until about half way through the project that I reevaluate my motives. I lost sight of the goals of the project in my stress. It was a blessing that I was concurrently playing bassoon for a friend’s musical composition. Doing something I loved allowed me to approach my project with a new perspective. As a developer it is necessary to take time away from the computer to invest in the people and things you love. These moments were crucial for developing a greater appreciation for web development.


Person walking away from computer

 

There are a lot of potential frustrations that can come when working with clients. There will be mistakes made and lessons learned. I’ve had to come to the realization that as the web continues to change, my work will probably be redone by someone else sooner rather than later. Understanding the heart of the client’s organization helps you to create a good product that will be out live any revisions.

Plus d'entrées de blog

Blogues
One thing that I have learned is to not get emotionally attached to your code. Because with one swift business management decision it can be thrown in the trash.

It is important to create great code and think how another developer might be able understand your code down the road. Also what is realistic with the current deadline situation..
Hey Brad,

That is a great point. I've made that mistake before and it is definitely a downer when it happens.

I agree with you. If you can write your code in such a way as to limit documentation that is great. Of course documentation is necessary, but if we can write code that is simply and reusable that is better. Thanks for your input!