Before we begin, I would like to say few words about why I decided to write this. For a long time I wanted to write an article which will focus solely on developers who seem to be less and less appreciated and often, taken for granted. As someone who had opportunity to work in a serious development environment, even as a software Quality Assurance Specialist I realized how things can become complex quickly and I was quite impressed how developers often find a way to deliver, even though sometimes pressure can come from all sides like management, QA and even community.
If you are a gamer, or if you are following gaming news, you noticed what kind of things today's developers need to deal with; unfortunately, it goes so far that someone would dare to send a death threat to them, which boggles my mind.
As I have enormous respect for them, I would like to dedicate this article to them and their challenging work and often sacrifices we usually do not see or feel. Programming can be incredibly stressful, and deadlines are sometimes a contributory factor for a vast amount of stress and overwork which can affect personal, physical, and mental health, and therefore family life.
Hopefully, this article will shed a bit of light on what it takes to be a developer. Hopefully after reading you will have more appreciation and respect for them.
What it takes?
To be a programmer or developer it takes a lot of education, effort, knowledge and many sleepless nights among many other things. Most importantly, to become an efficient / good developer often takes years of constant learning and adapting to latest technologies like hardware, software, programming languages and so on, simply because technology evolves and a programmer who stops evolving soon could be left behind.
Here are some things a programmer typically needs to know or own before becoming efficient or good at what he is doing:
Decent equipment and knowledge of operating systems such as Windows, MacOS or Linux. Especially if plugins or software which are developed needs to be supported across multiple operating systems. If that’s the case, developer needs to have more than one machine.
In case of developing plugins for e.g., C4D, developer needs to have a licence too. On top of that, they also need to have proper IDE tools which are specialised software packages / environments for programming.
Depending on the software for which something is developed, good knowledge of a programming language is a must. They know more than one in many cases. Some applications can also have their own language which is not used anywhere else. A good example of that is a Houdini’s Vex language.
Developer also needs to have a good understanding of user interface and user experience design, because that can be crucial for success of their product. Good feature set without good UI and UX and vice versa can be quickly forgotten and not taken seriously.
Dealing with Apple
Developing applications for Apple alone is yet another hurdle they need to overcome as it’s not easy to meet their standards.
Creating licensing systems for plugins is yet another hurdle and system which is not easy to overcome and develop.
Another crucial thing is testing. If applications or plugins are not thoroughly tested, often dissaster is what follows next. Now, testing alone can be full time job; thus, if developers are lucky enough, they will have few kind souls to help them out with the testing and reporting bugs or by sharing ideas which should eventually bring the product to a satisfactory user-experience and the next step can be executed.
An art of its own. I think people do not understand enough how good marketing can be crucial for success. Many times, in history we see how good marketing can sell shitty products and how good products without good marketing can fail.
In some cases, if there are no places to sell your product or advertise, developers often need to have their own websites, which again requires investment and time to create. And often, selling product on 3rd party websites means part of the earnings goes to the website services as a selling fee.
What is a good product without good tutorials? Well, usually a product without a tutorial means some pain for the end user, as he would need to discover all the features and capabilities for himself, which could lead to a lot of frustrating moments and eventually giving up on the product. So tutorials are a big part of more general success, which once again requires time, effort and different kind of knowledge to create if developer cares about good service.
After all of this, at the end of the day, when everything is set and done, things are going nicely, you still must provide a support for the product you are selling. More often than not, there will be some customers with hardware or simply lack of knowledge that will need assistance or help in one way or another. If you are lucky, your customer base will be polite and understanding, but if you are not, it might happen that you get some angry customers which can be hard to handle and can bring a lot of stress and sometimes bad press.
Have an officially registered company.
Having an accountant to handle company legal requirements.
Using a 3rd Party reseller to sell your plugins is required so that they correct collect and remit all taxes around the world for you. IE GumRoad or FastSpring. You can't just use PayPal. Having a company also makes it easier to do the following (but at a cost $$$). Registered trademarks so you don't get sued by anyone who decides to start using your name or trademark symbol.
Your company is also registered with Apple so you can sign and notarize all your plugins with them to avoid them being deleted from users computers by the OS.
Having the company also allows you to get a signed digital certificates for installer authentication on windows.
Hopefully after reading all of the above points about what it takes to be a developer you will have more understanding what it really takes to develop a piece of software. So next time if or when you download free script, or a plugin, make sure to at least say thank you. Especially if you liked the product say few kind words, do not take the time one developer took to create something for you for granted. In the end of the day he or she made your life easier; make sure to appreciate that. They will not ask you for money, but they will appreciate any kind of donation, even the smallest one. At our community forums you can tip the developers for whatever amount you like. It’s also good to mention that we do not take any % on a tip so every $$ goes directly to them.
For now this is all. If you guys like the article, we might be doing few more in the future as this topic can be discussed for hours maybe days. I would also like to cover more sides like QAs, or designers or even management and talk more about their side of the story and daily tasks and problems.
I would like to thank Kent Barber for helping me out with the points I should be talking about and he will have his own articles which are be much more technical in nature, so if you are interested in that too, please visit his webpage Plugins 4D
Thanks for reading and stay safe!