Computer-related work is split into 2 parts
Two categories?
Stuff we work on related to computers is largely split into 2 categories:
- Computational / Mathematical
- Architectural / Software Engineering
Computational
Breakthroughs in the field like advancements in AI, distributed system algorithm come from computational thinking where your "fast brain", the part of your brain responsible for algorithmic problem solving (think things like math, competitive programming) is used to solve a really hard specific problem or find a really efficient solution to a problem (like the creation of neural nets)
Architectural
Working in any big software project, we start developing opinions on how the code should be written, not just solving the problem itself, which is computational thinking, but how it should be solved.
This leads us to have discourse around these topics, clash with our stark opinions, read and write books on the matter such as Clean Code, A Philosophy of Software Design, The Pragmatic Programmer, Hypermedia Systems and so on.
This work is Architectural work. An easy example of this type of work can be seen in Web Development, as the work that we do is about managing the complexity.
While balancing the functionality and usefulness of our tools here again we find conflicting philosophies.
Discourse on languages (golang vs javascript), tooling (htmx vs react) and standards (flutter (an engine) vs react native / native (native components)). These problems seem to require good communication skills and maybe even managerial skills, beyond just computational know-how. This is notoriously hard to test under an interview circumstance.
As of late it seems the way we develop these skills are being put under threat. With AI coding being used in most of the projects I see, whether be it hackathons, university mates or when prototyping. It's hard to understand what good architecture truly looks like to a junior nowadays. I feel blessed to have been able to code (if not much) before 2023 and the copilot craze, seeing the downfalls of bad architecture physically (as in literally having to physically type the unnecessary code out). Writing code by hand is a must to experience architectural downfalls.
You really get to see where concepts such as modularization shine when you're forced to rewrite the same logic twice by hand, or forced to implement a function to a similar use case which could have been generalized.
Conclusion
So please, take some time, write your code and if you can't, atleast read your code. I'm not saying don't use Gen AI nor agents, but really try to see and understand. Implement the least complex, yet most user friendly solution that you can bring.
Reply