A while back I wrote an article about how to use “Art of War” to be better Software Craftsman. The idea behind the article is that every craftsman should create a personal mindset in which she is able to create great software. One of the biggest problems I faced in creating that kind of mindset is the inspiration and since I am quite a bookworm, I have found inspiration in books.
Sometimes those books are technical, and sometimes non-technicals, the source is not important as long as it makes my blood flows. However, the problem was not always inspiration itself, but keeping that inspiration at the high level for a long period of time. So, I started using cool sentences from those non-technical books to create mini-mantras, in order to boost my inspiration in my day to day work. Basically, I have used some of my other interests to remind me of what beeing a good software craftsman and being a good human is all about. And apparently, apart from Art of War wich I already covered, I use Nietzsche’s philosophy to remind me of those virtues.
Why Nietzsche’s philosophy so cool? Well, first of all, it is quite controversial. Nietzsche applied himself to such topics like morality, ethics, religion, psychology, and social criticism. While covering all those topics he created some polemical ideas. His concept of Master-Slave Morality is one big critic of the society. In this concept, he argues that there are two types of morality, master morality and slave morality, and that struggle between those two polarities can be seen trough history.
As far as controversy goes, Nietzsche is probably most famous for this proclamation “God is dead”. He pretty much attacked the Christian religion, as represented by churches and institutions, for what he called its “transvaluation” of healthy values. Not to mention his concepts “Will to power” and “Ubermensch”, which describe human ambition to become something more than a human.
Also, he was the father of one form of nihilism – existentialism. That is a philosophical theory that emphasizes the existence of the individual as a free and responsible being determining their own development through acts of the will. A lot of personal development ideas today can be traced back to one of his most famous works – Thus Spoke Zarathustra. His ideas inspired numerous free thinkers, from good guys like psychologist Carl Jung to notorious villains like Hitler.
You can see that he valued individual above all, and believed in persons will as a force of nature. Those are some very brave thoughts for a person living in the 19th century, don’t you think?
Nietzsche’s quotes and applications
That which does not kill us makes us stronger.
You’ve probably said this Nietzsche’s quote more than once in your life, never realizing this guy said it first, right? This is probably the most famous sentence he said, and it is applicable pretty much in all fields of life. Of course, there are numerous ways in which his saying could be applied to software development, but I interpret it like this: don’t be afraid to make mistakes.
For a Software Developer, it is important to play around with technologies, languages, and frameworks. That is how we gather that much-needed experience. But, playing around also means failing a lot. For example, you know that you can use certain technology for some problem because you have tried that technology before and you know its pros and cons. Or you have tried to solve a similar problem with different technology and failed by doing so, which led you to the right solution. Mistakes are evolutions tool if you learn from them. We should always fight that fear of failure because the failure sometimes is the only road to success.
Whoever fights monsters should see to it that in the process he does not become a monster. And if you gaze long enough into an abyss, the abyss will gaze back into you.
You’ve probably heard of “good kind of paranoia” that has been cultivated among programmers. This concept is in fact really good for our profession. We should train our mind to question everything, to find loopholes in our solutions, to test everything we can and go much further than that. There are many approaches which rely on this kind of mindset like defensive programming. And in general, it is good to be in this mindset at work and have that critical edge, it is a professional aspect that you want to have.
But, the problem that I’ve encountered is when this mindset overflows to some other spheres of my life. For example, communication with other people. We shouldn’t forget that problems we are facing at work are based on the model of reality, not the reality itself. Sometimes people in our profession forget that. We can not apply all principles we learned in software development on all aspects of our lives. Remember, do the TDD, test your code, but your life will be much easier if you tune down that paranoia in communication with other people.
In individuals, insanity is rare; but in groups, parties, nations and epochs, it is the rule.
Working in a team is so much different than working alone. In general, there is a portion of the day that is spent on communication, planning, meetings, and design. Being a part of the team brings a different dimension to software development. Especially, if you are a part of an Agile cross-functional team. It seems that there is always so many things you should keep your eye on. And this applies to all members of the team.
That is why a team as a whole can lose sight of why are they working on the certain software and lose sight of the bigger picture. It is easy to get lost in technology, and the design, and the code reviews, and the dependency injections and whatnot. Projects were ruined because a group of engineers forgot a bigger goal.
You see what I’ve written there – a group of engineers. Yes, not every group is a team. A team is so much more than that. A real team will remember that software they are working on is there to help other people. A real team knows that the client is the final judge of the application and that client’s goals are much more important than any elegant technical solution.
There is more wisdom in your body than in your deepest philosophy.
I sit for at least ten hours a day at this point. There is no activity that can substitute that kind of inactivity. Still, I try to workout every day and take care of my diet as much as I can. Hell, I even stopped smoking.
It was not always that way. It took me a while to notice that when I work out regularly I have much better results at work. I am much more creative and have a lot of more energy. Yes, I know all the books suggested that, but sometimes we ignore things that would clearly benefit us. Anyway, there are many pieces of research that indicate that regular exercisers do better on tests of creativity.
To be more specific, researchers find out that regular exercise is in close relation with improved divergent and convergent thinking. These types of thinking are both considered the two components of creative thinking. Divergent thinking involves coming up with multiple solutions for one problem, while the convergent thinking involves finding one solution for the problem. Go running or to the gym, do yoga in the morning, or whatever. Just try to keep yourself active and you will be better at your job.
One must still have chaos in oneself to be able to give birth to a dancing star.
Making software is a somewhat a complicated process. Have you ever tried to explain what is, in fact, your job to a non-technical person? I know, right. And it seems that no matter what process we apply to the production of the software there is that feeling that it is still way too chaotical. This tweet probably demonstrates this feeling:
Still, software gets produced. Problems got solved. How? By tremendous work of countless software developers. And that is the key. Push trough the fogginess and confusion, and do the actual work.
This is another example of what I do to reach something that I like to call professional mindset. I like to use this phrases, but if you find something else that is closer to your heart, use that. Find those quotes that give you that enthusiastic feeling about the world, and then transform them into your personal motivational. Once you get used to them, find other new ones. The goal is to create great software, be professional and avoid situations in which your job affect your relationship with another people.
Read more posts from the author at Rubik’s Code.
This work is licensed under a Creative Commons Attribution 4.0 International License.