A lack of fundamentals?

A lack of fundamentals?
0

#1

I recently just came across the article The Web Fundamentals Gap (FCC even gets namechecked). It was very timely as I’d just had my first coding challenge as part of a job interview. The quote,

I have had some trouble hiring a front-end person, basically a WP, Foundation, CSS, JS person to fill a low-level production role in the company. I can’t figure out what the deal is, all applicants have no “base knowledge” of the above, they can produce react or other JS framework sites, or create through the WP template system, but if I said, I need some straight CSS changes, blank stares…. or some vanilla JS stuff, nothing.

… rang especially true.

The coding challenge I’d had was to take their boilerplate code and make specified modifications to it. The boilerplate was basically a todo app, but was complex hive of React and Redux, with over 100 components/containers. The hiring guy was kind enough to give me an evaluation. He listed some of the things I’d done well and some things where I’d lacked. As I read over the list, everything I’d done well had to do with React, Redux, and JavaScript. Given the complexity of the boilerplate, that was the part that I was most worried about, but he complimented me on my handling of the React, Redux, and Sass. The parts where I was lacking? Nearly every one of them had to do with basic CSS – usually doing things in too complicated of a way or in a way that wasn’t the best practice, in one case using JS to get around and easier CSS solution.

Thinking back to the challenge, CSS was where I struggled. Sure, the React and Redux scared the bejesus out of me – I’ve been learning React, but never done anything this complex and I’ve only been working on Redux for a few weeks. But it was the basics of CSS where I’d struggled the most.

Too often with CSS, I just keep trying things until I get the result I need. I’m gradually getting better, but often I don’t truly understand what is happening, not on the same level that I understand JS.

So I need to spend some time learning basic/intermediate CSS. It wouldn’t hurt to strengthen my vanilla JS while I’m at it too.

This is in no way a criticism of FCC. They have given me an incredible framework of knowledge. Now I just need to go back and fill in some of the gaps.


#2

This really validates my decision to avoid Bootstrap and do everything vanilla CSS. Just started dipping my toes into SASS, mostly to take advantage of its variables feature so that I can apply the DRY principal. CSS is pretty complex. I think many people take it for granted how complex it can be. It’s very rewarding when your web app works well without using a framework.


#3

Frameworks/libraries provide abstractions letting us do more with less based on tried and tested techniques. They also enable communication among peers based on commonality which is, should be, crucial for any business owner/employer (I can write pure javascript that others can’t figure out for days how it works, is that a good business practice?)

This does not mean one could be oblivious to fundamentals.Especially in web technologies, where the lines between abstractions are not clear cut and things change often.

Just make sure you’re compensated accordingly if you agree to work on multiple levels of abstractions.


#4

Yeah, all programming is different levels of abstraction. I had a C teacher once that told us that you can’t really understand programming until you’ve done assembly. The next quarter, I had an assembly class and told the teacher about that. “Yeah, she probably had a teacher that told her, ‘You can’t really learn programming until you’ve done punch cards’”. And there was probably some old guy back then saying that you wouldn’t understand a computer until you were in there soldering vacuum tubes. I thought about all of this when I heard another coder say, “jQuery is for wimps, you don’t really understand coding unless you’re doing vanilla JS.”

The difference is that while no one is programming with punch cards anymore, vanilla JS is still used. But I think it can get to extreme, too. We need to remember that 70% of the web sites on the planet use jQuery. Bootstrap is at 16% and slowly growing. These may be abstractions, but so is JS.

But the important thing is that both of these levels of abstraction are important. My problem wasn’t that I made the “mistake” of learning those higher levels of abstraction (React, Bootstrap, jQuery, et al.) but that I’d done it at the neglect of solidifying my knowledge of that lower level. It’s too easy to be distracted by the flash of these cool libraries and forget about the basics.


#5

Great story! So true, and applies to many fields.
So yes frameworks are great, but having a solid foundation of the tech underneath the hood (i.e. CSS for Bootstrap, JS for React, etc…) is super useful. I will learn these frameworks - currently using Vue.js - but my priority is solid understanding of the basics. Good luck with your job search!


#6

CSS frameworks is basically for saving development time. i.e. so you (or your company) isn’t re-inventing the wheel everytime you have a new project/client.

But CSS frameworks are not a substitute, or an excuse, for lack of solid CSS understanding.


#7

I agree with pretty much all of you. Let’s not forget why these frameworks and tools exist:
Speed and Accuracy in Repetition.
If you coded your own grid system in CSS, which could be done, you could re-use it as a template in your projects.
Bootstrap is CSS . . . . . TypeScript is JavaScript . . . .

That is why IDEs, frameworks, custom, libraries all come into play. Why write spend weeks writing flex grid if one exists proven and tested? You shouldn’t waste time re-inventing the wheel. But a root understanding is key, these are tools, they don’t replace comprehension.

This one rings true:
@owel

I guess I became used to this in C, C++, C# . . . there are many tools to speed you along and assist you in getting the projects done on time and in great condition.

I don’t think bootstrap is a bad thing.

-WWC, “Brad”


#8

The problem with the point you made is that regular JS is the standard, it’s supported in the browser. jQuery is a library for JS. When jQuery becomes a standard you can make the argument “We need to remember that 70% of web sites on the planet use jQuery.”

The argument for vanilla JS is not nostalgia or authenticity, it’s reliability. Until a library is integrated into the language, it’s nothing more than an abstraction, and that’s a problem because if for whatever reason it disappears, we would all be screwed depending on it.

So whether we’re at the 2017 abstraction of the assembly days or punch card days, it’s a maintained standard so it doesn’t matter. Now if we ever lost the web and had to start over, yeah the same thing would apply to vanilla JS as well.

An abstraction is only as valuable as long as we unanimously maintain it, at least if we’re pretending it should be common practice. If one person wants to use a library for a specific project, no problem there.


#9

Again, all about speed and reliability of code generation and the ability to fix/modify it.

Doesn’t bootstrap not actually just represent CSS in shorter more readable, pre-packaged terms?
Isn’t JQuery still Javascript?
It is sneaky and a slippery slope if your tools don’t actually compile or represent the standard.

It is always smart to know how something works, there is no substitute for that. Most people that drive a car don’t know much about combustion engines, but it is great to be with the ones that do when you need to fix it.

Learn the code, use the tool, but realize the tool is not the actual code and you shouldn’t ever represent it as such. (compiling C++ into assembly per se . . .) (driving doesn’t make you a capable mechanic or car manufacturer)

I like what you are saying: @Emgo-Dev and you are right. Popularity doesn’t make an accepted standard. But some new languages are too young to have a standard, when did ECMA come along . . .

I have assembly and unless someone cares about clock cycles or memory space . . . .it’s not happening again.

-WWC


#10

I’m not sure I buy that argument. How exactly would Bootstrap or jQuery disappear? Would they get deleted from every web site on the planet? The library may stop being supported, but should work for the current levels of browsers and even a few more, maybe indefinitely.

As to reliability, I’ve heard the exact opposite made for libraries. A well tested and supported library is more likely to be reliable than hand coding complex interfaces and hoping that you’ve tested them in every situation on every browser.

I think the argument for learning vanilla JS is that sometimes you may need something more light weight. But if someone wants a complex interface, then a library seems the way to go, standing on the shoulders of giants. The other reason is to just be a better coder…

I would agree that one must be careful when using new and untested libraries. But Bootstrap and jQuery are well tested and will be around for quite some time.


#11

I’ve been trying hard to understand CSS and JS, too. Very frustrating when (free) online tutorials start right off with jQuery and Bootstrap.

One great course for helping you understand CSS is Coursera’s HTML, CSS and JavaScript for Web Developers, given by a Johns Hopkins adjunct professor. He demonstrates how it works, explains why things that should work go wrong, etc, while creating a multi-page website for a restaurant. The course is free, though Coursera pushes paying for a certificate. (Prior knowledge of JS is expected, and he teaches more advanced JS concepts, which you may like if you’re at that level, but it was too advanced for me.)


#12

@LisaWillCode

Spot on. Thank you for the link and feedback.

-WWC


#13

I think they start with jQuery and Bootstrap because they are more user friendly. A lot of these free online tutorials are worried about scaring people away. There are a lot of people who aren’t sure if they really want to code yet. And since these programs usually measure their success by how many people log on, they try to maximize their “success” by keeping the program as user friendly as possible.

Perhaps it would be better to start programs library-less. But to the mindset of these sites, that would just be shooting themselves in the foot.


#14

Also a great point. @ksjazzguitar

At the end of the day for many people coding should be fun, something you enjoy doing, if that is a hobby then great if it is how you make a living then even better. Everyone has to grind, but it should never be an eternal grind.

I know what you are saying, I took a CSS course that dove in pretty fast, it makes more sense to me know but it was fast swimming then. When I was first introduced to bootstrap it seemed like a relief to some degree to move faster as a beginner.

-WWC


#15

It’s not just to move faster, produce more. Is everyone forgetting the hellish landscape that is web standardisation and browser idiocies/idiosyncrasies? Sure, it’s much better nowadays, but not long ago we were all wondering if our browsers can render even a simple smilie (acid 3 anyone?), not use css3 at a whim.


#16

Yup, thus the reason for jQuery’s popularity and ubiquity. It was a god send, this jQuery stuff.

But Millenials today spout youmightnotneedjquery.com :slight_smile: :slight_smile: :slight_smile:


#17

Forgetting? It’s still a problem.


#18

The difference is that while no one is programming with punch cards anymore, vanilla JS is still used. But I think it can get to extreme, too. We need to remember that 70% of the web sites on the planet use jQuery. Bootstrap is at 16% and slowly growing. These may be abstractions, but so is JS.

The problem is - quite a lot of websites don’t need neither jQuery nor Bootstrap which could easily shove a few hundreds of KB off the website… and yes - those are cached and everything seems to be well and dandy but lot of people forget that even if cached browser needs to parse all the rules JS code each time you navigate from the website…


#19

Yes, it is a few hundreds of KB, But I’m always amazed at people that panic about 100KB of library on a site that has 2MB of photos.

Yeah, some sites don’t need JQ or Bootstrap, But technically no site needs it. I could argue that no site needs CSS, depending on how you define “need”.

When I first learned programming, the big tradeoffs were about speed and memory usage - so many decisions were trying to figure out what the best compromise between those was. Now you can add in ease of coding, readability, maintainability, compatibility, UX/UI, security, etc. JQ and Bootstrap address some of those concerns at a tiny cost. Different coders come to different conclusions about how they want to address those issues and balance them. If 100KB is too steep of a cost for you, then don’t use it. Others come to a different conclusion.


#20

Riight… and now my bank website weights about 5MB and I have to wait sometimes 15 seconds to load it - yay.

The problem is - quite a lot of what was required ages ago (i.e. 2-3 years in web time) is currently available natively in JS/CSS but we are so deep in “frameworks” that we can’t thing outside of it…