Today I want to talk about something that is dear to my heart - bringing knowledge and information to the world.
He also pointed out the sorry state of JS education online and kicked off a guerrilla SEO attempt to kick off inadequate documentation of the google search results page and redirect to the MDN documentation instead.
Another result from that was W3Fools.com which pointed out issues on W3schools.com and got them thinking about their content a bit.
And a lot has happened, and I want to use this here and now to thank you for that! The documentation sprints of the MDC docs are getting larger and we have a lot of people helping with keeping them up-to-date.
We as a community still have a few challenges to face. Some of them are old, some are new. Some of them might not be our place to fight them, but we have the power and the drive to do so.
Let's talk about these challenges.
Let's take a look at what made us get where we are now.
We all learned by looking at other people's code. Don't try to deny it. The inability of hiding your JS code was also its biggest success. Your code is poetry and you will be judged by the tech people visiting your products much like people judge you by the looks of them.
A lot of the issues we have as a community is that we are prone to being fans of one thing rather than seeing the big picture.
If I learned one thing in my career then it is that I should be open to any platform and any browser and environment out there. If you limit yourself to one of them you lock yourself in. If you discard anything that is not happening in your favourite environment, you are hurting innovation. Everybody has good ideas. The trick is to collect, curate and find the best middle ground.
I love the web, and I think we all should understand that this is the single most successful media out there. Anyone can participate and we empower a lot of people to have a voice who wouldn't have any otherwise. When I was a kid I had to go to the library and go through a lot of books to research. Nowadays I have any kind of information one click away.
Excitement about technologies and hardware and clever marketing makes it easy for a lot of people to forget that the world wide web means that you should support everyone - regardless of browser, location or ability. This does not mean you need to give everyone the same experience - it means you should not block people out.
There is a big thing going on about people seeing some developers as total rockstars and following every word they say, repeating what they say without context as "best practice" and in general wasting the opportunity to do cool stuff themselves. Every single one of us should get the chance to be listened to and try something cool. It is not a small group of people who will have a lot of impact. It is a community that moves things forward.
In our final products, we need to deal with backend developers, designers, product managers, god forbid, clients and other folk. All of which have their best practices that work for them and are experts in their fields.
By mixing and matching technologies, we can play them to their strengths instead of fighting each other.
We should always be respectful of people whose skill sets work with ours, there is no point in trying to compete when we all want to reach the same goal.
Which brings me to social skills, something that is a big issue in our environment and already treated as a joke. People expect developers to be socially inept, it seems. Just go to any Christmas party of big corporations and watch the divide between the techies and the non techies.
Miguel de Icaza has written an amazing and funny post on the subject of "Well, actually". This is a social behaviour pattern that is very common amongst techies and is very destructive. It seems that we are very much likely to intercept any joke/explanation or meeting starting with "Well, actually…" followed by a condescending message laden with information the original conversation did not need.
A lot of times we use sentences that are a dismissal, and can hurt the person. We can deal with that kind of rough conversation, but not everybody can.
The last douchebagism brings me to a challenge we have as developers which is that we are very prone to find quick solutions to larger issues that need fixing and wrap them in a library or polyfill.
I am a big fan of making things easier, but I am a much bigger fan of fixing issues at the source. We have quite a tendency right now to write a wrapper API, library or polyfill for everything and then consider our work done. Sadly this is not the case.
It is very tempting to simply write an abstraction layer to hide problems. The problem doesn't go away though, it just needs and extra step to become useful. Once the problem is solved, your abstraction layer turns into a needless burden.
I am currently tech editing a book about web development that is in use in highschools and universities all over the US. If you think w3schools is bad, think again.
It is time we stopped trying to only affect the world around us but be where we are needed. Corporate trainings and university courses are ridiculously outdated. Go back to your university and give a guest lecture now!
A lot of companies make a living out of teaching code. Some of them do very well and a good job. A lot of them do a terrible job and still get paid. Why not us? The next generation of web developers might not want to become web developers.
There is a big thing going on right now discussing that web development is on the way out and that the future is all about native code on mobile devices. Food for thought.
There are a few projects to watch right now that will enable the web to be a real competitor for native code. Let's support those.
Above all, we need cool new tools on the web to get developers going and teach them a good way of development while they are at it.
When Adobe released Muse, a visual tool to build websites there was much merriment in the blogosphere and people laughed at the quality of its output which reminded of Frontpage. The question we have to ask ourselves though is: have we failed to make people aware that we don't need WYSIWYG editors?
Instead of building tools that allow developers to just debug, we should start thinking about integrating the development and the demonstration process into the browser. Instead of one big monolithic system to offer all debugging features, let's build a framework of tools.
This is a preview of the new developer tools in Firefox. This is the Highlighter. Instead of navigating the HTML, you move around the page and you get the element hierarchy as breadcrumbs.
The style inspector gives you information about the styles applied, both the ones you set and the ones the browser applied.
Using these tools you could do CSS screencasts without jumping in and out of an editor.
Tilt is a 3D representation of the DOM tree. In this demo even connected to the accelerometer of the computer (OK, we went overboard).
The web console is known from Firebug and can be now docked wherever you want it.
Firefox now has a scratchpad that allows you to write JS in the browser, execute sections of your code and try it out in the live site - much like GreaseMonkey used to.
All of the new features can be accessed with commands, in case you don't want to use a mouse.