A community upvoting platform that lets us collaborate on best practise in front end code.
For those of you that don't know me, my name is Mairead. I'm a front end developer and I've been doing this for around 15 years. This is my response to the discussions I heard at Edgeconf 2014 in London on March 21st.
The first panel centred around Web components, introduced by Peter Gasston. Like Peter I feel these are essential for the progress of our industry. A later panel member mentioned we are still treading well worn paths. Freeing ourselves from the repetition of the mundane is essential if we are to innovate.
I realise I am preaching to the choir here.
Peter also raised another important point. As a community, how do we address the proliferation of components? Anyone who has ever searched for a jQuery carousel knows what I'm talking about here.
The problem, as I see it, is we have no mechanism for quality control and no platform for promoting the best we have to offer. This is a perennial problem with our development stack.
It was interesting to hear this issue echoed in the build tools panel. Which build tool do you use? Once you've chosen, which plugins will you implement into your workflow? At the moment we have no choice but to suck it and see and this can be a costly exercise. (Only 2556 Grunt plugins to choose from, yay!)
There will always be situations where a total custom build is your best bet but for the other times when 'off the shelf' will do a community upvoting platform that lets us collaborate on best practise in front end code is my suggested approach.
Crowd sourcing opinion and peer review of code.
Supporting discussion and collaboration around best practise.
Helping people learn from best practise.
A way forcing everyone to write the same code. This would make me sad. No one wants to stifle creativity.
Preventing proliferation of code or repetition. We can't stop people publishing their own code. Why would we want to? (See point one)
A code repository. We already have one of those.
A support platform. We already have one of those.
A standards body. We already have one of those.
A popularity contest. Its natural that some projects are going to have a higher profile in the industry than others. It would be good to learn from the industry as a whole. I'm hoping this platform might be a way to share those learnings.
I'm just gauging interest right now to see if this would be viable.
A couple of people have suggested a meetup to discuss ideas and propose solutions.
I think it would be good to evaluate existing solutions. Not repeating existing work is of paramount importance.
I'd like to build a beta application and invite people to participate.
You can reach me here if you'd like to get involved.
For those of you still reading or curious to understand the driving focrces behind my idea.
There isn't currently a great deal of opportunity for practioners to collaborate and review code. Our closest solution which supports discourse and debate is stackoverflow.
The primary concern levelled at this seems to be that it is raising the barrier of entry for learners. In more practical terms for a development team it makes it harder to leave behind a coherent and maintainable development stack for practioners of all levels and makes hiring more difficult.
I am tired of rebuilding the same UI componenents repeatedly every time the front end stack moves on. I feel I can keep my skills current but code re-use is essentially a myth to me akin to a golden feathered Hypogriff. I feel this is holding us back.
Its natural that everyone wants to make their own code. After all you learn best by doing and that's a good thing, which we should encourage. However we are swimming in a soup of front end plugins, UI components, frameworks and libraries and there is no clear delineation between the good and the bad.
At the moment a developer's only clear pointers towards code quality are: reading source, community adoption, recent commit activity and corporate branding. Whilst these are all useful, they each have their limitations and don't necessarily give you full confidence when choosing a solution.
As our industry matures our development practises are solidifying into more complex stacks. I welcome this and I think it's necessary progression but it can be hard to keep a weather eye on every development as they become increasingly diverse.
This touches on points 3 and 4. I'm tired of writing the same code, particularly when I know 50 libraries already exist that are basically the same but slightly different in the one crucial way that means I have to write my own, from scratch, again. I think we are making classic mistakes of software development. We are not writing code that is modular, encapsulated and extensible. We need to get better at this without question.
Its got to the point where even code I wrote 6 months ago is obsolete. I don't think I am alone in struggling to keep my front end stack current, re-usable and maintainable. I rarely manage to bring code forward into the next project. We have great tools to support this like Yeoman and Bower but I think we can do more to keep things DRY, particlularly looking forward into the new era of web components.