On my way to becoming a professional developer I came across lots of wannabe-developers. Being a developer is not easy and contrary to popular beliefs, not everybody can become a developer. It requires a logical brain, a lot of dedication, hard work and the ability to understand abstract concepts. Because the idea of development is so intangible, it is easy for impostors to make you believe they are great developers, when they are really not.
Why do we see so many Wannabe-Developers?
We live in a highly service-oriented industry. To this industry, developers are like builders during a real estate boom, soldiers in a war, or factory workers during the industrial age. They are a necessity, and the service industry couldn’t exist without them. A world that is becoming more an more complex needs brain-power to maintain those complexities. This may be one of the many challenges that our planet faces in the future. Take the example of a car. In the past you were able to fix many issues yourself. Today you need a mechanic who knows how to operate the computer that needs to be connected to your car’s interface in order to receive an error code. Electric cars are on the rise. Imagine the knowledge you will need to fix an issue on a Tesla.
The high demand for good developers meets low supply, which is why developers are sometimes referred to as the modern-day heroes. This evolution in itself is less than desirable because it creates a difficult socio-economic situation that we all need to deal with. Just take the example of San Francisco. So called techies, developers, are causing an unstoppable process of gentrification and social segregation in the city. Many non-technical college degree holders find themselves struggling to make a living. But what we see happening in San Francisco is also happening in the whole world, just slower. People recognize this situation and start offering services for the demand we spoke about. There are no high-barriers to keep you from offering development services. Unlike the profession of a lawyer, or a doctor, anyone can call himself a developer – whether she really has the skills and knowledge is another question. This is a reality that won’t change easy. You as a customer need to be aware of that and learn to find true professionals.
The Definition of a Professional Developer
Let’s think for a moment about what it means to be a professional. A professional is a person who has decided to conduct a specific activity full-time. She trades her time against money. She makes a living off of what she does. This is the most important question you have to ask when assessing a developer. If she doesn’t match with the description, ask yourself if you want to work with a professional or not. Depending on your project and situation it may be acceptable to work with an amateur – it’s really up to you, but you should make a conscious choice.
A Professional Developer Provides an Estimate
A professional developer will provide you with an estimate whereas a layman will just throw a price at you hoping you’ll accept. The reality is that any kind of development is a very involved process. A professional will at least try to understand the essence of your project and assess its feasibility and approximate cost. This is not to say that his estimate can’t be too high or low, but it shows that he has some idea as to how many hours he will have to work on your project. Don’t be afraid to ask for an estimate, but don’t mistake it for a complete blueprint or statement of work. Those are further steps that can be made once you agree to collaborate.
A Professional Developer is Interested in Details
A professional developer will be very interested in the details of your project. He needs to have a good understanding of your company in order to assess what technologies and infrastructures to pick. He needs to know the current state of your company, as well as where you want to take your business in the future. It’s essential for him to know whether you have technical staff that will maintain/oversee the project after completion. A developer who doesn’t ask plenty of preliminary questions is a red flag!
A Professional Developer Values a Good Team
A professional developer welcomes every opportunity to learn from others. She’s not afraid of working with people who know more than she does, because she knows that she can only grow by being challenged, and by learning from others. She will have strong opinions about best-practices, but will always remain open-minded to different approaches. She understands that a team must not only consist of technical people. Project managers, user-experience architects, designers, business analysts, and many more are invaluable and necessary in successful teams.
A Professional Developer Writes Documentation
It may not be a favorite task, but writing documentation is part of being a professional. As developers we like to write clean and efficient code to solve our customer’s daily problems. We come up with intelligent solutions and sometimes forget that all the work was in vain if our creations can’t be used. Therefore a professional developer understands the importance of writing documentation for both technical and non-technical users that will have to deal with his code in the future.
A Professional Developer Adopts Test-Driven-Development (TDD)
This concept is hard to understand even for some entry-level developers. TDD means that your developer writes a larger number of rules that check whether her code does what it is supposed to do. It helps her write healthy, modular and flexible code for the system now and in the future.
Suppose you car needs unleaded gasoline, but you mistakenly fill it up with Diesel. Wouldn’t it be great if your car ran a test checking fuel type each time you are about to start the engine? It would save you from having to buy a new engine, and thus a lot of money.
If your developer doesn’t write test around his code, similar disasters could happen. Have you ever heard someone complain that they are afraid to make changes to their software because it could break everything? Test-Driven-Development helps exactly with that problem. Be aware though that your developer needs to spend nearly double the time on your code as if he were to skip writing tests. Yes, it is more expensive in the beginning, but you will save money and time in the long run.