Polymath pol·y·math /[pol-ee-math] (noun): A person learned in many areas of the arts, sciences, and other academic disciplines.
-See Da Vinci, Leonardo
You don’t see many polymaths walking around these days. Even learned Ph.Ds sometimes have extensive knowledge only in the narrowest of specialties. For instance, a biology expert may know everything about a single human gene, but nothing about other genes on the same chromosome.
Software development has also become quite specialized. After learning the general principles of computer science, many developers specialize in narrow fields (database programming, bioinformatics, front-end development, embedded systems, etc.).
Software developers specializing in a high-demand area can find themselves very job-secure forever. Those making bad choices may become experts in something no one needs.
Another Path: Full-Stack Development
Yet there’s another career path: full-stack development. Here are 5 things to know:
1. What is full-stack development?
2. Is it really possible to specialize in everything?
Probably not. “Specializing in everything” is oxymoronic at best. But it is possible to know enough about almost everything to become a key member of any development team.
3. What good is a full-stack developer?
First, the bad news: A full-stack developer is not a one-person construction company who can build an entire web application end-to-end. The good news is a full-stack developer can make the right technology choices and design high-level system architecture. He or she has detailed, technical knowledge of how all the pieces work together and what combinations to avoid.
4. Where can I find a full-stack developer?
It seems most developers with in-depth knowledge of more than two technologies are calling themselves “full-stack developers.” By asking the right questions, it’s pretty easy to spot the real thing. In any case, the real software polymaths usually have good references to back up their claims.
5. How can I become a full-stack developer?
Becoming a full-stack developer involves a whole lot of self-teaching. There are tons of technology resources available that go in-depth. Learn about it, then offer to help with project tasks outside your competency to get some practical, resumé-worthy experience. It will take time. Eventually, you will have enough experience to call yourself a full-stack developer.
Even developers without full-stack development aspirations can benefit from learning more. If demand for your specialty dries up, you can easily pivot to something else. Knowing how your code affects other layers of the technology stack can make you a more valuable team member.
As nineteenth-century British biologist Thomas Huxley put it, “Try to learn something about everything and everything about something.”