Over the years I have been involved in a number of technology initiatives, but primarily on the commercial side. This kind of exposure meant that I developed a high level of comfort between the technology and business domains - but my comfort in the technology domain never grew past the conceptual, albeit deep, understanding of the technical environment, tools and theory. I was able to manage technology projects effectively, as long as I had a strong technical project manager to lean on.
Being in the technology related space (almost every vertical is now!) without coding skills, although possible, is not ideal. There are a number of ways this can limit your performance – here are a few recurring issues:
Reliance: Having to rely on someone else to meet your commitments is dangerous and at best frustrating. People work to different schedules with different priorities and motivations. If you have to rely on someone for your primary task to be completed when it is priority number 7 for them it creates a lot of additional overhead. You spend a lot of your time syncing schedules and deadlines instead of doing the actual work, and even then you cannot be sure of the final result.
Speed: Typically the project will be delivered at the speed of the slowest person, so timelines are out of your direct control. Schedule, wait, work, review, and repeat – this cycle can really slow delivery down, and even more so if there is any communication gap.
Quality: At times projects (especially design centric ones) require an element of experimentation to get things just right. This means that the requirements are fluid and your technical partner also has to be of the same mind set as you. If you have someone insisting that "the requirements are being met” and there is a difference in quality criteria, it can lead to a less than excellent result.
Of course the level of this challenge differs for internal teams, sub contracted teams, freelance developer and strategic alliances - but to some degree these challenges remain.
There often tends to be a different approach towards client projects from a technical perspective and from a sales/business perspective. From the sales side the objective is to contort, within reason, to ensure that the client is very happy, if not ecstatic, and that the final deliverable ensures a raving fan. From a technical perspective, often the driver is to meet the requirements specifications and contractual obligations. The difference between these two is where mediocre projects take birth.
This of course is a generalization of my experience, and I have had the privilege of working with many technical partners who have the same level of concern and commitment to the end product as those that are interfacing with the client, and the end result is always a testament to that.
In a nutshell - only if the technical partner shares the same values, priorities and commitment as the business is such a partnership most effective.
Learning to code for enables you to own the deliverable, or much larger part of it, from beginning to end – it allows you to ensure commitments are met and quality is never compromised. It is for this reason that I have always wanted to learn, but hadn’t successfully done so, till now………
So what has changed?
The internet has changed and technologies have evolved enabling non technical people to jump onto the coding bandwagon in a relatively painless manner. Previously, despite my best intentions to learn, the task seemed much more daunting and time consuming than it is today. Often core responsibilities do not provide the luxury of spending time on developing new skills set – especially when the road seems long and arduous and the returns uncertain. Now that is no longer the case – the level of investment to acquire commercially relevant skills is much lower, and the road is much easier and rewarding. Some recent changes that have contributed to this shift are:
Software as a Service (SaaS): the rise of various SaaS players in niche offerings has made the ability to add features and functionality within core applications much easier than before. Need customer support on your website, error management, or design widgets? You don’t need to reinvent the wheel, you simply need to identify and integrate an appropriate service.
Infrastructure as a Service (IaaS): No more provisioning of servers , configuring the environment, installing service packs and finding a trust worthy networking guy to manage it all. IaaS offerings have changed all of that – the ability to get a commercial grade environment up and running within a matter of minutes changes the dynamics significantly. One command in Heroku and your environment is set up, anther command and your code is available on the live environment and not a single network engineer in sight.
Communities: There are a plethora of online communities dedicated to help you learn and trouble shoot problems. Sites such as onemonthrails.com, codeacademy.com, treehouse.com and lynda.com provide courses that enable you to start with the basics, and graduate to complex projects – all at your own pace. If you are stuck on an issue you would be hard-pressed not to find the answer on stackoverflow.com or other similar sites. The access to such resources has made learning how to code much easier and dare I say it – enjoyable.
As the technology evolves into more user friendly formats and syntax and tools are created that lower the barrier to entry coupled with an active and resourceful community – the chances of converting a newbie into a coder that can commit code increase significantly, making this a viable proposition even for those whose core responsibilities are not directly technical.
Ok…so it is getting easier to learn and there are a lot of tools, but don’t you need some basic coding skills to get started? Well, you need some basic skills…….
Can you browse the internet, read and type? If so – congratulations! You have all the technical prerequisites covered.
There are some factors though that can significantly help you get through the learning troughs and greatly improve your chances of success:
Having a mentor or someone that can guide you through the various questions you have is a god send. This can be a friend or colleague, but nothing beats having a company behind you! For me working at Vidpresso has been a personal game changer in this regard. At Vidpresso the culture values technical skills across all roles – and that means more than just lip service. Vidpresso supports all employees in developing technical skills, not only by providing company sponsored training and in house workshops, but also allowing work days to be allocated to personal technical skills development – a claim not many companies can make. Our corporate structure further reinforces this; a remote company with a flat hierarchy and cross functional responsibilities encourages everyone to transfer skills and knowledge to ultimately develop a more robust consolidated corporate skill set. This kind of support structure changes the whole dynamics of learning how to code.
With so many technologies and areas of expertise the decision of what to learn or in what sequence is in itself a challenge. Having a roadmap of technical skill development enables clarity and makes the learning process more methodical. A mentor is invaluable in helping set the roadmap. Part of this roadmap also needs to incorporate a project roadmap. “Practice makes perfect” is highly relevant in coding and unless you have a project on which to focus, it is possible that you won’t get enough practice to adopt the skills as second nature. You might not hit your 10,000 hours, but by having a project on which to work you chances increase significantly.
At Vidpresso we adopt an approach that merges a skills and project roadmap. Non-technical people start out with the basics: HTML / CSS and then are slowly inducted into more advanced concepts and technologies with the ultimate goal of everyone being able to commit code to the application. During each skill’s training phase we work on relevant tasks and projects within that domain. Although the technical contribution to the company’s products is low initially the benefits can be significant in the long-term to everyone.
This is probably the most important success factor of all. If you are committed, and have passion and a desire to conquer the enigma of coding – you will. At times things just don’t make sense, the logic is not clear, things break for no apparent reason, and the process can be frustrating. “Your attitude will determine your altitude” - there are no two ways about it.
I am now at a stage where although the process of learning how to code has started, it is just beginning to pick up speed. It is something that I have so far enjoyed and I look forward to my allocated “code days” each week. Although I have taken this road a few times before, I feel it is different this time. I have the required tools, resources and support structure to enable me to succeed. Of course I have to be realistic, and understand that I will not become an elite coder by doing a few courses – but if I am able to gain the skills to manage the recurring technical requirements from our clients without having to turn to others within the company – I will feel I have made a significant achievement. The freedom to direct my professional destiny lies in the art of coding.
Stay tuned for intermittent updates, as I venture down this virtual rabbit hole…..
Photo by Flickr user josefgrunig