The enabling of the browser as a first-class container when building software solutions has led to a migration of business logic and complexity from the server to the browser.
Today, many applications has significantly more logic and complexity running in the browser than in the back-end server.
This is not necessarily an issue in all organizations, but many organizations are staffed with dedicated resources for the front-end and back-end development. A typical profile of the back-end developer is a software engineer with strong skills on design, algorithms, separation of concerns, etc. A typical profile of a front-end developer is someone with more of a design and graphics background.
After reviewing code, designs and architectures at a large number of projects around the world, it seems we may have a skills-gap among the front-end developers. I often see browser-hosted applications that lack even fundamental software engineering traits.
As more and more of the complexity of the applications move to the front-end, the front-end developers would benefit from obtaining the same traditional software skills commonly held by back-end developers.
- Separation of concerns.
Try to break up your code into sections that have as little functional overlap as possible
Separation of software into independent interchangeable modules.
- Anticipation of change.
Some parts of your software is likely to be modified as the software evolved. Separate it out, design your software so that modification of this section of software is easy.
Can you generalize the problem. Perhaps you can use one abstraction for more than one problem?
- Incremental development.
Build the software incrementally. Make a plan for how to get to the end result (incidentally, this is often something that designers know better than software engineers :))
Use a consistent coding style.
Google searches on these topics should also yield a set of results
What can I do for you?
What I plan to do is to write a set of articles on slightly more advanced topics. I'll assume that you know the basics from above. I'm not quite sure what to focus on first, but my current plan is to introduce you to the GoF design patterns and how we these may be applied to browser development.