Becoming a great, effective, developer is hard work. Learning code in itself is challenging enough; many give up before they’ve even begun to understand the content. If you survive the fundamentals of reading and writing code you realize the work has just commenced. The technology industry is quite the undertaking; constant competition with hundreds of others for coveted positions with similar experience and credentials.
If you want to code you need to have the passion. Development requires long days, and even longer nights in many cases, creatively problem-solving. If you’re still interested, there are ways to ensure success in the tech community.
The fundamentals of code are algorithms and data structure. While not all languages worry about memory allocation (C vs Java), understanding these basic building blocks is vital. With constant change being the norm in tech frameworks, processes, and systems become obsolete quickly. Understanding the roots of programming enables you to have a much quicker learning curve when changes come about.
No matter the scope of a project, code is built piece by piece. Working small allows you to practice the basics, as well as feel the accomplishment of getting code to work more often. Waiting for the entire system to be up and running can be hard. Testing and debugging a function until it works gives you many small wins along the way, as well as good practice.
No matter how confident you may seem with the underlying structure, always test your code. Getting into a pattern of development, testing, debugging, development, and more testing will always lead to great code. Being comfortable with writing test functions for all variables and functions in a program is important. Understanding how to solve problems using the debugging utilities is equally important. Being able to identify problems efficiently is what differentiates a real developer.
How many times have you looked at code and been at a loss of how it works simply due to lack of readability? Or you’ve written code and looking back have no idea what it is used for? Code design helps you avoid these common pitfalls.
The basics of good code design employ consistency and clarity as its main values. Using proper indentation with functions allows nested code blocks to still be legible. The rule of thumb is 4 character spaces (or one tab) per statement. Proper documentation is needed in order to understand what the code does once it is easy to read. Using comments to describe the purpose, logic, and result of functions allows you to go back and edit code easily.
To truly stand out among your technology peers version control (VC) is another main component of code design. Using online repositories to track changes in code can make or break a project. Keeping track of updates made and different variants of code can be a manual hassle, but using VC there is only one project and any other versions can be pulled from the repository as needed.
When working with a team version control also helps with code merges so no one’s work gets overwritten. Version control systems also enable you to restore previous project versions, and have backups for the code as everyone on the team will have it in their local repository.
Being able to write code for any situation is great, but re-writing code over miscommunications is never satisfying. Part of being an effective developer, compared to just a coder, is understanding what it is you’re trying to achieve. People requesting work rarely understand the end impact of their specifications. This causes delay in many projects resulting from the iterations.
People often have a specific outcome in mind, but fail to communicate what that is. They tell you the means, not the objective. Once the work to realize the means is completed, the project manager realizes that they are off target. Understanding what the final outcome should be allows the developer to suggest how to get there.
Developers need to be comfortable suggesting solutions to problems, and know how to understand the problem fully. Instead of being told how to do the work, be proactive in understanding why the work should be done. You’ll find a lot of what you’re working on is really irrelevant and time could be be better spent to achieve desirable outcomes.
The tried and tested way of improving a craft is consistent practice of it. No one has won the Olympics by showing up on their first day of practicing a sport. Mastery of any craft requires constant repetition of it. Reading books on running marathons doesn’t get you to the finish line any faster – participating in the marathon does!
Writing code, breaking it, and writing more code is how you become a coding expert. If you can’t figure out how to break it, just re-write it from scratch. See if there’s a different way to implement the functionality that you’re looking for. Look at code examples online and try different algorithms. If you find code you don’t understand, even better – that’s where real learning happens. Reverse engineering the code to understand how it functions helps you understand how it works and teaches you different perspectives.
Working on personal projects regularly will hone your skills while also providing you a purpose while you code. Looking for open-source projects on Github is a great way to flex your development muscles. Some additional options include working on a personal site/projects, or doing pro bono work for local community organizations. Doing this work will not only expose you to technologies not available in your workplace or educational institution, but will also help you create a portfolio for your next position.
It is impossible to know everything. Remember that, and stay curious as to what is out there that you don’t know about yet. What we learn about technology and implement can become obsolete quickly. Staying current on new processes and syntax changes enables you to always create the best, most technologically advanced, code possible. Remaining open-minded about what you don’t know means you don’t lose any opportunities.
To really benefit from being teachable you must also be curious. Asking questions is the easiest way to learn new things. Get in the habit of always questioning what you’re doing and how, and truly listen when you ask for feedback. Encouraging others to question your methods, and forcing yourself to explain them, really encourages active understanding of concepts.
An good way of learning new things is trying to re-create programs you’ve perfected in one language in another. All languages have their strengths, and some require you to look at a problem differently in order to get the same outcome. Each of these languages comes with its own set of frameworks, processes, and syntax for you to practice.
People that have successfully navigated the industry have years of experience that you do not. Take advantage of this knowledge! It’s like when you hear a squeaking noise coming from your car – bringing it to the shop and getting it diagnosed, if not repaired, is easier and more effective than spending the day trying to figure it out yourself. The mechanic, through his years of practice, learned how to quickly identify different squeaks and was able to pin-point the problem quickly.
People with experience have been around the block before. They have most likely faced the issue you are facing at some point, and would be happy to share their knowledge with you. While their approach may not always be best – remember to question everything – it could provide a different perspective inspiring your next new method! Finding a mentor that you trust is also helpful if the option is available to you as one-on-one interactions are best.
If working with someone is not an option – take a look at professional code! You can see the code of any website with CTRL + U to see expert implementations. If there’s something you see on the web you’d like to learn how to do, just check the page’s source code! (Also available through the right-click menu.) There are also lots of open source projects available for review, as well as contribution. GitHub is an excellent resource when it comes to finding open source projects – including the EXLskills repository!
Test your skills once you are comfortable with the basics to learn more. Taking on pro-bono work for your community is a great way to get some deadlines. Knowing other people are expecting it often leads to finding creative solutions to problems! There are also many open source projects on GitHub looking for contributions.
Another way to really test your knowledge and stay current is to tutor others. Go online and answer questions that other people have. Challenge yourself with the subject matter as answering with the same simple “you missed a ;” will not get you far. Post blogs about your experiences and knowledge. Post your code in an online repository and open it up for feedback and revisions. Have other people expect you to answer questions about your project, and you’ll find you know more than you think you do.
At the end of the day, the way to becoming an effective developer is quite simple. Code all you can, understand why you’re doing it, make it clean, ask for help, help others, and above all – stay open to learning more!
Founder and CTO