I received a really wonderful question from Bryan Braun the other day during a workshop I was giving at Sparkbox. He asked if, over the years, if there were opinions about web design and development I strongly held that I don’t anymore.
I really didn’t have a great answer at the time, even though surely if I could rewind my brain there would be some embarrassing ones in there.
At the risk of some heavy self-back-patting, this is exactly the reason I try and be pretty open-minded. If you aren’t, you end up eating crow. And for what? When you crap on an idea, you sound like a jerk at the time, and likely cause more harm than good. If you end up right, you were still a jerk. If you end up wrong, you were a jerk and a fool.
I like the sentiment the web is a big place. It’s a quick way of saying there are no hard and fast right answers in a playground this big with loose rules, diversity of everything, and economic overlords.
I don’t want to completely punt on this question though.
I’ve heard Trent Walton say a number of times that, despite him being all-in on Responsive Web Design now, at first it seemed like a very bad idea to him.
I remember feeling very late to the CSS preprocessing world, because I spent years rolling my eyes at it. I thought it the result of back end nerds sticking their noses into something and bringing programming somewhere that didn’t need it. Looking back, it was mostly me being afraid to learn the tools needed to bring it into a workflow.
It’s not to find industry-wide holy wars these days, where strongly held opinions duke it over time, and probably end up giving ground to each other in the end.
But what of those internal personal battles? I’d be very interested to hear people’s answers on this…
What strongly-help opinion did you used to have about web design and development, but not anymore?
That you should always style native tags when possible and use minimal simple class names like
.button
and.menu
Yeah, I think the biggest one for me was the whole anti-classitis thing years ago… always styling the actual HTML elements like
<h1>
Using classes sparingly… completely clean markup.Now it’s pretty much the opposite. Seeing HTML element selectors in design layer CSS (mostly) makes me scream and BEMITCSS / namespaced class-names / modular design makes my markup a busy space!
I use to have a strong aversion to Push Notifications. I found it extremely annoying when a site pops up a window asking if I want to receive notifications before I even know whether the content is good or not.
That part I still have a strong aversion to, but that’s just a poor implementation of the Push API.
At my NSFW pet project Naughty dot Audio – I figured out how to implement it correctly, so the popup doesn’t happen unless the user specifically clicks a subscribe button on the pages, and then – it uses Ajax in client and DB in backend to allow the user to control what they get notifications for.
This increases user privacy because they can subscribe to get updates from particular artists without ever needing to disclose their e-mail address. And the annoying pop-up asking if they want notifications only happens when the user has already decided they do and clicks a normal button to say they do.
Too bad I haven’t seen any other sites implement it in a non-annoying way.
It’s also exactly my thinking about Push Notifications… Currently they are more annoying then useful for me. :/
I would say that I used to have a ton of strongly held opinions and coding and development when I was younger. I was always “perfecting” my code and learning the latest and greatest tools to, eventually I thought, come up with the perfect architecture. The younger me, and my strong opinions, were great at exploring a whole range of complex solutions but not nearly as good at getting anything done – perfect architectures were the enemy of finished projects.
I’d say that the older me has very few strong opinions around code and development. I’ve learned through those experiences that no matter how hard I worked at perfecting my code, 6 months later I’d look back and see all the ways I’d already do things differently. For all the missed deadlines and endless debates, I never arrived at perfection. Years later I look back and some of those tools and even languages have since faded and all my once strong opinions about them don’t amount to much.
The me of today still always wants to get better and learn more, but has a much more pragmatic view of tools, languages and architectures. I still have opinions, of course, but they are much more open to being challenged.
A mentor said to me many years ago:
“As soon as you finish writing a line of code it becomes legacy code”
I have. the Application Cache.
Sad :(
Never use a javascript cursor trail.
This view was formed due to what they were like in the early 2000’s.
Turns out my issue was more to do with the execution, which became more obvious when I encountered far more subtle and elegant uses of it:
Lorenzo Bocchi
Nurture Digital
The only one I keep is that ID’s are not for styling. They’re just too darn powerful. Use them for JS all you want but when I see them in a CSS file I get fussy because I know at some point I’m going to have to deal with it and it won’t be pretty.
I laughed at the idea of naming classes in BEM. All__those–silly underscores. Now I use it on every project and absolutely love it.
selecting those in any kind of editor certainly helps pushing the decision to use BEM :)
Although I’m still continuing using my “pre-era” BEM style all the way. Hard in a time of preprocessors which churn out code that looks ugly as hell.
cu, w0lf.
That it’s very important to make a website look and work well when JavaScript disabled. I know believe that making a website just functional when JavaScript is disabled is enough, because the audience that disable JavaScript is usually small and there’s never enough budget to write all the complicated fallbacks.
Implement feature which are at least 1,50 year officially supported by modern web browsers
As Davide mention use short class naming
Listen to yourself and only consider others opinion
Don’t use ready frameworks without understanding them deeply and reading documentation
Speed still matters in milliseconds, beside that we move from Pentium 333mhz to 8 X 2.4ghz cores
Don’t listen to artisan devs <> programmers
For me it was coding style. I had very strongly held beliefs about tabs v spaces, positioning of brackets etc etc etc. Then I was looking back over my own code and saw that over time my style had been subtly changing and found it more difficult to follow than many of the code examples I had seen. The answer was to put my ego aside and adopt a coding standard that my IDE could enforce. My code is SO much easier to read now and I’ve become an evangelist in code reviews. In the end spaces/tabs/brackets/line breaks don’t matter as much as consistency.
Tell me more.
Classes in HTML are sacred and mustn’t be used for utility classes or presentational classes.
That all websites should work when JavaScript is unavailable.
Building a one page application has softened my view on this. I still believe though if a website is primarily for reading content—that making that content available in the absence of JavaScript will probably make your life easier in most cases as a developer and provide a better experience for all users.
Dashes vs Underscores. I came from PHP, so underscores ruled. Also, I liked them in urls because they were like fake spaces (that could auto-replace spaces from normal users). I still use them in my classes, because of JS/PHP compatibility is nice, but I have seen the true values of dashes now with the – separated selector in class names. And I see the value in going industry standard as much as you can (where the industry has made a smart decision). (also no shift to press, lamish, but sorta consolation prize)
One comment about strongly held opinions. I’ve learned alot from old-timers about how to do things and not do things. And one thing I’ve stayed away from is the bleed edge in all things. Hardware (always by last years CPUs or older, RAM – only 8Gb lol, etc…), software – I rarely use the lastest and greatest from Adobe, and even force myself to learn opensource stuff (gimp, inskape), and with software, I stayed away from all the CSS/HTML/JS hacks from the past 20 years. The reason for all this is because I was a poor student to start with, and this served me well.
So it was really hard to latch onto a belief or a method when the industry kept changing every year for 20 years. I never had to redo any of my sites because of hacks or trendy frameworks*. I missed the foundation upheavals and since I could see browser updates coming soon that would replace these hacks, I lived with no dropshadows (though I did do the awful image thing for a bit), no fancy fonts (flash fonts, ick), no rounded corners (like dropshadows, I tried for a bit, what a mess), etc… Because it became plain that these things were all icing on the cake.
Now, the industry has moved on, and browser support is great.
Because I was poor in time and money, it saved me from wasting what little I had. And now, I keep these concepts in mind to help me stay away from the next big time/money wasters…
Prototype.js
(penance – full page flash intros… *sigh but we hated them, even while we made them)
This a thousand times. Not only this makes you write better, less bloated code, but it also prevents the effect of developing code on a 3000$ 27″ retina iMac on fiber optics, when after the work is done 80% of your visitors will use a 250$ Acer laptop on a spotty ADSL connection.
I used to love single line CSS classes. My stylesheets for full sites were 140 lines long!
.header { background: black; color: white; }
.header h1 { font-size: 22px; }
h1 a { display: block; }
WordPress
Sure, but although many have come around to it (mainly, I suspect, for bottom-line reasons), the hatred glows just as bright.
I’ve often commented that many PHP folks hate WordPress with the same passion that Ruby/Java/et al. folks hate PHP. Tell that to the PHP folks and they get a little huffy.
I used to be the best developer of my team, so all my knowledge was like the Bible. Then I moved to another team where I was only an average developer and suddenly, my absolute rules were shaken and soon dismantled by better than me, and I had to admit I was wrong, but I had new biblical information, so I could be certain of them.
And I moved again… Time taught me that opinions can change, that contexts can be different, that technology evolves, you have to be ready to change…
I would say that today, I still have strong opinions on certain things but I already know that they may change, and I’m ready for that, I just wait for the good reason.
A possible mantra: if after a long argument with someone you eventually win, he changes his mind, it means that you lost: you didn’t learn anything.
CMSmadeSimple, WordPress, non-specific CSS, disliking apps, thinking firefoxOS would become a thing, solving everything with jQuery instead of vanilla JS, thinking Linux is too complicated, letting clients pick their own hosting, thinking spaghetti PHP is quicker to write than code in a framework, using PHPmyAdmin instead of Adminer, staying away from graphic design, not caring about fonts, their licensing and their implementation, loading external resources, thinking Google is a great company, liking Facebook… I could go on forever.
Seems still to be a big sentiment. Apparently all folks think its command-line only; and that rumor has been going strong for ages. Never understood that, though. Been using Linux as my secondary (and fallback) OS of choice since approx. 2000, and switched completely in 2006. Haven’t looked back (expect maybe with Photoshop and IE; that’s VM for you) so far.
Even my lil sister, who is known to be not a real tech friend[1], found your everyday Ubuntu / Debian to be very easy to use, and is strangely (?) quite fond (and fluent) of the command line.
cu, w0lf.
[1] she is NOT someone rather clumsy and inept with tech (just about the opposite), but simply doesnt like to rely on that too much, esp. computers.
Linux too complicated? Huh.
I always thought it was too simple to achieve complexity. Or that power would come at the cost of verbosity and lots of typing. But that was a short-lived and very stupid assumption.
There’s elegance and power in simple things.
Being a front end engineer for a ecommerce retailer
I used to have a strong opinion that every piece of JS for a particular page group needs to be bundled and managed and served for all the pages in that group.
Until I found that a whole lot of code was serving particular and unique use cases and scenarios for particular products, So I am now a big believer in that the back-end should be the one responsible to include these snippets via the db.
What might be just as interesting are the things we resisted and that turned out to be as pointless as they seemed.
Just to point out that having strong opinions is absolutely compatible with being open-minded. And I strongly believe that everybody should have strong well justified opinions. Our world moves forward thanks to strong opinions. This applies to everything, technology included.
But it doesn’t mean that opinions should never change. They they should change when somebody demonstrates with arguments that another opinion is better than ours or simply when time passes and what was objectively true yesterday is not anymore.
If you ask a doctor what drug to take agains fever today, she has to give you the best currently known. Of course if a web developer doesn’t use the “best” tool nobody will die but this doesn’t mean we shouldn’t know what the best tool is(always in a context).
I thought that accessibility was a nice add on, but ultimately a secondary concern when building a website. That is until I went to an accessibility conference and had to face these people for whom the web was made impossible to use by people like me. Nowadays I consider it my duty to make everything I build as accessible as possible, even if the specific project does not have accessibility in the scope.