<div dir="ltr">+1 for Jim's advice.<br><br>I write code for a living, and that's essentially what's it's about (background note: I do not have any significant collegiate background in CS or Mathematics, and no formal exposure to algorithms).  Know (or learn) the problem domain, and the essential steps to create the solution.  Once they are understood representationally (in one's own mental spaces), expressing the solution in any language becomes much more tractable, and less prone to logical missteps.  You can always look into formal algorithms if you feel the need to optimize or otherwise re-factor (or simply for didactic reasons).<br>
</div>