loading...
Cover image for Tip for beginners: There's no such thing as "weird" in programming

Tip for beginners: There's no such thing as "weird" in programming

owenconti profile image Owen Conti 🇨🇦 💻 Originally published at owenconti.com ・3 min read

Note: This is a crosspost from my blog. Find the original article here: https://owenconti.com/thoughts/no-such-thing-as-weird-in-programming/

After mentoring junior developers for over 4 years, and participating in online chat groups related to programming, the first piece of advice I’d give to new programmers is:

There is no such thing as "weird" or "coincidence" in programming.

That is, everything has an explanation. Whether or not you know (or understand) the explanation is what makes a problem feel "weird".

Computers are machines that are programmed to do specific actions when specific events occur. Let’s take a look at an example where a (now common) problem seems to be a weird one, but in reality has a simple explanation:

Physical example

A couple years ago, Apple released a new keyboard for its MacBook and MacBook Pro models. This new keyboard has a mechanism called the "butterfly mechanism" as opposed to the previous "scissors mechanism". The problem with these keyboards is that eventually keys will start double or even triple pressing when you type them. However, the problem randomly occurs and usually cannot be reproduced on demand.

This is the type of problem where you might think there’s some crazy software bug that "randomly" causes keys to be duplicated. However, in reality the explanation is simple: The new butterfly mechanism allows dust and small particles to become stuck under the key. Hence, when a key is pressed, the stuck particle may cause the key to stick or even be triggered again, causing the duplicate key press.

Software example

Even though the example I gave above is due to a physical defect, the same concept applies to software problems.

Unless you’re using bleeding edge technology that is unstable or doesn’t have comprehensive testing, the bugs you run into probably have a reasonable explanation, you just don’t know it yet.

One of the most common areas this type of problem could occur for new web developers is with CSS. I would define CSS as quirky and fragile, meaning very tiny changes can make a very big impact on the outcome of the product.

With CSS, it's very easy to hack and slash your way through problems to get something to "just work". Meanwhile, you don't actually know how its working behind the scenes.

Why is this a problem?

When you move on from a problem without understanding the cause, you don't learn anything. When you don't learn anything, you don't grow. When you don't grow, you stay stagnant. You get the idea 🙂

Note: I understand that not everyone has the luxury to spend the time required to fully understand a bug. If you can, set a reminder to come back in the future to revisit the problem.

Let's not forget, as programmers/web developers/whatever you want to be called, we're hired to solve problems. In order to solve a problem, you need to understand the problem. That's problem solving at its core.

The more you know in your area of expertise, the better you'll be at it.

In closing

I see this problem most commonly with junior developers, however it happens to everyone. Senior developers are not immune to it, but I believe part of progressing from a junior developer to becoming a senior developer is learning how to understand both problems and their solutions.

Discussion

pic
Editor guide
Collapse
davestewart profile image
Dave Stewart

100%! I tell juniors to take responsibility by saying "I don't understand" not "it's weird". Saying it's"weird" encourages them to write hacky code in response to a problem that exists only because they don't understand it yet.

Collapse
mccurcio profile image
Matt Curcio

Coming from other parts of science, there were times when I(we) would come across a "weird" way of attacking a problem or better yet an "odd" explanation behind a case. In some cases it would be a new concept that we were tackling. (Science does have odd new concepts.) At those times we would call it "counter-intuitive". I don't think it's necessarily wrong to use "weird" but understanding that it may take a little bit to understand was understood. ;)
Patience Grasshopper

Collapse
joeyhub profile image
Joey Hernández

This coming up straight after I knowingly posted a weird thing really is weird.

Too weird for my beard.

Too bizarre for my guitar.

Too odd for my job.

Collapse
sajjadkhan12 profile image
Info Comment marked as low quality/non-constructive by the community. View code of conduct
Sajjadkhan12

Good Post sir. If you are a beginner in programming world and want to learn programming fast. So I suggest you a website which have projects with source code and you can use those projects and practice those projects Projects With Source Code