Many view the developer position as one that requires an incredible amount of knowledge and memory retention. These are great skills for any developer to have, but not two that I personally focus on or rely on. My most valuable assets as a developer are my intellect and my ability to learn on the fly.
What is “Learn on the Fly”?
By this I mean learning a new technology enough to implement it in a project. This is usually not an in-depth understanding but more of a means to an end implementation tactic. It’s extremely useful when working in an agile environment.
Why “Learn on the Fly”
As an aggressive opponent of standardized testing I have always believed that intellect is more powerful than knowledge. The key difference being that fact memorization (knowledge) means nothing without understanding (intelligence). You can have all the facts in the world, but they are ultimately useless if how they are connected or work together is unclear. This the underlying idea behind learn on the fly. It’s not about knowing exactly what everything is but learning enough to keep your project moving forward while understanding the basic functionality.
Latest Isn’t Always Greatest
As a developer with the rate that technology is evolving it’s incredibly valuable to be savvy to the newest tech. However, it can often feel impossible to keep up. The key is not to focus on learning ALL new technologies, but only on those relevant to your current projects. Often these latest releases will not be the best options due to stability, security, or compatibility issues.
I’ve spent most of my professional time working in PHP, LAMP, and/or the WordPress framework. There are plenty of alternatives that I’ve explored including Rails and the MEAN stack and though some would argue these are superior or mandatory for successful web development it’s important to keep in mind that mastering one is always better than only being decent in all of them. And usually after a bit of research into a project it will become clear that the best solution is often a well established (usually older) technology.
A Look at Programming
As a web developer it can feel like the largest limitation is the number of languages in which you can work. Many think this is equate “the languages you know” with “the languages you can work in” but they are not necessarily the same. New programming frameworks/languages can be easily learned on the fly. The biggest barrier is learning to think like a programmer. This does not mean memorizing any particular language or syntax. Instead this is more about learning how to analyze a problem to find it’s root and come up with the most effective and efficient solution.
Once you master thinking like a programmer switching between languages/frameworks becomes infinitely easier. It’s becomes less about “what are you trying to do” and more focused on “how to accomplish your goal”. A competent developer who has a background mostly in PHP would have very little trouble adapting to work on a Python or Ruby project. And anyone with an understanding of MVC design and/or object oriented programming would have no problem jumping into a project in Django, Rails, or Objective-C. Whenever learning a new language I always prefer tutorials and walkthroughs over books. I believe you don’t truly learn something until you can teach someone else, and the easiest and quickest way to learn something is by getting your hands dirty. Resources I frequent are CodeAcademy, Udemy, and any of the official language guides and tutorials that can be found online.
Tools and Frameworks
The thing that can feel second most limiting for a web developer is the tools available at their disposal. There are many, they can range from very simple functionality to complex all-in-one solutions, and they can feel overwhelming even for an experienced developer. For example, a quick search for “text editors” will reveal that there are hundreds (if not thousands) of different options for text editors. I use SublimeText 3 as its functionality is only limited by the packages that can be created by the community, and it’s really easy to customize.
It’s not important to always be using the newest tools possible. In fact many projects are built on older technology and frameworks due to their reliability and security. What is important is that you understand the capabilities and limitations of the tools you are using.
What to Ask and Where to Look
What I would argue to be the most important part of learning new tech on the fly are two points a developer has to answer:
- What to ask to solve the current problem
- Where to look for the solution
80% of development is knowing your way around these two points. If you don’t know what to ask then you can’t possibly find the solution that will work for you. The more specific you can be with your question the better.
To narrow down the “what to ask” I usually try to start by making sure that it’s a problem that someone has run into before (9 out of 10 times it usually is). This is followed by ensuring the correct terms and referencing is used (for instance, if the problem is with a specific component/plugin use that component name).
Additionally you’ve got to be able to recognize where to look because if you’ve ever tried to look up anything on the internet (a dev’s number 1 resource) then you’ll know that there is an endless sea of information to dig through. It’s good to start at the source if possible. Check the resources associated with the component then work your way to checking larger resources like Stack Social.
Learning new technologies on the fly can be incredibly rewarding and is not as daunting a task as it may sound. Mastering a programmer’s train of thought and understanding the requirements of the problem or project are key. In the vast sea of technologies available to developers above all else you must know what to ask, and where to look.