We just passed our 30th anniversary of software development earlier this year. As I reflect back over that time, it’s largely positive…but there are things I know now that I wish I knew starting out. After all, the more time you spend in any profession, the more you learn (hopefully).
That got me thinking: I’m sure everyone is like that. I’m sure everyone could name one or two specific pieces of advice that they wish they knew earlier. Wouldn’t that advice be useful to those just starting out? I think so.
Today, I’d like to explore that topic from a web application development angle. What do experienced web app developers know now that they wish they knew starting out? If developers could go back in time, what advice would they give to younger versions of themselves?
We posed those questions to some experienced web app developers, and they provided some excellent advice–which can help web application developers of any skill level. I’ve outlined their advice below, along with a few of my thoughts under each point. Here are 7 things that experienced developers wish they knew earlier:
1. Know your users problems
Perhaps the most important advice you can give to anyone in any profession: Understand your users/clients/prospects, and the problems they’re trying to solve. If your users ask for better reporting, don’t run off and build the perfect reporting applications or find the best reporting tool. Understand what they mean by that. What are they trying to accomplish? What specific problems are they trying to solve?
David Copeland, Software Developer and author of The Senior Software Engineer, gives some great advice: “Technology choice is not nearly as important as having a good grasp of what problem is being solved and a clear understanding of how the proposed software is actually going to solve it.”
Along the same lines, it’s important to understand what your users/prospects do currently. For instance, if your users want better reporting, what is their current solution like? If your solution doesn’t solve their problem better than the current option, they won’t use it.
Daniel Crompton, Director of Technology at Oplerno, shares some great advice along these lines: “I wish I’d known earlier to ask potential users earlier whether this was a product that solved their problems better than their current solution.”
2. Do it right the first time
“Do things cleanly now, because you are never going to go back and “clean up the mess”, not when there’s new features to add and new value to deliver,” explains Copeland. “Much easier to take a bit of time up front to write clean code than to assume you’ll clean it up later.”
This is one of the most important rules of web app development. While you tell yourself that you’ll go back and fix the issue later, chances are…you won’t. Instead, you’re stuck maintaining and building new features over a flawed foundation. Taking the time to do things the right way will save hours of time and frustration in the future.
3. Build for the future
“Before making a solution to a problem, think if the solution is scalable and adaptable,” says Brian Lee, Developer at TripleLift. “It’s better to invest a bit more time in the beginning to save more work later.”
Before you begin a new development project, ask yourself this question: “What if this is wildly successful?” What if your web application grows more than expected? Planning for success from the start will save you from re-creating the solution later on down the road.
4. Use frameworks/tools
“Familiarize yourself early on with the web frameworks/development tools available and what they have to offer,” says Tyler Wassell, Software Development Manager at mrc. “Coding everything from start to finish is often unnecessary. Instead of trying to re-invent the wheel in each project, spend some time researching a web framework or development tool that eliminates the repetitive coding tasks and promotes stability, maintainability, and security. In the end it’s all about delivering quality solutions in an efficient manner and selecting the right tools will help save time and improve software reliability.”
Jonathan Weber, Founder of Marathon Studios, Inc., seconds that motion: “My two-word answer to this is ‘web frameworks!’ I started my career developing from scratch, and wasted countless hours re-inventing the wheel over and over before I discovered frameworks saved me that time.”
The point: Sure, you can build everything from scratch…but chances are, someone has already created parts or all of the solution that you need. Using a tool or a framework lets you capitalize on solutions that already exist–and greatly reduce development time.
5. Know your strengths
“You can’t do everything yourself,” says Jonathan Moore, Principal at Trifecta. “Stick to your strengths and find ways to delegate the other tasks.”
That’s not to say you shouldn’t be constantly learning and teaching yourself new skills. But, if you’re working on a development project, you must understand your strengths/weaknesses. Sure, you could probably figure out how to solve a problem that you’re unfamiliar with, but is there someone on your team who could do it in half the time?
6. Release early
“Release early with a minimal feature set,” says Mark Rushworth, Head of Search at Blue Logic Web. “Scope creep will stop your app being built and annoy your clients even tho’ they’re the ones causing the creep.”
Seth Godin sums it nicely when he says, “Perfect is the enemy of good.” If you spend all of your time adding features or perfecting your application, it will never ship. Release the application with the basic features first, and add to it along the way.
7. Focus on simplicity
“The biggest thing I wish I knew when I started developing web apps was the importance of the little, time-saving conveniences for users,” says Alex Zorach, Founder and Editor of RateTea.com. “The biggest example was that when I made the site use persistent logins, rather than requiring users to log in each time, the number of reviews posted more than tripled! I suspected this change would be good for the site, but I never realized how big an impact it was…it was a tiny change that I had put off for too long and I wish I had done it from the start.”
It’s a simple rule: Make your user’s lives as simple as possible. Oftentimes, it’s the little things that make all the difference. Sure, implementing features like persistent logins or single sign-on may seem like small, unimportant details, but they make the application simpler for the user. As you know–the simpler the application, the more likely users will actually use it.
So, what do you think? Would you add anything to the list? If so, I’d love to hear it in the comments.