The Passionate Programmer, an intense reading week
Passionate Programmer, Mythical Man-Month essays, Hartl Tutorial, Rails 3 Way,
The past week has been excitingly intense. I finished The Passionate Programmer, half-way through Hartl’s Ruby on Rails Tutorial, read the first two essays of The Mythical Man-Month, and read about 100 pages of The Rails 3 Way. At Launch Academy, we worked more with Test Driven Development, databases, Active Record, and played with our breakable toys.
I wanted to share a few thoughts and lessons that I have learned
Chad Fowler introduces a concept taught to him about success and mistakes, stating “ that the more successful you are, the more likely you are to make a fatal mistake. When you’ve got everything going for you, you’re less likely to question your own judgment.” This is an important principal to take in all fields, not just programming, because at that point, you begin to settle, which means you lose focus on improvement. In a sense the less replaceable you think you are, the more replaceable you are.
Fowler discusses a mentality towards work that is important; the first is learning how to fail. When issues come up, don’t try to hide it. Mistakes caught early are less of an issue than mistakes caught late. If the mistake was your fault, don’t try to find a scapegoat. Take responsibility, move on, and ask for help. When you are at a restaurant, and a waiter makes a mistake, instead blaming the cook or making other excuses, he says he’ll take care of it and bring you a new dish (or at least he should).
If you went to a tech savvy teenager and bragged about your new computer with several gigabytes of RAM and the latest CPU speed, they would either be unimpressed or won’t necessarily care. However, if you told them that you could run the latest Call of Duty game at full resolution without a stutter in the game’s appearance, then they would sit up. Similarly, when you talk to other people about what your working on, they are not interested in the details. People want results and want to know what outcome this piece of software will do. Speaking in technical language to non-technical businesspeople will be ineffective. As Chad Fowler says, “Common sense tells you that to sell a product to an audience, you have to speak to that audience in a language they can both understand and relate to.”
Based off the previous point, when you are designing a product, you want your product to be remarkable. Usually products that are remarkable are good, but not all good products are remarkable. To be remarkable, there has to be a significant difference between you/your product and others in the industry. Think of a Purple Cow. Seth Godin, author of Purple Cow and master marketer, makes somewhat of an obvious assertion that the best way to gain customers is to make your product remarkable. The purple cow is not the whitest cow, the cow-which-gives-the-best-milk, or the prettiest cow. The purple cow is the one that when you look onto a field of 100+ cows, you immediately spot the remarkable one.
We had a guest speaker at Launch Academy that came last week to advise us on a whole range of topics. Johnny Boursiquot, Partner, Technology Director, and Software Architect at MAARK, discussed the industry as a whole and what he learned from his 15 years in the industry. I was pretty excited to find many similarities between him and Chad Fowler.
It has been an amazing ride so far. My excitement going into this program has definitely been amplified the more I learn. One of the essays in The Mythical Man-Month, which is a collection of essays on software engineering, really resonated with me in why I am enjoying this field so much. Why is programming fun? First, its the sheer joy of making things. Similar to kids playing in a mud pie or building legos, adults enjoy building things, especially when its their own design. It is also the pleasure of making things useful for others. Deep down we all want our work to benefit or be helpful to others.It is also the “fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them working in the subtle cycles, playing out the consequences of principles built in from the beginning.” That is a pretty cool statement in the Tar Pit essay. Programming brings the joy of constantly learning, which is a result of the non-repeating nature of the task. The programmer is like a poet. “He builds his castles in the air from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures”.
Dorothy Sayers, in her book The Mind of the Maker, divides creativity into three stages: 1) the idea, 2)the implementation, and 3)the interaction. A book, or a program, or a piece of artwork, comes into existence first as an ideal construct, built outside of time and space, but complete in the mind of the author. It is realized in time and space, by the brush, ink, pen, silicon, wire, or keyboard. The creation is complete when someone reads the book, runs the program, or sees the artwork, thereby interacting with the mind of the maker.