What follows in this section might sound foreign to some readers, but don’t skip over it. I consider these my core elements of development success, that is, they are non-negotiable. Even if you don’t understand it all, it’s important to get familiar with these concepts. Later, I’ll provide tips on how to manage it all from a high level perspective.
Cream of the Crop
The top 10-20% of developers will have a setup that includes three essential elements:
- Code Climate
- Continuous Integration
If you, or your team, are not fluent in these tools and services, then you’re not keeping pace with the industry leaders. So get up to speed!
Know Why Testing Matters
One of the most important aspects of development is testing. If this issue does not come up, it’s a warning sign for poor quality. The best developers in the world are also testing experts. If you do not have this knowledge, hire someone who does. Avoid hiring anyone who doesn’t. If they tell you testing will slow the project down, they’re probably covering up the fact that they don’t know how to test.
My first book
I remember, about a decade ago, I read a book for the first time. Really. I was in San Francisco working on a project, and I had a free afternoon. So I strolled into one of the world’s largest bookstores to see what was on the shelves. Before then, I had read maybe two books in their entirety all my life. At the store, I discovered tons of books about programming written by successful pros that had years of experience. Then I thought, “Wouldn’t it be cool to read every book that exists on Ruby?” So I scooped up all ten and read them all, cover to cover.
I was blown away by the idea of books, not just about programming. A books takes an entire person’s experience and sums it up in a few hours of reading. You could never spend that amount of time with the person and pick their brain. A book lays it all out there for you, and you can go back to it again if you want. The value is incredible. Since then I began to consume books voraciously.
In my course of reading, I learned about testing. Every single great programmer and developer raved about the importance of testing.
Types of Testing
There are many different types of testing. There’s no general consensus about the best type of testing or the timing. I prefer to execute low level model tests, controller testing, and high level integration tests. That being said, I don’t do all three all the time. Experienced developers will implement testing as they see fit.
Train, Learn or Hire?
Can you train someone to learn about testing? Yes, but the learning curve is quite steep. While you should update yourself, the most practical solution would be to get a testing expert on board sooner than later.
Tests Save Time and Money
Once you have the tests in place, they’re useless unless you run them. For example, you might want your code to do A, B and C. Then a second set of code says I want to make sure A, B and C are working. You run the tests before you deploy your next version of the application.
Two sets of code may sound redundant, but in a project lifecycle sense, you save time. Manual testing takes 3-5 times longer than using testing code. Plus, embedded test code is always there. You always know the code is working which makes the intrinsic value greater. Otherwise, you have to go back into the code to check every single time – big waste of time.
Don’t Be Afraid of Commitment
Currently, I use GitHub. It’s is a version control repository (“repo”) service that uses Git technology to track code versions. Subversion is another service used by many. These services allow you to visualize every line of code, when it was written, and who wrote it. If, for whatever reason, a client denies you GitHub access, you might not want to work with them. It’s that critical.
When using GitHub you should see frequent commits, say every two hours or so. Google’s engineers make about 45,000 commits (changes) to their repository each day. This record of changes to a file should also be specific. If you see one word commit messages like “update” or something ambiguous, there’s a problem. Instead, you want something much more detailed like “move exhibits and transitions as inner route switch”.
High Level for the Less Tech Savvy
Another great feature of GitHub is that it integrates smoothly with Code Climate. This allows you to go in and check your test coverage for a project. It looks at the style and quality of your code, and it’s great for non-tech people to oversee work teams. It can also show you if you’re hitting the 80% test coverage threshold that I demand for all my projects.
Another vital tool is Circle CI (Continuous Integration) which determines if your tests are running before a deployment. So you run your tests before things go live.
Again, if you aren’t an expert in these tools, hire one. Also, get as familiar with these services as you can, for example, by understanding the dashboards.
What should you do?
It’s not always clear when you deep in the situation. If you are in a difficult spot with managing developers or vendors, I have experience that you can leverage. Tell me about your situation so I can help. To set an appointment with me simply click this link to reach out. Something else on your mind? Whatever you need, I’m here. Life is meant to be done together, just reach out.
This post comes from my upcoming book, Modern CTO. Pre-register for a copy here.