Playing Battlesnake has helped me become a better programmer. I've used it to gain experience in multiple new (to me) programming languages as a freeform way to practice without deadlines, I've learned new algorithms and how they apply to game solving, and I am beginning to understand how many game-solving algorithms can be applied to more practical applications since "games" in the game-theoretic sense can just as easily be models of real-world situations where the players are rational people instead of "game" participants. For example, "pathfinding" and "decision making" has many parallels.<p>Learning game tree searches such as minimax, MCTS and CFR is teaching me about tree/graph algorithms and data structures, how to work with, reason about, and test explosive search spaces where the entire tree can't be feasibly completely exhausted, in the process of researching these things I've learned to read whitepapers in the literature that would otherwise be scary to me as a developer and actually care to understand the math, it inspired me to tinker with Formal Methods including TLA+, and all the while having fun and making friends.<p>Learning Goal Oriented Action Planning, or GOAP (which I actually didn't apply to Battlesnake in the end, but I never would have found it if I wasn't looking) helped me optimize my real-world productivity by translating the concepts from game AI to personal task planning. In my head there is an analogy now between handling backlogs according to the current working context, and a GOAP-like stack based finite state machine. Learning a simple game algorithm helped me procrastinate less.<p>For newer developers, you'll also out of necessity learn many real-world web development and ops concepts because the way Battlensnake works is that you run your own web server conforming to their move API. So you have to keep your snake AI up and reachable, responding to each request within the allotted timeout, and know the basics of HTTP on day one. Games can also run concurrently so you learn how to deal with concurrent games and whether to make them stateful or stateless between turns, which can be a different experience on different web frameworks/languages and might teach you about things like threading or the actor model or distributed systems.<p>For advanced developers, there's always somewhere to go next. Your snake AI can be anything from hard-coded rules to tree searches (as mentioned above) to deep reinforcement learning.<p><a href="https://play.battlesnake.com/" rel="nofollow">https://play.battlesnake.com/</a>