What are the things you will do differently as a developer? The most successful developers work differently. Some are born with natural talent, but others have worked incredibly hard at it. How? They prepare. They train. They constantly experiment and adapt. In this post, I am going to show what they do differently and why it works. Talented, highly skilled people don’t take big risks, yet they still manage to accomplish big things. The key to improvement is making small, smart changes, evaluating the results, discarding what does not work, and further refining what does work from early product definition and scoping to a detailed specification, implementation, and roll-out phases. When you constantly modify and refine something you already do well, you can do it even better.
Focus on performing a task as well as you possibly can. When you try to do your best even the smallest mistakes are obvious. Then you can learn from those mistakes, adapting and modifying your techniques so you constantly, even if only incrementally, improve. Almost every task includes a series of discrete steps. Pick one step, deconstruct it, master it... then put the whole task back together. Then choose another component part to deconstruct. Incrementally improve enough steps and the overall improvement can be huge. Force yourself to go slower and you’ll identify techniques or strategies that hold you back. Plus you can experiment with new techniques that are not apparent at normal speed. Force yourself to go much faster than normal. You'll screw up, and in the process, you'll adapt and find new improvements. Go a lot faster. Go a lot slower. Break a complex task into smaller parts. Measure differently. Practice, Practice, Practice.
It could be hard to run without knowing where to run. The key point here is that you need to clearly imagine your goal. This goal should be a long term target, and after you have a vision of your goal, go ahead and break it down into smaller tasks - build your road map. Every challenge is the opportunity. Don't ever, ever think that you will not be able to reach your goal. You can extend this to almost anything. Whether it's a developing or testing computer software applications, estimate development costs, giving presentations, design and implement the software, conducting interviews, review the design and implementation, improve the development process or analyze risks and compromises - any task can be performed more effectively and efficiently. Don’t just push the envelope until it breaks or until it breaks you. Tweak, refine, and reinvent a skill that you already perform well... with a little time and a lot of focus, you'll perform incredibly well. Verify if you are accomplishing stated goals. If no, quickly find reasons and work on that. Find your weak areas and fight them.
For a developer to be successful over any period of time a continued commitment to learning is absolutely vital. The field is too large, too quickly changing, and too in depth for any developer to ever "know it all." Luckily there are a lot of resources a developer can use to learn; books, co-workers, classes, blogs, among many others.
Excellent==Successful. Successful developers carefully evaluate the market place, seeking opportunities in the form of market niches not exploited by previous developers. Money & fame are more difficult to control. Learning to say no is the biggest challenge and virtue of the best developers out there. It's not a "no I can't do it" it's more of a "no I can't do it in that time" or "no I don't think it's the right way to go, here is how I think we should do it". Saying NO can make a difference between a successful project and a nightmare. Use your imagination. Always be asking, "Is there a better way?" Think outside the quadrilateral. The best solution may be one that's never been taken. Be ready, willing, & able to deep dive multiple levels at any time.
You must know what's going on under the hood. There is a strong correlation between "number of levels of deepness understood" and "programming prowess". Engage your user/customer/managers. Help them identify their "what". Their "how" is not nearly as important. Developers examine the risks (financial, legal and economic) in each project, evaluate the probability of success, and minimize the chances of failure by reducing risk whenever possible.
Still, a successful development is not easy to come by. Before a single bulldozer arrives at the site, a developer will have spent hundreds of hours choosing the land, determining its use and potential market, assembling a professional team, securing, protecting human private information and marketing. Informed developers the goal which is a credit to the community and profitable venture - will be more than worth the effort.
Happy employees are more effective and do a better job of making everyone else happy. There are other really great things you can do when you optimize for happiness. You can throw away things like financial projections, hard deadlines, ineffective executives that make investors feel safe, and everything that hinders your employees from building amazing products. Businesses can be successful when they decide that profit is not their only motivation and treat their employees well (ironically putting them in a good position to make more profits in the long run). Writing software is a creative process. Your job is not to write the same line of code over and over again. It’s always creating something that’s never existed before, but what is really motivating us?
RSA Animate -- Drive: The surprising truth about what motivates us from Daniel Pink on Vimeo.
Things you will do differently as a developer: Successful developers work differently because they goal oriented, they are driven to succeed, have a clear idea what they need to do, and the self-discipline and perseverance to direct all their efforts toward the completion of the project. Software development is a rapidly changing discipline. Developers must constantly be looking at and reviewing their practices to see where improvements can be made. Much of the time the improvements are small and incremental, but occasionally entire upheavals must take place. A developer must be willing to accept that one-day practices and technologies once relied upon have become obsolete and entirely new technologies and practices must be learned. When it comes down to it, perseverance is a very successful attribute. You have to be willing to push through the hard stuff, so you can be victorious in the end. At some point, run your own business, service or product. You will learn things about programming that you'll never learn as an employee. Make sure that you live a healthy life and the most important one: If you don't love your job, find another one.