Development Process and Challenges Faced
During the latest buildout of the website, I was tasked with migrating the WordPress site to a better hosting environment. It had completely outgrown its previous shared hosting environment and was running into things like major performance issues and 500 server errors. I accomplished this by cloning the website to the new web host, and then made sure it was up and running before the next version of the site began development.
I cloned the entire website to my local development environment and would periodically push the changes up to the new web host's corresponding online development environment for the client to review. Due to the project's large size, I used code version control to keep track of daily work and changes to the code. I set up a repo for both the main WordPress theme as well as one for each of the custom WordPress plugins I was developing for the next generation website. This was handy as I could work on the same codebase from multiple different locations and computers by just pulling the latest changes and continuing on with work.
I developed a fully reusable dynamic sidebar widget system for the website using native custom post types and unique data fields for each widget type. The widgets could be included in sidebars on both pages, posts and other types of content. The single widget repository in the backend made updating the widget content in all locations the widget was used, a snap.
I worked with the client to extensively test each of the new features and ensured as much backwards compatibility was built in as necessary for the transition to the new editing experience and made sure it was as smooth as possible. Upon completion of a suitable MVP, the client worked on the content side of things simultaneously as I worked on all the features.
Multiple times during the development process, I had meetings with the client to go over how to use the new functionality that we developed as he was populating content. Overall, the process went pretty smoothly.
Since the initial launch of this new version of the website, I have collaborated with the client on a number of new functionality additions and merged them seamlessly into the production website. The additional work was very smooth thanks to the new development environments we set up during the initial build, which saved the client a lot of time and money.