Let’s Talk Code Quality Tools
Shortcuts to Learning Kotlin
How the $170 million Ethereum bug could have been prevented
Disclosure: Codacy, the automated code reviews platform, has previously sponsored Hacker Noon. For Hacker Noon readers, they’re offering 15% off using this code: HACKERNOON.
For Hacker Noon readers, we’re offering 15% off using this code: HACKERNOON.
I noticed you went to school in Lisbon. Apart from basically having its own golden gate bridge, thats pretty far away from silicon valley. What inspired you to start a career in software?
While growing up, I was always a bit of a geek. My father taught IT in a local Uni and, on school breaks, I would always go with him and help him reconfigure the machines for the new school year. This involved OS installs, local network setup, etc. Of course I would initially only do as I was told but quickly started experimenting on old hardware left behind. Besides leaving a trail of broken machines, it left a special feeling regarding IT. When I was 16, my father gave me my first compiler (it’s crazy how hard it was to find them back then) and that was it.
You then moved to the city (London’s financial district), what was the change like. Do you have any cool stories?
From my time in the UK, I really saw how different software development can be; I went through a project that worked with pure waterfall methodologies: a architect spent 9 months planning and, after this, we came in and in 2 months implemented the system, to a fully agile environment, sometimes where requirements would change on a weekly basis. In Portugal, I only had contact with a small number of teams, and working with these completely different methodologies was a really eye opener. I even spent 6 months (6 really hard months) where, due to change requests and legal proceedings, I was only allowed to write 1 line of code. In 6 months. That’s all I was requested and allowed to deliver.
What inspired you to create Codacy?
I would have to say that my partner, Jaime Jorge, was the driven force behind it. Although I had started a master in Software Quality before, and started my career with a huge influence from Martin Fowler and Kent Beck teachings, it was not until I met Jaime and learned from his vision that I bought into the idea that this was what I really wanted to focus my career on.
What have been the biggest challenges in creating Codacy?
The biggest challenge for me, is the one that we are trying to work on *right now*. It has been changing throughout the time and, everytime we tackle something, another something new comes up. Sometimes it’s tech related, sometimes people related, sometimes both.
What’s the most surprising thing your customers have asked you?
Thankfully, Codacy has been evolving since it began. It has been through several changes and, nowadays, it offers such a complete solution for static code analysis and code quality. Some of this was part of our vision but, to be fair, it is also part of our customers’ vision. They have been the drive for us to improve and to deliver on a tool that can actually help them ship software faster. Sometimes, customer requests are met with surprise, but all of them are a part of a pain that they are facing, so we always try to meet them with an open mind and understand what they are trying to fix with each request.
What interesting thing happened early on that made you change a viewpoint?
Initially, Codacy was configured one branch per project. The idea was more to monitor the master branch and other branches could be configured as their own projects. Before the app was in alpha, we understood how wrong this would be moving forward :) Nowadays, with git flow, pull requests, etc, we can see how this ‘minor’ change in the beginning, was core to what we have delivered since then.
As a developer, how hard is the process of hooking Codacy into my workflow? Is it clicking a button on github? Can I use an on-prem version of it?
To use Codacy in the cloud (codacy.com), it is a matter of clicking a button. If you want to use the on-prem version of it, it’s a one liner in bash to install. From then onwards, it’s just like in the cloud, but on your own infrastructure / cloud provider.
What’s the most common issue you see from coders, is it something simple like DRY, or something like performance / overoptimization / not catching bugs?
It’s hard to generalize like that, as it depends on several variables: language, team experience, frameworks used, etc. We see that automated tools only get you so far, and the real value is to have a mix of automated and manual review. If I had to choose something to make sure any team working with me to have extra care it would be to properly architecture a solution before implementing it, making sure the required abstractions and code patterns are considered and applied. For everything else, tools like Codacy can help (and, of course, proper monitoring and logging)
How do you figure out bugginess? Mutation testing?
Testing a application is mandatory and should be part of the certification process of a software but is not the part that Codacy helps you by automating. We do automated code review through static code analysis, meaning that your code never runs in our servers. Codacy goes through your codebase and, as a simplistic way of explaining, from the list of thousands of existing and previously identified problems related to your language and frameworks used, we try to find which ones apply to your code and notify you of possible problems if those are not fixed.
You gave my code from 4 years ago (https://www.codacy.com/app/jayzalowitz/StocktwitsAPI/dashboard) an A. Which is awesome, thanks! How did you come up with this grade?
Congratulations on that A! We use a equation that takes into account any issue that we may have found out in the code (as just explained before), and mix it with your code complexity, duplication and, for projects that have it, your coverage details. Comparing your project with the industry standard then allows us to grade it. This grading system is something that we are currently improving and should have exciting news soon!
Can I programmatically hook you into CI/CD tools. Do you have guides for this?
There are a few guides for this, as the following from codeship (https://blog.codeship.com/integrating-codacy-with-codeship/). Depending on what you’re trying to accomplish (push coverage, break build, etc), there are a couple of different solutions. If you can’t find what you’re looking for, just talk to us and we will have something for your toolchain!
Im assuming you use Codacy to develop Codacy, can we get a screenshot of what your state is at right now?
Codacy is developed as a bunch (over 100) of smaller distributed services so there is (still) no unique view of Codacy within Codacy to show the full project status (check us soon for this ;). But this is a small part of it: