5 tips to improve your development approach by focusing on fundamentals

There's no one-size-fits-all way to get better at using fundamentals. Developers with technical backgrounds (think computer science, engineering, and mathematics degrees) learn to think this way as part of their coursework; it's the only way to succeed in their classes. It takes time and practice. If you haven't already read my post on "Becoming a better front-end developer using fundamentals instead of heuristics" for an introduction to what fundamentals are and why they're better than heuristics.

Regardless of your background, here are five things that you can do right now to improve your problem-solving ability as a developer:

1. Recognize when you are confused and what you're confused about

This is the first step in learning to use fundamentals. If you're stuck, take a moment to identify what you don't understand instead of reaching for the nearest heuristic.

Maybe in one case, you don't understand some syntax used in a code snippet. Perhaps in another case, you're encountering a new function or method. In any case, identifying exactly what you're unsure of is crucial if you want to improve.

It's okay if you don't know what to call the thing you're unsure of; if you did, then you might not have been confused in the first place. Come up with the best description you can think of, or even multiple descriptions. These descriptions will be useful when you...

2. Seek out authoritative answers

For heuristics developers, the muscle memory response to confusion is to perform a Google search for the problem and copy code from the most up-voted Stack Overflow answer. Although Stack Overflow can be great for learning what something is called or determining new ways to solve specific problems, it is not an authority on the tools you use. To be a great developer, you need to move beyond heuristics and understand fundamentals.

Mozilla Developer Network (MDN) is a fantastic resource for looking up the language basics of HTML, CSS, and JavaScript. For example, instead of relying on examples of how to split a string in JavaScript, you can go to MDN and read the documentation for String.prototype.split and see exactly what arguments it takes and what its return value is. Searching "javascript split string" will likely display this MDN page in the first few results.

If you are unsure of how some aspect of a library like jQuery or React works, or if it behaves in a way you don't expect, go to its official documentation and find out how it is supposed to work.

Note that sometimes, when working with someone else's code, such as a plugin, it may behave unexpectedly. It might do something different than what its documentation says. Don't be afraid to look at the source code and find out what it really does, as opposed to relying on what it says in the docs.

3. Take the time to fully understand what you're working with

It's fine to use examples as a basis for solving your own problems, but you should make it a rule to never simply copy-and-paste a piece of code without understanding what it does.

When you need to modify an example, I recommend typing it out by hand instead of copying and pasting. You will inevitably encounter aspects of it that you don't understand and need to look up. Sometimes you will encounter code that you don't understand, only to discover upon investigation that it is completely irrelevant to your problem and can be removed. Had you copy-pasted the example, you would have ended up copying useless code, which will confuse anyone looking at your code and could lead to bugs.

When investigating a problem, you might encounter even more things that you don't understand. Continue to recognize what you don't understand. Investigate as many levels deep as you need to in order to solve your original problem. Although this might be slow at first, it will pay off significantly by making future problems much easier to solve.

4. Reduce the problem to programming language basics

In JavaScript, most of your work revolves around basic types like object, number, string, boolean, and function. Array and the other types mentioned are just special kinds of object. null and undefined are also important to understand. When solving problems, think about the data types you are working with and use their basic properties (such as their methods and basic language operations) to construct solutions.

Don't trust variables to be what they say they are, and don't trust functions to do what they say they do, especially in a dynamically typed language like JavaScript. Take the time to actually inspect the variable's data or read the function definition to see what basic data you are really working with. Again, seek out authoritative answers, take the time to fully understand what you're working with, and investigate as many levels deep as you need to understand the issue.

5. Continuously seek out new knowledge

Be willing to invest some of your own time into learning more about your tools. Take some time to learn about other tools, such as other programming languages, different libraries and frameworks, and concepts in mathematics and computer science. Even if you don't use your newfound knowledge directly, what you learn will give you new insights into tools you already know.

Another way to learn is through collaboration and absorbing good habits and best practices from teammates. Beyond project work and product development efforts, one way that I learn from my peers is our weekly RubyLunch—a companywide sharing meeting that (happens over pizza and) invites developers to share pain points, ideas, and solutions to carry our collective knowledge forward.

Education can be formal, like taking a class, reading a book, or working through documentation, or it can be informal, such as going on a Wikipedia crawl or performing a Google search of something you've been curious about. Both of these approaches are useful and will help you grow as a developer.

+++

We're hiring! If you're looking for an opportunity to work with an exceptional team of fundamentals developers focused on engineering forward-looking solutions, please check out our open positions today.