There's simply no substitute for knowledge.
Collaborate with other developers and find mentors to advise, challenge and save you time. Fortunately, we have more conferences and Meetup options than ever before (check out our very own Franklin Developer Lunch & Learn). If you don't have a mentor just ask, there are plenty happy to help, they’ve been where you are and understand mentoring helps them immensely as well.
Pick a few blogs to read and create focused Twitter lists. Rollup newsletters are also a great way to stay connected without throwing away too much time. There's a lot going on and you have to be efficient about staying in the loop. Here are a few resources I like:
- A List Apart - Blog
- CSS Weekly - Newsletter
- Smashing Magazine - Blog
- Developer Drive - Blog
Above all, always have a pet project, something you’re passionate about and can learn from.
Enforce accountability through repeatable process.
Task lists with no structured action are easy to cheat so use a tool to stay on track. Kanban is great, specifically services like Trello and LeanKit. A workflow such as Backlog > Doing/Blocked > Review > Done is a good start.
Don’t take anything for granted, stick to the plan. If you run into an issue figure out if the solution can be part of the process moving forward.
Organization isn’t only for workflow, create well-structured codebases as well. That's a topic for another day.
Don’t reinvent the wheel with every project.
Avoid common mistakes by bootstrapping. It’s not just about saving time, it's about creating well-tested, reliable baselines. We've rolled out our own front-end bootstrap called Wee over the last few years and open sourced it. On the backend, we typically build on Node with quality npm modules or Laravel for larger applications.
Create quality through consistency.
Invest in readable code and accepted standards. Inconsistency creates inefficiency and technical debt. Some languages have guidelines like Python’s PEP and PSR in PHP but regardless what you adopt, most importantly make sure to clearly communicate your expectations. We've been developing an internal resource that defines all our development standards, guidelines and processes that we plan to open source soon.
Balance well-written code with lean docs.
Sometimes codebases become complex. High-level comments naturally communicate intent. Standards like JSDoc, PHPDoc, RDoc and Javadoc offer structured syntax, IDE integration, and documentation generation. Make sure that your commenting guidelines are part of your standards.
Don’t assume you write perfect code.
Nothing makes up for peer collaboration. Code reviews open up more for feedback than just syntax. Let senior developers review juniors and vice-versa, it fuels growth and fosters consistency. We perform daily morning code reviews. Milestone reviews are also important to get a better feel for the “big picture”. Remember, it's not all about pointing out issues, use reviews as an opportunity for kudos as well.
Lint, test, integrate, measure and deploy.
Remember, there’s no substitute for manual testing. We have a granular testing checklist as part of our project workflow and leverage BrowserStack heavily on the front-end for cross-browser reference.