The Right Idea Becomes the Wrong Idea Over Time

Ben Halpern on August 30, 2018

2008: Don't build your server-side application with JavaScript. Are you f#@cking crazy? 2018: Build your server-side applica... [Read Full]
markdown guide
 

We have to support IE10 for corporate clients who can't, or won't move off it yet.

 

This is me. Let's use Edge. How about none of those options?

Coding for IE8 has been hurting my heart as a front end type of person. The personal hell of supporting old IE is painful. The job is hard enough. :p

 

IE10 is not that bad, you can mostly get away with babel polyfills and transpiling down to ES5. IE8 is a whole different world of hell.

 
 

Same here. There's a lot of legacy corporate code out there that's driving this. Old ColdFusion and ASP.NET web apps that won't run on newer browsers, especially Chrome, are a significant part.

 

Yeah I can see why for legacy stuff, but when they push for awesome new stuff but then go... IE8 or IE7..... .....

 

Having to manage a VB6 app with browser that opens IE8 has been painful...

Migration to remove VB6 app has been going on surely but very slowly.

 

This is the case for me too. It is so frustrating that they can't or won't stop using IE10.

 

Jeez, way to be a reasonable and respectful human being who focuses on bringing the community closer together instead of divisiveness.

JERK.

 

I'm still happy to hate JavaScript. Despite being everywhere, and being useful, it's a mess of a language. It lacks just about every modern programming feature. It's horribly unsafe. It's still slow. It's bonkers.

Modern JavaScript is a flowery dress covering a mannequin made of trash.

Don't let the old joke die! :)

 
 

Depends on purpose. For web server APIs I'd use Python. For anything involving calculations, extended logic, or lots of code I'd use C++. For mobile I'd use Fuse system I worked on -- if it remains an option.

I only ever begrudgingly used JavaScript, TypeScript, etc. because I have no real option.

 

I've never really understood what seems to be large swaths of the developers posting on the internet who like to debate the relative merits of technologies or view certain technologies as illegitimate (see also: PHP). Widespread usage of something seems like an indicator of at least reasonable quality/soundness/viability, in my opinion.

Most choices of technology for a given problem are usually in some way a reasonable choice to make.

 

"Eventually, when the opponent is challenged or questioned, means the victims investment and thus his intelligence is questioned. No one can accept that, not even to themselves."

 

I agree completely! I showed a fellow dev one of my old Backbone/JQuery projects from a few years back recently - he's only worked with Webpack/Babel/React on the front end. I saw the abyss reflected in his eyes as he said, "Wow. ...Yeah. Yeah, we have it good nowadays."

(...though for what it's worth, I kind of miss Backbone and JQuery sometimes 😂)

 

Good ideas are always relevant e.g backwards compatibility, minimalism, accessibility, simplicity in design. Technologies and fads may come and go.

JS is an interesting amalgamation of ideas. The primary one (portability) was to make the web more interactive, without having the user install a separate software. Java applets, Flash, ActiveX failed at this. JS allowed for web pages to go beyond simple text, images and hyperlinks. Most importantly, JS allowed a generation of programmers to play around with code in the comfort of their browsers, thus lowering the barrier to become a developer. Now that it has become ubiquitous, ECMA and major browsers do not deprecate parts of the language, leading to efforts like typescript, the (old) coffeescript and an increasingly complicated JS to smooth over old mistakes.

The support for IE is a battleground for ideas. Will you break the web for a section of your users who may not have control on their browsers due to IT policy? Or will you support a browser which has been abandoned by its vendor itself, knowing that users of that browser are at risk of viruses? Backwards compatibility vs security. As developers, we have to always fight conflicting tendencies of using shiny new technologies vs sticking to mature technology. Too much of the former leads to hype driven development where teams keep rewriting the product in framework du jour instead of solving business problems. Too much of the later may lead to security issues as the technology itself stops being maintained.

 

Sometimes the wrong idea becomes the right idea. I am an advocate of 'worst practices'. i.e. those practices that are obviously bad, but that programmers tend to use anyway. Often there is a kernel of intuitive excellence in bad practices. If you can extract/separate the kernel of excellence from the bad practice, then you can use it by itself and do things other programmers can not. I've done that. It works. And now I can do things that others can not because I allowed the bad practices in my development until I understood the underlying truth. Then I ditch the bad practices, and leverage the truth discovered.

 

This is a pretty important idea, glad you wrote this post. I also hated Javascript for the longest time. Probably went through all the stages of grief and never quite got to acceptance until recently. I think what I really hated wasn't Javascript itself, it was the way it interacted with HTML/CSS that felt really hacky. Now we have stuff like ReactJS, Vue, and Polymer, that make everything programmatic and more like traditional software development.

I also found that often times it isn't the technology that's the problem. It's the software built with that technology. PHP was an awful language for the longest time, but the latest versions have made significant improvements. Yet the biggest PHP projects run on stuff like Drupal and Wordpress which are still terrible technologies. Java is also not so terrible a language, but Java projects tend to be extremely over-engineered which colors our perception of the language itself.

All that being said, Python and/or Go are still my languages of choice for server side work :)

 

I think the human race, on every scale from a person to an online community, behaves in a pendulum. Ideas are banished and old ones are revisited due to newer infrastructure, innovations are done, ideas are banished.

 

Right and wrong in the title are a bit too strong.

But I agree that over time the outside factors changes and some issues become non-issues.

Having to compile your resources into single JS / CSS / image file is good example, as this does not offend anyone's choice of language or framework.

Because internet speeds improved and underlining web technology improved too, you could look at it from completely different point of view and maybe split files up based on functionality so you don't accidentally expose something that should be available for limited users.

Actually I believe now the rad thing is to have CSS that handles only above the fold HTML, and another CSS file for the rest.

The problem is when people use these "best practice" lists not understanding the underlining reasoning and not factoring in their own project use cases, but it's even worse when they start rolling eyes when someone isn't doing it exactly like they do.

The beauty of development is, at least for me, there is no 1 right answer.

Also I've noticed when you are feeling stressed about your tech-stack loosing popularity, just wait 5-10 years, and your technology will be "in" again, and you can be leading expert :D

 

JavaScript bring me to paradise and hell. I do not know where I am.

I just think of TypeScript when JavaScript appears. I do not know why.

 

NodeJS is really a revolution of technology in human being history, just like any technological revolutionary before it.
It's still not late for you to recognize and adapt it.

 

This seems to be the pattern of life. I remember those day! But here we are.

 

2018 JavaScript is practically an entirely different language.

Still no actual typing, but now with 200% more hipsters who download their boilerplate from the internet.

Hooray, I guess.

 

200% more hipsters new programmers who download their boilerplate want an easier way to get started which is super reasonable given the crazypants environs of the current state of webdev.

FTFY

 

I think one can easily argue that it is actually harder to get into pure front end development now though. Forcing new programmers to learn and pick up build tools and transpiling? No thank you.

You'll find me as someone who suggests people to not learn JavaScript as their first language right now.

I still ❤️ Ruby as a teaching language.

But you can make a lot of arguments for different choices. A good teacher is the most important thing. I’ve heard folks who started with Haskell and everything was great because they had the right people.

I can definitely agree with that. With the right teacher any language can be just fine as your first language. In the end pretty much any programming language is teaching you core basics of programming in general.

Then again I am also the crazy one who learned C++ has their first language. haha.

I think Javascript is still amazing for beginners because you don't have to set up a local development environment to try it out. You can just use the browser DevTools console. Also you can get immediate visual feedback interacting with web pages and building elements.

You can also still just write little scripts and include them in HTML pages, then just open them in the browser and debug them from the console. A visual programming IDE that you already have on your computer. There's really nothing else like it for beginners. No command line necessary, which deters more beginners than we'd like to think.

I think Javascript is still amazing for beginners because you don't have to set up a local development environment to try it out. You can just use the browser DevTools console.

... which is a local development environment - and not even a good one because it also works with web-based JavaScript. Good luck debugging server-side code with it.

There's really nothing else like it for beginners.

There is: Install a better local development environment ... :-)

Lots of students only have access to chromebooks and can't install anything. It's a great option for them. And it's still a "real development environment" that professionals use, which makes it feel more real and exciting than an environment like CodeAcademy. Not sure what you mean by "not a good one," since it does its job of debugging code in the browser super well. Lots of beginners don't even know what "backend" and "frontend" mean, they just "want to code." We're trying to get them excited and see results, not intimidate them right? :)

And I think it's fine to get started learning about what variables are and basic statements.

Though they go any further chances are they are being told about WebPack, Babel, and more. Heck most instructions for using anything on the web nowadays talks about just using it with NPM. Well time to learn NPM also.

If you teach them without introducing ES6 features, then I agree, but most people are trying to introduce them to ES6.

Lots of students only have access to chromebooks and can't install anything.

Who forces them to not get a better notebook? Those are not too expensive.

Oh I don't know, forces of systemic economic oppression? ;) Many people need to choose between a phone and a computer for financial reasons, and they will almost always choose a phone because it's more functional. Schools (in the U.S. at least) often provide chromebooks in the classroom because they are cost effective and easy to administer.

If you think everybody should have better resources for learning to code, there are many great organizations you can donate to that are doing that difficult and expensive work. Here are a few:

These are phenomenal!

(The way the replies thread in the notifications thing, I saw this first before the others and though you were replying to me directly, and I was SO confused.)

Yup, the REPLY link here can be confusing...

code of conduct - report abuse