May 27, 2015

Not everyone needs to be a software developer...

...but everyone should learn to code. I have friends who are pharmacists, lawyers, police, firemen, military, mechanics, and musicians who also write code to help them out in their jobs. Software is a tool, a versatile and powerful tool, that can be applied to any occupation or industry. Learning to code is a 21st century skill that should be required in every middle school and high school in the country.

I'm not alone in this belief. There are lots and lots and lots of organizations dedicated to helping people learn to code. Even the Prime Minister of Singapore posted a Sudoku Solver that he wrote while an electrical engineering student as encouragement and an example to the world that we need more people who can code.

I think that code may have been more approachable when I was learning. The video games we had were blocky and you could understand how they could worked with a minimal amount of instruction or none at all; how many versions of breakout and lunar lander must have been written by enthusiasts. Today, it takes a small army of developers and artists to create even the simplest console video game. But mostly, I think that there are so many problems that are already solved, and that they are too easy to get on the internet; what's the point of doing something that takes thought and creativity when more complete solutions are available at the click of a mouse for free? The point is in the joy of discovery and creation.

So, I sat down with my son and we wrote a Sudoku Solver in C#. I've put the source code on a Github gist. Feel free to use it for any purpose you want. My goals were to make it compact, easy to read, and efficient.