Last year I wrote an article about the Hour of Code, an effort to get all students at least an hour of computer programming experience. I love the idea behind it and I think it is something that should be done more often. With that said, I have really started to consider the message that is being sent with some programs like this. If you watch the Hour of Code Youtube video, it seems like coding may be extremely simple. Truthfully, the barrier to writing code is much smaller than it once was. In my opinion, anyone can code. However, it is important to caveat that statement with the acknowledgement that not everything is black and white. There is a spectrum to the level of competency. It is similar to math. Anyone can do math, even a young child. However, there is a difference between a young child doing basic arithmetic and an expert mathematician. So, anyone can code, but not just anyone can write production ready, enterprise level code.
The distinction between someone writing hacked up code and beautifully crafted code is absolutely crucial to understand. Sometimes, with programs like the Hour of Code, people get the wrong idea of what it takes to be an expert developer. Sometimes, unfortunately, the skills of expert developers can be overlooked. While anyone can write, there is a good process that most great developers take that make their code much better compared to code that just compiles.
Research Your Problem
The best skill you can learn as a developer is how to find information. I may use Google more than any other tool available. There is so much information out there, starting every problem from scratch is insane. Learn how to properly search to find the information you need.
Once you have that information, read it and read it thoroughly. It is important to have a great idea of what is possible even if you aren’t using that specific piece. Also, make sure you read the information around how to properly do this as well. For instance, say you read an article about writing a custom controller. While having that controller is nice, it won’t do you any good if you don’t know how to write a proper unit test for it.
When approaching a new language, you must be patient. Take some time to learn the basics around that language before you decide to jump directly into the problem you are trying to solve. It is usually a good idea to write some practice code in a dev environment that may not be directly related to exactly what you are trying to do. This is a good way to give yourself some experience with a new language or platform without directly impacting the long term health of the code you plan to write.
Craft A Solution
Once you have researched your problem, read a ton of documentation, and wrote some practice code to get familiar with what you are about to do, it is time to start crafting your code. I want to call out the usage of the word “craft” and not “write”. Great developers work like a great artist, crafting elegant, clean, maintainable code. There is preparation and inspiration that goes into each line that is written. Everything is deliberate and everything is understood. In fact, most of the time great developers spend very little time actually writing code. When someone is hacking up a piece of code, they sometimes copy and paste code but have no idea how it actually works. They just jump directly into the code and start hacking away. This is usually a really bad idea because you have no way of verifying what you are writing is going to do exactly what you want it to do. On top of that, it usually leads to extra code that either doesn’t help solve your problem or actively hinders it. If you run into this situation when trying to modify code for your own purposes, slow down and go back to step 1. Research, read, and practice. In the long run, this investment will save you time, despite it taking a bit longer now. Great developers understand that a much larger percentage of time is needed to maintain code than to initially write it. Do your best to get it right the first time.
Finally, now that your problem is solved, learn more. I can’t stress this enough but education is so important for developers. Specifically, the ability to educate yourself. In my experience, most great developers spend a large majority of their time researching, reading, and practicing. Languages are constantly changing, especially in Salesforce where there are 3 major releases a year. Keep learning but take your time when it comes to jumping directly into production code. There is a ton of information out there available for you to learn. Invest the time needed.
My main point of this article is that I want to send a message to all new developers. Slow down! While programs like Hour of Code show you how to write code very quickly (within an hour to be exact), that just isn’t how it is done in the real world. No one can pick up a brand new language and write production ready code in an hour. Ultimately, great developers are great problem solvers. They view the problem from all angles, find the best way to approach solving it, learn how to do it, and then solve the problem.
One of the most frustrating things I see is new developers moving too quickly with the assumption that just getting something to compile is the correct approach. This is an easy trap to fall into with Salesforce. Salesforce provides anyone with the means of creating a custom application through the declarative framework with absolutely no coding experience required. This at times gives people a false sense of ability when it comes to extending the platform. This isn’t a negative against anyone, but if you don’t know Apex or Visualforce, don’t decide one day that you can write a Trigger. It just doesn’t happen overnight like that. You need to take your time and follow the right process. Research your problem, read documentation, be patient, craft a solution, and educate yourself. Too often I see questions on the Salesforce StackExchange where unit test best practices are completely ignored in favor of code coverage or Trigger best practices are ignored in favor of getting something done quicker.
It is well known that the need for developer talent is insanely high right now and it is expected to grow. This is a perfect opportunity for anyone looking for a new career, as it opens doors that traditionally require much more formal training. However, before we get all hyped up, the need is actually for great developers, not just anyone who can hack together a piece of code. As with all things in life, it requires an investment. Invest some time and your results will be exponentially better. Approach it as if it is something anyone can do and you will have an extremely rough time.
Important Note: It is important to remember that this is my personal opinion. As with any opinion, it may or may not reflect the opinion of any organization I am associated with.