Attachment is dangerous because attachment can be severed. The ego attaches itself strongly, especially to the images of ourselves in other people's heads. We all want to be perceived positively, however we define that, some combination of: strong, competent, authoritative, reliable, smart, attractive, friendly, likable, etc. To achieve this aim, we must not make mistakes, not show fear, weakness or doubt.
It is tempting to say that to be egoless requires that one go in the opposite direction, to revel in our mistakes, to celebrate our weaknesses and failures. This is a more subtle mistake, but it is a mistake nonetheless.
To avoid both the trap of self-aggrandizement and self-loathing is the key attribute of egolessness. This is the essential ability to be able to look at oneself in the mirror, and see yourself as you really are, without bias, positive or negative.
The technology world is filled with people, people with all kinds of strengths and weaknesses, people with egos and (remarkably) people seemingly without. It is to those humble, good programmers that have created so much for so many that I respect and admire. Two that come to mind immediately are Larry Wall (inventor of Perl) and John Resig (inventor of jQuery). They are amazing people.
I also have a great deal of respect for Rich Hickey (inventor of Clojure), Mike Bostock (inventor of D3), Oliver Steele (inventor of OpenLaszlo) and Edward Tufte (author of a wonderful book on data visualization).
This transition hasn't been fast or easy for me. For one, it represents a sea-change in tooling: the web platform has an entirely different taxonomy, different tooling, different libraries (indeed, different patterns), different debugging techniques, different build tools, different runtime structures, and different communities. Moreover, there exists a dizzying array of products and services available at every level of abstraction you care to name, in every combination you can imagine, and a few more besides.
The way in which web applications are built is still very much in the air, although it would seem that the community at large has settled on a few common points:
- node is good.
- npm is good.
- git is good.
- github is good
- single page applications are good.
- modern browsers are good.
- mobile is good
- css frameworks are good.
- css languages are good
- front-end component frameworks are good
- realtime is good
- websockets are good
- APIs are good
- JSON is good
- markdown is good
- Functional is good
- Pure functions are good
- Immutable data is good
- Promises are good
- Statelessness is good