Rocu.de

Love, caffeine and omlette

Tag: culture

Change what you can change

God, grant me the serenity to accept the things I cannot change,
The courage to change the things I can,
And wisdom to know the difference.

Reinhold Niebuhr (1892 – 1971)

Life is full of problems. Haven't you notice? You can spent you're whole energy and creativity on fixing them.

Here are a few examples that you might encounter as a programmer:

  • Your team does not test code
  • You want to use Git but everyone else just feels fine with SVN
  • No department speaks to another one
  • Scrum sucks

I had quite a hard time trying to fix all these things only a few years ago. It was quite impossible for me to "fix" these things in my team.

Do not try to change people

This is my advice: Do not try to change people.

It sounds simple. But it isn't easy to do it.

Start with yourself

Here are a few examples:

Example 1: Everyone else uses SVN and you want to use GIT

What you can change today is use git-svn. It is not perfect, but you can commit as often as you like, squash commits and only push quality code into SVN.

You don't have to ask anyone. Just do it. Be patient and wait. Someday some other colleagues might use GIT. Tell them about git-svn. Before long you all might use GIT.

Example 2: Your team does not test code

And what about you? Do you really test-drive or test code? No? Then why not start now. You don't have to ask for permission. If you believe it's what professionals do then do it. Today.

If there is a point to testing, then someone might notice. If there is no point to testing you might notice.

Example 3: The deparments do not speak to each other

Speak to another department. Invite a colleague that you don't know to lunch. Are you willing to do this? Are you willing to do this weekly?

Are there colleagues that might be willing to do it? Can they join you? Ask them 🙂

Is there a question in your daily work, that only another department can answer? So why dont you not ask them?

This is something that you can do. Today.

Why is this more effective?

You can act now on these problems now.

You do not have to ask for permission to change yourself.

Why waste any energy on stuff that you can not do? It is absurd to change, if you think about it. It shows a lack of trust into your fellow programmers and why should they follow you? You are not doing it yourself?

Change yourself

The things that you can not accept in others, are a mere reflection of you. You can not accept them, because you haven't come to terms with yourself.

Try to change yourself.

You might not change the "situation" at all — but you will stop to be the victim. You will feel much better and in the end you might be surprised, that the problem just disolves over time.

After a few of these experiences you might even notice, that the biggest problem might have been you're perception of the "situation".

This is for the brave

Do not forget that changing oneself is only for the brave. It hurt's to see that all the bad things that we think "others" do, we do on our own.

Forgive yourself and through forgiving yourself, come to terms with others.

Beautiful isn't it?

Culture patterns: Serve hot beverages

You think you're company culture is bad? You feel stuck? You feel managment should fix it?

Sorry to say it: Managment can not fix culture.

A good (company) culture is build upon many little acts of mutual respect.

It is your responsibility to seed respect and trust from below.

In this series I want to show you how it can be done.

A can of tea

Let's start with a simple act of mutual respect.

You and your colleagues are probably drinking tea or coffee every day. Since you prepare a hot beverage daily anyway, why not transform it into a vehicle for changing the situation?

A can with hot tea has the power to change company culture

When to use this pattern?

  • Departments/people do not talk to each other
  • Everyone works in isolation
  • There is no synergy between departments/people
  • You wish for more openness and humbleness
  • It is cold outside
  • You yourself drink tea or coffee

How to do it

Cook a pot of tea or coffee every day, grab a few cups and serve them to your colleagues.

Exchange a few words every day. Listen.

After they have received there share, the last cup is for you. It will taste delicious.

Do not start with people, that you do not respect yet.

Start in your immediate surrounding (your team).

When you feel save enough, offer the beverage to another team.

Start with the friendly people you know there. Then include all the "neutral" persons.

When you feel comfortable doing that expand your circle even further. Maybe to the department/team that you understand the least. Or to the colleague that you have absolutely no respect for.

Keep going

In the beginning you might encounter resistance. Both internal and external.

People might ask themselves why the hell is she doing it?

Or you might find, that the offer does not come from your heart at some days. Reflect on this. Why do you expect mutual respect, without respecting the other person.

Do not expect anything in return. Do not stop, because nothing seems to change.

Persevere.

People will start to open up. And even if they don't: You will open up and feel at home at other departments.

Sounds naive?

Seems like a thing a lovely old lady would do.

Consider this: You feel respected at here table. You don't start a heated debate over nonsense. And she will feel great as well.

You know it.

Change you're workplace — one cup at a time. It is that simple.

What my dream tech job should offer

Today I received the question from a recruiter, what he would have to offer me to leave my job.

I found his approach really interesting - so I compiled a (very personal) list of minimal requirements for working anywhere.

Enviroment of learning

  • There are people smarter than me in my team that are willing to teach.
  • I want to teach programmers that are not as experienced as me
  • Managers support personal development
  • The company to learn from it's mistakes
  • The company takes experiments

Environment of collaboration

  • People really talk to each other
  • Collaboration between departments
  • People accept help and ask for help
  • Ego plays no role

Good culture

  • Colleagues that love what they do
  • Colleagues that reflect about theire work
  • Real diversity with different interests and skill levels
  • Mutual respect
  • Colleagues that I can trust
  • If the manager is on vacation it just works 😉

Good engineering

  • Excellence
  • Straight forward solutions
  • Not reinventing wheels
  • Continous incremental improvments

Organisational

  • Pay has to be fair - slightly over industry average
  • The company should earn money
  • Ability to switch teams within the organisation
  • Environment work-life-balance is key to top performance
  • Really flexible working times
  • Possibility to work from home sometimes
  • Environment where the people do much more than there job description
  • Enough vacations
  • No questions asked for buying books, going to conferences or taking a course
  • I want to be able to talk to the CEO the CTO and it feels relaxed

Conclusion

Most of this points can not be paid for with money. It really needs work from an Organisation to get there and it takes continous work to maintain such kind of company.

I see that Gutefrage.net is already fullfilling most points on my list. I am really happy there and love the culture.

So what would a recruiter have to offer me to leave? I don't know! But why should I?

How to become a better programmer by not programming

When I was a little bit younger I programmed all the time and did never stop. I thought that in order to get better at programming you have to programm.

This is of course true. But today I would have one advise for me: "Stop fucking programming all the time, thats just ONE way to get better."

The mind is a complicated beast and by doing unrelated activities, you can hugly increase your performance while programming.

Here are some things that I tried out - of course there are other benefitial activities, I just want to give you some ideas what you could try out.

Walking around

Take a walk
Image source: "racorn/Shutterstock""

3 years ago, I started to take extended walks around a lake nearby. They take about 90 minutes. I had some of my best ideas there. My mind is so underwhelmed that I process all the stuff that happened during the day.

If you do not have 90 minutes, you could also buy yourself a FitBit and deliberatly start to walk 10.000 or more steps every day.

It is easy to reach this goal. I walk circles during wating for the train or I take the stairs instead of the escalator.

Walking does help me to fall asleep and to maintain a relaxed and focused mind the next day, please try it!

Play with Lego

Playing with lego

I highly recommend playing with Lego. There are nerd compatible sets like Minecraft Lego, Lego Mindstorms or sophisticated Lego Technic Unimocs.

Playing lego is similar to programming: You have endless possibilities of combining the basic elements.

"Pragmatic Thinking and Learning" mentions building blocks as a tool to think about your designs. So you might even want to buy some for the office.

Take long vacations

Take a vacation at the end of the world

I think to not programm for extended periods of time (weeks / months) is really benefitial. You have time to slow down and think about what you are doing on a higher level.

When I was cruising along the Antartic Peninsula and saw the mases of ice for instance - I feelt insignifant. Work is not the most important thing on the world any more. This can be only benefitial.

If, at the end of my trips, my fingers are itching and I want to programm again - maybe I am doing something right. If not - I try to find out why I am so reluctant.

Excercise

Excercise
Image Source: " maxpro/Shutterstock"

Currently I am doing one strength exercise each day. I am not sure if these things have any mental effects - but I guess it can only be benefitial if your body is in a good shape ,if you try to sit in front of a desk all day long.

Play / Learn an instrument

Play the guitar
Image Source: "igor.stevanovic/Shutterstock"

I play the guitar. I am not good at it - but that is not the point.

I love listening to it, it relaxes me and I also think it bosts my creativity.

Also improvisation feels a lot like being in the flow during programming. Playing good requires playing economical and mastering the technique. It's a long way to mastery. Sounds familiar?

Write

Improve your communication skills with writing
Image Source: "S.Dashkevych/Shutterstock"

I write 30 minutes each day. Mainly about work related stuff.
It help's me sort out all my experiences and ideas. It helps me to reflect and share my knowledge. Last but not least it helps me to improve an important skill, that every good developer needs: To communicate clearly.

If you do not feel comfortable to write for other people - try a tech diary first.

Meditate

Mediate
Image Source: "ollyy/Shutterstock"

I am practicing mindfull meditation for some time now. You concentrate on your breath. Whenever a thought or feeling comes up during this you acknowledge it and concentrate on your breathing again.

Mediation helps me to realize ,when I get angry or exhausted at work and helps me maintain a relaxed attitude.

It also helps me to relax me after a hectic day. Unfortunately it is not easy to practice because during mediation I often realize, that my mind is everything else but calm.

But nontheless - I highly recommend giving it a shot.

Learn a new language

Learn foreign languages
Image Source: "Alfredo Ragazzoni/Shutterstock"

As with programming languages: Learning a new language is a benefitial undertaking. Recently I read that brains of programmers are bilingual. This might be true. Learning foreign languages seems more enjoyable to me, than it was in school.

Here are language learning sites that I tried out. All of them are great! And all of them have IPad-Apps 😉

Of course it helps you during your voyages if you choose to go on vacation. I speak German, English, some French, a bit of Russian and I also tried to learn german sign language (which failed - but hey maybe later)

Read random stuff

Read random stuff
Image Source: "violetkaipa/Shutterstock"

If you only read computer books until now, I recommend that you start to read books that are only slightly related to programming. Here are some books that I found great:

These books helped me to think about programming from new angles.

Change the way you eat

Change the way you eat
Image Source: "Bottaci/Shutterstock"

For a while now I try to eat a high fat, no carbs diet. I can not even begin to describe how great I feel with the new diet. This is something that you have to try for yourself in order to believe me.

No low after lunch, consistent, relaxed energie during the day and some of my health problems are far better now.

What is also nice - I learn how to cook. It still tastes dubious but at least I do something about it 😉

Train your brain

Change the way you eat
Image Source: "Eanpictures/Shutterstock"

The effects of these trainers on programmers is not really proven. For me they seem to work at least a little bit - and I like the challenge 😉

It also gives me feedback about my lifestyle, especially how rested I am. After a night with not enough sleep I suck at these games, when I play them at the breakfast table. I also suck at programming of course - but at least I know in advance.

Do stuff that you do not like

Often I deliberatly do stuff I do not like. I give talks. I listen for an hour to music I absolutely hate. I go somewhere that seems boring. I finish reading a book that seems stupid. I ride on icelandic horses.

Often at the end of the activity I am not so sure what was the reason for me hating the activity. I might still not love it, but I have pushed myself and grown a little bit.

Conclusion

So after you have read this random list of what I do - you might ask yourself what my point is.

My point is: do not microoptimize! The stuff that I do, might not be what you might want to try out. But you should really try to improve yourself in some other means than only be focusing on programming.

As a side effect you can also improve your health, your mood, your communication skills and might learn something interesting on the way, that feeds back into your programming.

I am really interested in more stuff that I could try out. What non-programming activities do you do, that feed back into programming?

Pair Programming - The why.

Pair Programming means that 2 programmers work on the same problem together at one workstation.
One of them is the driver - the guy who writes the code. The other programmer is the navigator who things on a more strategical level, helps with fresh ideas and asks questions. Both of them should switch frequently.

Pair programming
Pair programming from Syneus Solutions. (CC BY-NC-SA 2.0)

For most programmers this is completely unfamiliar in the beginning. It's not very easy to learn - and it's not for everyone. But learning to pair can be worth it.

Benefits of Pair Programming

Zero friction reviews

Do you do Code Reviews? We at Helpster have the 4-Eyes-Rule: Every piece of code has to be verified by a second pair of eyes.

Pair Programming of course offer just that. You have constant review of your code. And even better: You can directly incorporate it into your code.

Live up to your own standards

Do you have high standards? Do you want to do TDD for example? Do you wan't nice commit messages? Do you want to talk to your Product Manages more often? Write code that the whole team understands? We do!

Pair Programming is great to live up to your own standards: A good navigator has time to think about all of this. It's so much harder to be sloppy, when you are tired if your pair is watching you 😉

Teamwide learning

I learned so much from my pairs, during the last years. Of course you can learn small tricks like using ClusterSSH to admininster servers, or a short hand to create new files. But you might also find yourself using Vim and ask yourself how the hell you can work with it.

You learn a lot during a Pair programming session
Fall 2011 Student Hackathon Coding from @matylda. (CC BY-SA 2.0)

Often you implement something that your pair wanted and the solution is very nice and elegant - more then any of you two might have achived.

Since pairs should switch frequently there is a very good knowedge distribution within the team after a while.

Concentration & Relaxation

A good partner can motivate you. Even the crappiest chore looks way better if you have someone that shares you're pain.

There are fever distractions in a pai. You do not get distracted from the outside or your own emails that often. And you have a good excuse to enforce you're Pomodoros 😉

It's just fun

Last but not least it's just fun. As a driver you have a navigator that
unstucks you all the time and gives you valuable feedback. Even the
worst tasks are just done.

It's very intense and rewarding and at the end of the day you end up
with code that is much better, then what you would have written - but you are also crushed. You go home after 8 hours and feel very good about it.

Conclusion

Pair Programming has a lot of advantages. It's very different in the
beginning, but it can be very nice in the end.

Of course there is not only light. But let's cover this in the next article 😉

© 2017 Rocu.de

Theme by Anders NorenUp ↑