logo
Published on

What Can You Do to Improve Your Logical Thinking?

featured Image
Authors

Consider these strategies to increase your programming critical thinking if you can't exactly travel a mountain for deep thought:

Understand the intricacies of your run time.

The runtime complexity of a programme, often known as Big-O, is defined as the number of steps executed on each instance in proportion to the size of the input (n). The first step is to keep track of how long your programmes are running.

Understand your data structures.

Every complicated programme has data structures at its core. It's an art in and of itself to know which structure to employ in whatever situation. Data structures are inextricably linked to runtime complications, since selecting the incorrect structure might bring your applications to a standstill. The cost of searching an Array for a value is O(n), which means that using Arrays becomes increasingly expensive as the amount of your input grows. Because hash lookups are O(1), the lookup time for a Hash key will remain constant no matter how many keys are in the Hash.

Candidates have claimed that an Array searches quicker than a Hash. This was a clear indication not to hire them – be aware of your data structures.

Read/watch/listen

Udemy, Pluralsight, and Codecademy are excellent sites for learning new programming languages. Books on general engineering ideas, best practises, and coding styles are good places to start for the basics. Design Patterns, Refactoring, Code Complete, Clean Code, and The Pragmatic Programmer, to mention a few, are highly recommended publications for engineers. Finally, every engineer should have a copy of "Introduction to Algorithms" on their desk as a backup.

Practice!

You can't become a master violinist without putting in a lot of practise time. Thousands of challenge issues may be found on sites like HackerRank, CodeWars, CoderByte, TopCoder, and LeetCode, which are meant to put your understanding of data structures and algorithms to the test. I've found that the best way to use these sites is to solve the problem yourself, put your solutions on Github, and then look at the top solutions for that topic to see how others solved it. Which brings me to my last point:

Look at the code of others.

Going it alone is the biggest error you can make when it comes to software development. The majority of software development is done by volunteers. We set standards collectively, make errors together, and over time, we figure out what works (by failing a lot). Investing the time to understand the code of experienced engineers will always pay dividends. Just make sure the code is sound.

The most important piece of advise I can give you is to never be ashamed of what you don't (yet) know. As I previously stated, this sector is huge, with a large number of languages and a lot of information. It takes a lot of time and work to obtain an understanding, even more time and effort to gain competency, and even more time and effort to gain mastery. When I get there, I'll let you know.