Separating the Designer from the Maker
Building modern applications requires a lot of knowledge and expertise. At the highest level, it includes considering users needs, an interface, saving & requesting data, hosting, and deployment. Typically teams of people, each with expertise in a specific function are required to build a single application. The bigger a project gets, the more specialized the individuals become focusing on an increasingly smaller part of the broader application.
In a common Agile development practice, Product Owners and Business Analysis work to understand and document the business requirements. UX Designers and researchers design and test prototypes to discover user needs and provide designs for a usable interface. Front-end Engineers work to build the interface while back-end Engineers build the server logic and database structure. Dev-Op specialists work on getting the applications deployed. Each of these people can be subdivided even more granularly in many cases.
This process works reasonably well; however, through all this complexity, I feel we have lost something important.
I work as a UX Designer & Front-end Engineer; however, I consider myself a maker someone who enjoys making stuff that other people can enjoy. Because of this I have taken up Blacksmithing and have enjoyed making things with the permanence of steel. Heating the metal until it is glowing red hot and relentlessly hammering it to move it millimeters in the direction you wish is addicting.
When I go to make a knife or hook, I typically have a general design in my head of what I want to make that acts as my overall vision for the result. While hammering, there is an element of chaos that provides inspiration and alterations to my original design. A drop point knife might slowly become a more exotic knife shape just because the metal moves in a certain way. It is the same idea as Bob Ross's "We don't make mistakes, just happy little accidents."
With the specialization that we find in application development, this natural feedback loop gets cut-short. Designers design and don't have a significant role in the development or making of the application. Many front-end engineers build to design specs and don't have a feel for the essence of the design. That ability to quickly and naturally adapt gets stunted and becomes mechanical we lose the artisanship in building applications that are useful to real people.
Not having instant feedback and the ability to make changes on the fly causes churn in a project. For example, I have often seen front-end developers spending hours getting details to line up in the exact way the UX designer has in a mockup yet the designer might not value those details in the design and would consider another much easier option just as valid or potentially better. The reverse can also be true, UX designers who don't understand how data flows from the back-end to the front-end can struggle understanding technical constraints and as a result, be continually making design changes causing project delays.
I write all of this to encourage anyone in the software development field to learn about the holistic process and not limit yourself to one specialization. Grow and expand your skills beyond design, engineering, or product management. Don't have the mentality of "that's not my job" because at the end of the day we are all makers working together to create something useful to other people.
I don't see application development becoming less complicated any time soon, so there needs to be specialization in the field. However, don't let your self get comfortable in that single aspect but instead strive to grasp the larger picture of what you are making.