Is there an "ideal software development project," and, if so, what are steps you should take to achieve this ideal state? There are strict guidelines and best practices for different software development methodologies such as scrum or extreme programming, but I have come to the realization that it's not always possible – or wise – to strictly follow these processes.

It doesn’t imply that we don’t strive to accurately implement these methods; we just need to stay flexible. As part of this flexibility, we should think about overall structures that make a project successful and how consistency and coherence can improve your odds of achieving the "ideal." Because there isn't a "playbook" on the components of the ideal software development project, we pulled together some of our most tried and true best practices that make software development projects at Dialexa work better:

1. Code Simplicity

Strive to keep your code simple.

Code simplicity is an idea that came from Max Kanat-Alexander, a software developer at Google and Community Lead and Release Manager of the Bugzilla project. The idea is to reduce unnecessary complexity in software development. The code simplicity movement goes hand in hand with other software principles such as DRY (Don’t Repeat Yourself), introduced in the book The Pragmatic Programmer, and YAGNI (You Aren’t Gonna Need It), a mantra in agile development. Max has some interesting posts on this idea in his Code Simplicity blog.

Our End to End Guide to Product Development

2. Testing

Continuously test from end to end.

Initially I was a skeptic of Test Driven Development (TDD) as it seemed too prescriptive. Over time, I have realized that TDD gives you more confidence regarding your code quality. On the other hand, Behavior Driven Development (BDD) allows you to learn the features and requirements directly from the customer and that alignment translates into code that is closer to the users’ needs. Full integration testing ensures that all components are working together as expected and increases code coverage.

3. Code Coherence

Keep it consistent across your team.

When working with a team, it's important to have a consistent style guide for your codebase. If you have a codebase where you CAN tell who wrote a particular file then there isn’t consistency between authors. There are many tools to enforce consistent style; here are three we like:

  • JSCS (Javascript Style Checker) is a JavaScript linter which also has a great formatter.
  • ESLint is an extremely configurable linter and has gained a lot of popularity in the community.
  • Editorconfig is a tool to enable consistency between the many editors and IDE’s that your developers use.

coding_image_1

4. Code Reviews

Don’t be shy, allow someone to check your code!

Everyone makes mistakes. An attitude which allows you to acknowledge imperfections is the first step to investing your trust in a code review. Having a colleague read over your pull requests before merging is a good way to ensure final code quality. Code reviews help reduce bugs in the product – that's the bottom line - so give up that idea of perfection. “The Code Review Mindset" is a great article on the importance of code reviews.

5. Estimation

Set your time and budget estimates realistically.

A realistic budget keeps your software project from feeling too much pressure. With agile methods, this enables the scope to flex more easily as the project progresses, but an estimate that is truly off can cause problems in quality, morale and output. Estimation can be quite tricky – as it's hard to find a happy balance between being realistic and sandbagging when there are so many unknowns. Rest assured, better estimation comes with experience, and there are many tools available to assist with software development project coding estimates. Here is a good list to start.

coding_comic_strip_2

Conclusion

In reality, the “ideal software development project” may never exist! Each project has its own characteristics, flaws, joys, sorrows, dreams, features, users, bugs, codebases, test cases and many other components. Hopefully these concepts make your projects more consistent and coherent. When in doubt, share your knowledge, encourage trust among your development team, stay positive, and remember - you will ship!

Learn more about how Dialexa improves the software development process, including our approach to the new product development process.

Image #1: http://imgs.xkcd.com/comics/code_quality.png 

Image #2: http://imgs.xkcd.com/comics/tasks.png

 

 

Be in the know.

Sign up for updates.

Click to Comment