Image for post
Image for post

The shortest path problem at its core is very simple; find the shortest path between two nodes, or vertices, in a graph while accounting for the weight of the connecting edges. There are an ever-growing number of solutions to this problem. In fact, once you understand search algorithms there is no reason why you couldn’t write your own search algorithm. In the meantime, it might just be best to use tried and tested algorithms that are known to work, and known to work well.

This list is not at all comprehensive. There is a nearly inexhaustible list of search algorithms that exist if you account for adding heuristics to to them. A heuristic is a function that modifies the algorithm to help provide an adequate solution at a faster pace. I say adequate, because what you make up in time you lose in accuracy. Sometimes a heuristic will modify a search algorithm to get you a solution that is very close to optimal, but isn’t optimal. However, for certain situations, such as non-playable character movement in a video game, decreased runtime is worth the sacrifice in accuracy since memory is at a premium. …


As a budding software engineer I received my first taste of algorithms through watching a popular YouTuber present interview questions as coding challenges to other engineers. I was blown away by the complex problems that these engineers could solve in a matter of minutes by implementing specific algorithms with their code. I rushed to my favorite search engine to search all of these new terms I had been hearing. What is Kosaraju’s algorithm? What are strongly connected components? What is an articulation point or a bridge?? Every time I looked something up I realized there was a more rudimentary principle that I needed to learn first. …


Image for post
Image for post

RSpec is an incredibly powerful Ruby/Rails meta-gem that allows your to write very simple tests that test the efficacy of very complex code. It’s a meta-gem, because when it is bundled it includes multiple different versions of the same basic gem. Each version can be used for specific purposes or with specific versions of Rails. When I reference RSpec, I will be referring to the meta-gem, not a specific version.

Test-driven-development is a very important skill to possess as a software engineer, but knowing where to start can sometimes seem a daunting task. I spent weeks in a software engineering bootcamp writing methods and models in labs that were thrown at me day after day. I would run the tests that my instructors gave me to run to see if my code worked. We chased the green response (you will soon know what I mean) like our lives depended on it. I quickly realized that if I learned to read the tests that I could write the deliverables at twice the speed. It only recently occurred to me that had I learned to write the tests at that time also, that I may have been able to increase my performance to another degree. …


Image for post
Image for post

For budding software engineers, the first pair-programming project is usually clunky and disjointed. All coding experience up until that point has most likely revolved around listening to lectures, doing code-alongs, and practicing in some form of a shell inside the terminal by one’s self. I certainly know that mine was. Then along comes that first pair-programming project. Two people must join forces to solve whatever problem has been placed before them with little-to-no experience at doing so in group setting.

The questions begin flooding in. Who will do what? How will we share our code with one another? What if I make a mistake and it breaks my partner’s code? What if I leave my camera on during the Zoom call and do something embarrassing? What if we have completely different ideas as to how to approach the problem. …

About

Christopher M Clark

A climate scientist turned software engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store