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.
1. Continuous Learning:
- They stay updated with the latest technologies, trends, and best practices in software development.
- They invest time in learning new programming languages, tools, and frameworks.
2. Problem-Solving Skills:
- They have strong analytical skills and enjoy solving complex problems.
- They break down large problems into manageable parts and tackle them systematically.
3. Understanding the Basics:
- They have a solid understanding of fundamental concepts in computer science and programming.
- They know that mastering the basics enables them to learn advanced concepts more easily.
4. Writing Clean and Maintainable Code:
- They write code that is not only functional but also clean, well-documented, and easy to maintain.
- They follow coding standards and best practices.
5. Version Control:
- They use version control systems effectively, understanding the importance of keeping a history of their code changes and collaborating with others.
6. Testing and Debugging:
- They write tests for their code to ensure reliability and ease of maintenance.
- They are proficient in debugging and can quickly identify and fix issues in their code.
7. Collaboration and Communication:
- They communicate clearly and effectively with team members, stakeholders, and non-technical personnel.
- They collaborate well with others, contributing to and valuing team success over individual achievements.
8. Open to Feedback and Criticism:
- They are open to receiving feedback and constructive criticism on their code and work habits.
- They use feedback as a means to improve and grow.
9. Adaptability and Flexibility:
- They are adaptable and can handle changing requirements, technologies, and tools.
- They are comfortable with uncertainty and can find solutions under pressure.
10. Attention to Detail:
- They pay close attention to detail, which helps in writing error-free code and spotting issues that others might overlook.
11. Time Management and Prioritization:
- They manage their time effectively and prioritize tasks to meet deadlines and deliver value.
- They know how to balance perfectionism with pragmatism.
12. Passion and Curiosity:
- They have a genuine passion for technology and an innate curiosity about how things work.
- They engage in personal projects or contribute to open-source projects.
13. Understanding User and Business Needs:
- They understand the end-user needs and business objectives behind the software they develop.
- They focus on delivering solutions that meet those needs effectively.
14. Networking and Community Involvement:
- They network with other professionals and participate in the software development community, which helps them learn from others and stay inspired.
15. Self-Reflection and Self-Improvement:
- They regularly reflect on their performance and seek ways to improve their skills and work habits.
- They set personal and professional goals and work diligently towards them.
By embodying these practices and traits, developers can not only improve their technical skills but also their ability to work effectively in a team, communicate with stakeholders, and contribute to successful projects.
Summary
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.