The joke goes that, when asked, the software developer responds that their New Year’s Resolution is “7680×4320” or 8K. Joking aside, tradition has it that at the turn of the year we evaluate our lives and look for areas of improvement. Here are a few of my software development related New Year’s #CodingResolutions!
- Unit Test More: DUnitX and TestInsight being my tools of choice. Most of the code I write is integration code, integrating component A with control B, and I use that as a justification to not unit test it. But when I do write library or component code, I try to create a unit test for it. I find it very useful to do so and am always working to be more consistent.
- Take a course on Embarcadero Academy: There are a few free courses, as well as some premium courses from the top trainers in the community. Something there for everyone to learn from.
- Get better at using version control on personal projects: Version control is a must when you are collaborating with others on a project. I remember the first development job I had where I was working with other developers. We emailed code back and forward. We used the archived history of emails if we needed to roll back to an earlier version. The lead developer maintained the “authority.” Needless to say, this was a mess and didn’t work very well. RAD Studio has a great history feature that automatically backs up the last few versions of your files when you save, and you can set it to save on execution (a great idea), so it might seem like version control isn’t as necessary on non-collaborative projects. This just isn’t true. The IDE will integrate into today’s top version control systems, so there is no excuse not to. I signed up for a paid Developer account on GitHub, which is where I keep all my projects. BitBucket is another popular choice, which offers private repositories for free, but charges you for collaborators (the opposite model of GitHub). BitBucket offers Mercurial too. Which system do you use?
- Setup my own Continuous Integration server: If you don’t have an automated, repeatable build process, then you don’t have a release. Designating one of your developer’s computers (even if that is you) as the build server is not a valid solution. If you are going to have a Build Server, then you might as well have CI (with automated Unit Tests!) so you know your build is always good. Craig Chapman provided a recent webinar on setting up your own Continuous Integration system with SVN & Jenkins. Jenkins is a popular solution for CI that even offers a RAD Studio plugin, but if you want to simplify things, take a look at Continua-CI from VSoft.
- Automate more with DevOps: Version Control and Continuous Integration are the first steps in DevOps as a developer, but there is more. Everything that can be automated should be automated.
- Pay attention to Warnings, Hints, Static Code Analysis, Audits and Metrics: One of the beauties of using a compiled language is we have a compiler that will immediately detect a huge number of errors, which we must fix if we want to even use or test our programs. The compiler also provides a number of Hints and Warnings that frequently indicate your program might not function exactly like you intended. I have a policy of always addressing Hints and Warnings too. I’m also a big fan of FixInsight, which really expands these compiler messages in so many useful ways. Our favorite IDE also includes more options to keep your code fresh and maintainable: Code Toxicity and Audits and Metrics. The Code Toxicity is available in all editions and provides some simple static code analysis for things like Cyclomatic Complexity. Keeping an eye on these is a good way to make sure your code is maintainable and less likely to have unintended behaviors. The Audits and Metrics takes this to the next level with a lot more detail. And it’s included in Enterprise and Architect editions.
- More focus on best practices and software security.
- Do more with RAD Server. I’ve done a lot of building REST clients and they are great. I’ve done some basics of building REST servers but would like to do more. RAD Server is a great solution for building REST services.
- Deploy RAD Server to the Cloud. I’ve done a little with Amazon Cloud Services and that is what I am thinking about doing, but there are a lot of other great cloud hosting options out there to consider.
- Keep Exploring the Amazing 3rd Party components from all the great Technology Partners. The GetIt Package Manager makes it easy to install a new component or library.
- Build some Neural Network and Artificial Intelligence solutions with Delphi. This is something I’ve always been interested in but never implemented. There are so many advances in this field right now, which makes it even more exciting. Additionally, there are so many promising libraries available for Delphi. Boian Mitov of Mitov Software has IntelligenceLab. Dew Research has a great looking math engine. And then RiverSoft has a serial of libraries for Genetic Algorithms, Fuzzy Logic, and an Inference Engine. You can check out a video about IntelligenceLab today. I’d love to see an IDE add-in that uses neural networks for static code analysis and help with writing code.
- Beyond all of that, I want Blog, Podcast, and create more training videos.
How about you? What are your New Year’s #CodingResolutions?