Does solving coding problems at competitive programming sites like Codewars and LeetCode help you write better software? To what extent?
If you’re looking for work as a software engineer, one way to prepare is to split time between working on a software project that shows you can build complete programs, and solving coding problems of the kind they present at interviews.
What if you want to improve your system-building skills while you’re employed as a programmer? You’ll want to keep up the competitive programming practice in case you’re streamlined and need to resume the job hunt, but it would be nice to know how much solving coding problems improves software development skill.
The best way to find out is to track your own improvement in software development skill using a tool like Malloy and McNellis’ Code℞ program evaluator, which measures the quality of your code by traversing an abstract syntax tree representation of it.* You’d periodically run snippets of code through it and compare the quality with previous versions.
This quantified self approach will take a few months of tracking, but it’s a surer way to find out than waiting for the results of a formal study. Such studies could hint at possibilities, but would miss your specific coding habits, your self-designed practice regime, and myriad other factors that influence outcomes. If you’re already developing complete systems while solving coding puzzles on the side, why not track it?
Tools like this would be a great complement to programming interview questions. Instead of judging a prospective teammate based only on their performance during nerve-wracking whiteboard interrogations, making them question whether they want to be part of your team, evaluate the code they’ve written before.
* Abstract syntax trees are a way to represent source code so it’s easier for compilers to parse. For more details on how they can be used in code evaluation, see Construction of a Generic Program Representation for Automated Metric Computation.
Does solving coding problems at competitive programming sites like Codewars and LeetCode help you write better software? To what extent?
If you’re looking for work as a software engineer, one way to prepare is to split time between working on a software project that shows you can build complete programs, and solving coding problems of the kind they present at interviews.
What if you want to improve your system-building skills while you’re employed as a programmer? You’ll want to keep up the competitive programming practice in case you’re streamlined and need to resume the job hunt, but it would be nice to know how much solving coding problems improves software development skill.
The best way to find out is to track your own improvement in software development skill using a tool like Malloy and McNellis’ Code℞ program evaluator, which measures the quality of your code by traversing an abstract syntax tree representation of it.* You’d periodically run snippets of code through it and compare the quality with previous versions.
This quantified self approach will take a few months of tracking, but it’s a surer way to find out than waiting for the results of a formal study. Such studies could hint at possibilities, but would miss your specific coding habits, your self-designed practice regime, and myriad other factors that influence outcomes. If you’re already developing complete systems while solving coding puzzles on the side, why not track it?
Tools like this would be a great complement to programming interview questions. Instead of judging a prospective teammate based only on their performance during nerve-wracking whiteboard interrogations, making them question whether they want to be part of your team, evaluate the code they’ve written before.
* Abstract syntax trees are a way to represent source code so it’s easier for compilers to parse. For more details on how they can be used in code evaluation, see Construction of a Generic Program Representation for Automated Metric Computation.