You’ve just received a request for a new CFML project. So what’s next? Without a clear plan, your project can turn into a nightmare very quickly. However by following a few simple guidelines and practices, you can develop your dream project. From start to finish, maintain control of your project to ensure success all around. Let’s take a look at what you can do to run a successful CFML project.
“First, have a definite, clear practical ideal; a goal, an objective. Second, have the necessary means to achieve your ends; wisdom, money, materials, and methods. Third, adjust all your means to that end.” – Aristotle
Hiring a Developer
Hiring a developer for your ColdFusion project is one of the most important steps for a new CFML project. Be sure to do you research and find a developer that is right for your needs. There are many different problems if you hire a bad developer:
- Bad code with more bugs and server crashes
- Poor hiring increases your turnover costs
- More stress on management
- A decline in team morale
- Lost time due to re-training
- Steep learning curve for your incoming developer
The costs really start to add up. Fortunately, we can make the right decision when hiring a developer by looking for certain desirable traits. Professional characteristics that an ideal developer should have include:
- Writing great programs that are user-friendly.
- Great coding skills to minimize bugs and post-production corrections.
- The ability to solve problems in a simple manner that are easy to apply.
- A good team player.
- Vast technical ability. An ideal developer is proficient in a variety of areas, not just CFML.
- The ability to maintain a balance between productivity and speed.
Along with desirable professional traits, take a look at your developer candidates on a personal level. This is particularly important if they will be working as part of a team. A single person can bring down an entire team.
Proper Tracking Management
Once your hire your ideal developer, you must establish proper development systems. A key system is your tracking management system. Not having a proper system has many negative effects that can be detrimental to your project. These include but are not limited to:
- No regular way to keep track of progress
- Waste of time and monetary resources
- Overwhelmed teams and low group morale
- Unnecessary scope creep
- Unorganized and discombobulated communications
A great way to keep your CFML project Alive and healthy is to update or revamp your tracking management system. The benefits to doing so are almost limitless. You can get so much more with a great tracking system than without such as:
- Different access levels for clients, testers, developers and managers
- New issues can be classified as bug reports
- Change requests available that include the date/time reported, who reported it, severity description of the issue, details on how to reproduce it, and screenshot upload
- Create a unique ID to reference the issue
- Assign issues to developers
- Auto status change of an issue between new, fixed, tested, out of scope.
- Workflow can automatically email the issue submitter and assigned developed on a status change
- And much, much more!
This can be accomplished through a number of ways. One way is through the use of bug catchers for your code. Popular bug trackers among CFers include:
Another element to changing your tracking management system is determining scope. Sometimes, scope and scope creep need to be determined. You should have a plan ready in case that is needed. A good way to do this is to have a dedicated two-person team to do this. One person should do nothing but review scope requirements against the project. The second person should only change the code of that which needs changing.
Remember, scope changes to the project should be informed to the client. This can be done through a friendly email. Be sure to have regular meetings with your client in order to keep the up to speed with the project. Sometimes, the client has a requested change to the project. These changes can be fine as long as they are within the scope of the project. However, there needs to be a change process established between you, your team, and the client. Clients do not need to be communicating directly with the developers. Instead, have them speak with the project manager. Your PM should be able to handle any issues that arise. If a client does circumvent the system, backup your developers and help them to politely say “no” and guide them to the PM.
Follow Best Practices
Best Practices are procedures that show research and experience to produce optimal results. But why is following them so important? Without Best Practices, your project can quickly turn south.
- It can consume many more working man hours than need be which can lead to an unnecessary loss of profits.
- Not following can also lead to many more bugs and code problems than estimated.
- Rework can lead to a decline in team morale, loss of profit, and even more code issues.
- Failure to follow can lead to a huge surplus in technical debt. According to techopedia.com, technical debt is:
“… a concept in programming that reflects the extra development work that arises when code that is easy to implement in the short run is used instead of applying the best overall solution.”
Needless to say, it is very important to follow best practices. Best practices do have a catch though. They’re are not always the best. Nolan Erck explains why:
“…it might be a best practice today, but may not have been a best practice five years ago. And it might not be a best practice five years in the future.”
That’s right. Due to the ever-changing world of technical improvements, some best practices may become outdated or improved upon. Make sure you stay active in the CF developer community to know exactly what best practices are still the best.
Increase your Project Agility
So what does it mean to have an agile project? According to cio.com, Agile is a project management methodology that uses short development cycles called “sprints” to focus on continuous improvement in the development of a product or service.
As far as agility goes, there are many benefits for both your company and your CFML project.
- Increased Flexibility
- Increased Transparency
- Increased Productivity
- Minimizing of Missed Goals
- Higher Quality Projects
- Increased Client Satisfaction and Engagement
An agile cycle normally consists of 5 stages. This a cycle that repeats itself until the project reaches completion.
Agile development is exceptionally useful in software development projects –such as a new CFML project. It makes it easier for development issues to be identified quickly. This reduces the waiting time for correction. Improvements can be made immediately without having to wait until testing has been completed. A more agile project offers reduced risk and complexity which can lead to a much better project turnout.
Agile itself is just a blanket term that covers many different methodologies. These include:
- Extreme Programming (XP)
- Dynamic System Development Method (DSDM)
- Lean Development
- Feature Driven Development (FDD)
All of these methodologies are unique in their approach; yet follow the same core principles of Agile programming and project management.
Related: 078 Agile ColdFusion API Development (Amazing Postman, ColdBox and Agile secrets) with John Farrar
Modern Testing Processes
Another important step in developing a new CFML project is testing. During the 2018 State of the CF Union Survey, we asked CF’ers what automated testing platforms they used. The results turned out to be rather surprising. A whopping 54% of CF’ers polled do not use any automated testing or mocking frameworks. It’s incredible to learn how many individuals skimp on such an important part of development. Poor testing (or complete lack thereof) can lead to so much heartache and grief after deploying your CFML project. Too many bugs during production and deployment can easily be prevented through a proper modern testing process. Another problem that can easily be found with testing is exceeding data load limits. Testing can help you identify these issues prior to them getting out of hand.
Fortunately, we have a wide array of testing solutions that we can use to make our projects the best they can be.
- Formal Acceptance Testing
- Code Review
- Use of Staging Server
- Automated Deployment Scripts
- Load Testing
- Use of Automated Testing and Mocking Tools
Only 46% of CF’ers polled use testing or mocking platforms. Those are rookie numbers! We gotta pump those up.
Related:077 Fundamentals of Unit Testing, BDD and Mocking (using TestBox and MockBox) with Uma Ghotikar
Prior to deployment, you must first make sure that all your scalability concerns are answered. It would really suck to find out that your hard worked project cannot handle the load it needs to. You want your ColdFusion projects to be able to handle any amount of traffic that comes to them without any hiccups. Poor scalability can lead to slow projects and server crashes. Under peak loading, your CFML app would be rendered useless. That’s why it is pivotal to address these issues prior to deployment.
The most important thing when it comes to scalability is designing your code and databases to be scalable. The best way to figure out how much load your project can take is to hit it with simulated traffic. There are many useful tools that can be used to do this, most notably the free Apache JMeter. Remember, when simulating load, simulate realistic data. SQL statements that run fast with a hundred test rows of data may run slow as a snail when millions of rows are there.
Related: 062 Scaling Your ColdFusion Applications (Clusters, Containers and Load Tips) with Mike Collins
Deployment and Hosting Options
After your final testing is complete, your project may be ready for deployment. Deploying your project can be a very exciting time in the development process. This is when you can see your hard work really come to life. However, there are still some concerns when deploying your CF app. Primarily, how will you deploy? There are many different options including dedicated servers, managed servers, shared hosting, and cloud hosting. Which is which? And which is right for you?
To put this in a metaphor, shared hosting is like a hostel dormitory. You share a room with all the other people. If someone gets drunk and throws up on the bunk bed, you have a problem. A managed server is like an apartment complex where there are other apartments but they are walled off from each other. A dedicated machine is like having a detached house – you have to furnish it and fix the faucet when it leaks. Still some work, but you don’t have to worry about your bed being vomited on. Cloud hosting is like having a virtual dedicated house – one that you can instantly clone for more space when a horde of out of town guests arrive.
Right now, the number one solution for deployment is Docker. Docker is a containerization program that makes your apps more scalable and more reliable. However, all options should be considered when making your choice for project deployment.
Related: 066 The Docker Revolution for Faster ColdFusion Development (and Easier DevOps) with Bret Fisher
In summary, there are many steps and factors to consider when starting a new CFML project. By thinking things through and planning ahead, you can easily overcome any obstacles in your way to a successful deployment.
And to continue learning how to make your ColdFusion apps more modern and alive, I encourage you to download our free ColdFusion Alive Best Practices Checklist.
Because… perhaps you are responsible for a mission-critical or revenue-generating CF application that you don’t trust 100%, where implementing new features is a painful ad-hoc process with slow turnaround even for simple requests.
What if you have no contingency plan for a sudden developer departure or a server outage? Perhaps every time a new freelancer works on your site, something breaks. Or your application availability, security, and reliability are poor.
And if you are depending on ColdFusion for your job, then you can’t afford to let your CF development methods die on the vine.
You’re making a high-stakes bet that everything is going to be OK using the same old app creation ways in that one language — forever.
All it would take is for your fellow CF developer to quit or for your CIO to decide to leave the (falsely) perceived sinking ship of CFML and you could lose everything—your project, your hard-won CF skills, and possibly even your job.
Luckily, there are a number of simple, logical steps you can take now to protect yourself from these obvious risks.
No Brainer ColdFusion Best Practices to Ensure You Thrive No Matter What Happens Next
Modern ColdFusion development best practices that reduce stress, inefficiency, project lifecycle costs while simultaneously increasing project velocity and innovation.
√ Easily create a consistent server architecture across development, testing, and production
√ A modern test environment to prevent bugs from spreading
√ Automated continuous integration tools that work well with CF
√ A portable development environment baked into your codebase… for free!
Learn about these and many more strategies in our free ColdFusion Alive Best Practices Checklist.