So, I&#x27;d like to know others&#x27; opinions.  Is computer programming today primarily:  A form of communication?  Arts n&#x27; crafts?  A virtualized form of assembly&#x2F;construction?  None of the above?<p>I&#x27;m in the arts n&#x27; crafts camp.  Craftily building up abstractions and playing them off each other -over time- seems to be what we&#x27;re doing here.<p>I think any program representation should fit your use case.  If Excel or SQL fits for data simulations, use that to program, if C++ and Assembler fits for your systems coding, use that, etc...<p>I&#x27;m not a fan of CASE tools, BPEL, instarepl, naked objects, or any other visual or visual&#x2F;textual modes of coding for general programming work.  I agree with the scalability and productivity issues others have mentioned with visual programming systems.  Visual probably has a relevant place somewhere in effective software development, but they&#x27;re just not general purpose enough because the visual bits and bobs tend to muddle the abstractions and are generally too fiddly.<p>I intuitively agree&#x2F;sympathize with the myth that less lines of code == less bugs.  I think we should seek for languages and libraries that require less lines of code to get stuff done.<p>Before we can bravely board our starships and chat with our sentient computers in order to program them, we&#x27;ll need people to write less buggy code with existing systems.  For me, that requires:<p>* TDD which allows everyone to verify their work<p>* Employing Agile teams to encourage robust communication and to reduce YAGNI, and<p>* Establishing software architectures where tools and libraries are chosen -primarily- for their ability to promote developer productivity