22 April 2016

Interview Franziska Sauerwein

My next "victim" for my series of interviews was Franziska "Franzi" Sauerwein. I first noticed Franzi volunteering information about developer ethics in the Software Craftsmanship Slack channel. As I kept meeting her at interesting conferences and unconferences around Europe, it was just a matter of time until she agreed to answer my interview questions. Franzi is very active on Twitter and posts to her Codurance blog from time to time. Let's see her views on work and values.

PuzzledHey, my name is Franziska Sauerwein and I'm a Software Craftswoman.
Puzzles have always amazed me and that's how I got interested in Computer Science. After completing my degree I learned that Software Development is much more about people than about sitting alone at a desk in a room and coding in isolation. I have worked as a software developer and consultant for three years in Germany before moving to London to join Codurance in the summer of 2015. My passions include Test Driven Development, Refactoring, XP techniques and high quality software development. I'm always trying to improve my skills and share knowledge. As an active member of the European Software Craftsmanship community I love to participate in unconferences and organise code retreats, hackathons, coding dojos as well as tech talks. I aim to use my skills and creativity to develop software that is reliable, easy to adapt and doing what it is supposed to do.

You said you like to discuss developer ethics. Why is that so?
As developers, we have a profound influence on our society and people's everyday lives. How we write software and what we write has an impact and with great power comes great responsibility. :)

What other topics are you concerned about?
I am a feminist, which means I believe in equal rights for all genders. I also believe in taking a critical look at my privileges as a white person with cis and class privilege. I try to inform myself on racism, ableism, hate on trans* and queer people as well as other forms of discrimination. I speak out when I witness discrimination and I try to raise awareness on these issues. I support other women, especially when they face discrimination in our industry. In my community work, I actively encourage women to take their space and men to give them their space. There are about a thousand little things that I do, from translating the Community Code of Conduct to German to recommending women to speak at conferences. I use my privileges and my extroverted personality to raise the voice of others.

What do you consider the biggest challenge of our times?
I consider the biggest challenge to show compassion towards and work with other humans in the face of a society that tells us to worry about our own safety and throw others under the bus (or out of our country).

Most people I meet are concerned about meat mass production or pollution. What could we do to engage in the topics? For example, did you take part in public protests, donate money to NGOs or sign petitions?
These are topics I used to be much more interested in a couple of years ago, when I did all the actions mentioned above. Nowadays, my passion and energy are put into issues that are closer to me and the people I care about and where I feel I can make a difference. That being said, I try to live a sustainable life as much as possible (using public transport, avoiding waste, not eating meat) but I do not consider that to be out of the ordinary. I also support people who need financial aid by donating and lending money. However, I believe financial inequality can ultimately only be solved on a political level.

Canadian Charter of Rights and FreedomsDo you think it is possible to work on "the right things" which are aligned with your values in general?
It definitely is. In fact, I believe that I can be a feminist while I am working. We need people on all levels, people that dedicate their life's work and people who are not primarily activists. And it is important to keep your activism to a level where it is sustainable, taking care of your needs as not to burn out. One can easily get overwhelmed with the number of problems out there. Allowing yourself some slack and amplifying positive changes makes it easier to deal with things.

Especially when you are in a discriminated group, there is a lot of expectation to fight and work against that. However, it should not only be your responsibility, but the responsibility of society as a whole, especially the privileged members. And it can be much harder and more frustrating to speak out and defend your position when you are affected by bad behaviour yourself.

Regarding the choice of working on the right thing: There are already many organisations out there that make conscious choices of what to work on. If you are in a position to choose, go for what you believe in. I believe in raising the bar of software development and building a community of professionals, that's why I chose to work for Codurance.

There are many decisions we take before and during a project. Which choices do you think are relevant?
I think the most likely choices we face as developers are whether to implement dark patterns, impede on people's right to their privacy, slack on security or engage in legal grey areas that ultimately cause harm. Choosing who we work with and who's voice we amplify also makes a difference. Examples like the Apple Watch not working on dark skin or health applications without period trackers show that lack of diversity in the people producing the software has a direct impact on the user. Increasing diversity in the workplace is therefore an important part of making software better for all humans. In my opinion, the largest cause of the lack of diversity in software development is due to everyday harassment, micro aggressions and systematic subtle disadvantages.

How do you think about selecting industry, customer and project based on your values?
I think everyone should choose the industry that interests them most and do what they can to make it better. If you are able to choose customer and project, choose according to whether you can leave them a better place. For example, through increasing transparency and user friendliness or providing users with protection against online harassment. You can also choose to increase profits for someone who invests some of that profit into a cause you believe in.

Do you have problems with any industries?
I do not think that it is that easy to steer clear of problematic companies, since it's not transparent who profits from what. All industries have some problematic part, mostly through exploiting people or benefiting from countries screwing each other over. I do not want to support the weapon's industry, as it profits from wars and conflicts where people get hurt.

Did you ever reject a customer or an actual project, based on your values?
I was not in that position yet.

On the other hand, what would be projects that you would love to work on?
I would like to work on projects that increase diversity and fight discrimination.

Thank you Franziska for sharing your views.

16 April 2016

Join me at GeeCON

GeeCON Conference SwagIn less than a month GeeCON is happening again. It is a great three day conference for Java and JVM developers. And you should go there! If you are from Vienna, Austria, it is especially easy and cheap to go there. But I am getting ahead of myself...

Why attending a conference?
Attending a conference has many benefits. Kevin Benore bas summarised some of them: Learning, networking, professional advancement and "Keeping the Flame Alive". Learning new things is a major reason to attend for many people. While you could watch all the content online at home, I have not met anybody who took two or three days off to do that. Also a conference gives you diverse content, sometimes you end in a talk about a topic you have no idea about. I bet that you would not watch such a talk online - why should you?. So the "change of scene" is a very important side effect of a conference. And of course there is swag - or how I call it - loot ;-). I consider swag less important and rather pay less for the conference, but the occasional shirt or mug are great mementos of past conferences.

GeeCON is my favourite conference and I go there every year since 2010. (I missed the first version in 2009 and I am still sad about it. But I have been to more GeeCONs that some of the organisers themselves.) I go there even when I am very busy. I am never disappointed by the content presented, see my extra short summary of GeeCON 2012. To make sure for yourself, I recommend checking out the GeeCON 2016 speaker line-up and the GeeCON Vimeo channel containing all past presentations since 2011. For this year I have the resolution to share the goodness and bring more people (from Vienna) with me, which is why I wrote this little advert.

Cost and Effort of Travelling
Some people like travelling, others do not. I am not fond of business trips and consider them a necessary evil. Kraków, the Polish city where GeeCON takes place, has an airport nearby. There are direct flights to different European airports, e.g. Berlin. From Vienna, where I live, it is even easier to reach using the night train. (I apologise for the following excessive details, but my main goal is to encourage developers from Vienna to join me.) The night train 406 leaves from Vienna Hauptbahnhof every day at 22:50 and arrives the following day at 7:00 in Kraków. When you book early, you might only pay 55 Euro for the special offer "Sparschiene". The night train is great because I can still be at work the day before the conference and I stay one night less at the hotel which saves me money again. The same is true for the return trip, train 402, which leaves Kraków each evening around 22:00.

Polish Night TrainFor the remaining two nights I usually book a cheap hotel next to the main railway station Kraków Glówny, e.g. ibis budget Krakow Stare Miasto, where I can stay for 40 Euro per night. I like the ibis because I can drop my luggage after arriving in the morning. Also one of the bus lines to the venue stops right before the ibis, reducing the hassle of travelling.

Value for Money
Depending on when I book, the total cost for a GeeCON visit (from Vienna) is between 380 and 440 Euro, excluding dinner. This is a ridiculous price for the value of a great three day conference. Because of the cheap travel, even other great community conferences like Devoxx cannot compete with GeeCON.

Training Budgets
The cheap total price enables several options.
  1. For employees now is the time to ask for your training budget. If you work for a reasonable company, there is some money for training and education for sure, however it may be small. The small cost might still make it possible to go to GeeCON on company expenses. Go, ask your manager now!
  2. In my experience money is less of a problem than the time not doing actual work. In such situations I offer to take the days off. As an employee, taking three days off is easier for me than paying 500 Euro from my wallet. This is also a fair approach as education is both the employer's and employee's obligation. So if your boss is unable to send you to GeeCON on company expenses, offer to take three days off to compensate and to show that you are serious about your continuing education. Taking the night train - while not very convenient - pays off again, because there are no extra days needed for travel.
  3. If you are independent, your training budget is exhausted or your boss is a moron, then just take the days off and pay for the whole conference on your own. I am very bad at bargaining and hate arguing with managers, so I took this option several times in the past. You might use your training budget to go to a really expensive conference like JavaOne and pay for cheaper ones yourself.
Come With Me!
As you can see - if you are from Vienna - it is easy and cheap to go to GeeCON. I would like to take you with me because I want more of us to participate and learn and have fun there. I am sad that there are only three participants from Austria attending a great international event with more than 1000 participants. So register for GeeCON now!. If you have any problems or doubts or if you need help in organising your trip, please get in touch with me.

20 February 2016

Memorising Keyboard Shortcuts

Two months ago I found a set of flashcards with IDE shortcuts and started learning them. After using the cards for some time, I noticed that memorising all the shortcuts is really hard for me. While many key combinations are sort of mnemonic, e.g. Ctrl-Alt-m to extract a method, some are not, e.g. Ctrl-Alt-l to format the source. I struggled to remember the shortcuts, mixing up the modifier keys all the time. It was frustrating to answer a card wrong for the n-th time and I had to reduce the number of cards I studied each day.

There is not much information in a key sequence like Alt-F12 to make it a reasonable entity to remember. There is no story around it, nothing to relate to. I have heard of people being able to remember huge numbers by translating them into sequences of pictures - a story, which is much easier to keep in memory.

Old KeyboardOn my German QWERTZ keyboard there are 105 keys. Ignoring the number block and a few other keys, there are up to 70 keys which might be used in shortcuts. There are three modifier keys which can be combined into eight combinations. (I ignored the Windows and Menu keys and till now have not seen an IDE that made a difference between left and right Shift or Alt.) Not all combinations of keys are special, e.g. Shift-a is just an A - I counted 400 potential shortcuts to activate IDE functions. Further some shortcuts mean (hopefully similar but) different things in different contexts, e.g. inside the editor window or navigator.

Modifier Keys
I do not know how translating the shortcut into a story might help, but I will experiment with hints for modifier combinations at least, because I never seem to get them right. Changing the order of modifier keys between shortcut descriptions makes things more difficult and I have not found an order which is easier to remember for me. Any ideas anyone?

Maybe some research is needed: The Control key was created to zero the leftmost two bits of the generated ASCII character. This created values below 32 which controlled where the next character would be placed on the display device. Its symbol is the helm, U+2388 (⎈). The Alt key was used to set the high bit of the signal generated by the other key. Its symbol is the alternative key, U+2387 (⎇). The third modifier is the Shift key, shown as an upwards white arrow, U+21E7 (⇧). It is the oldest of the three keys as it was used in typewriters to shift up the case stamp to change to capital letters.

By position on the keyboard and their prior usage, I sort Control before Alt, as in Ctrl-Alt-Delete. I am not sure where to put the Shift. JetBrains' Help puts the Shift between Control and Alt. The question for me is if Shift is a part of the character, e.g. uppercase A. I will have to experiment with Ctrl-Shift-Alt-something and Ctrl-Alt-Shift-something.

Visual Hints
I noticed that I take visual hints from the question, i.e. the typeface and text describing the shortcut, e.g. "Switch between views". Maybe that is how the brain works but this is not the kind of memory link I want to establish between the desired action in the IDE and the shortcut that activates it. Maybe I need a more visual representation to remember the shortcuts. The symbols (helm, alternate, upwards arrow) are very different and could be useful.

I experimented with Anki and it is possible to add pictures to the flashcards. I plan to create a new deck of cards containing a picture marking the actual keys on a keyboard. I hope that the visual representation of the keys will help me remembering them. Unfortunately images if keyboards make some shortcuts layout specific, e.g. Ctrl-z is in a different location on an US/UK layout than on my German one. As I plan to master both layouts, I will have to create and study the visual layouts of the relevant shortcuts twice.

Muscle Memory
Knowing the list of available functionality and their key combinations can only be the beginning of my "I know all shortcuts journey". There is no doubt I will need to practise typing them. I hope that knowing them will shorten the actual practise needed. Using flashcards allows me to study a few shortcuts whenever I have an extra minute, e.g. on the subway or when I am early for an appointment.

Going Crazy
I am already working on my "absolute mastery" deck. It will contain all the shortcuts of Eclipse, IDEA, Vim and possibly other tools like Word or Firefox, using both pictures of the US and German keyboard layouts when necessary. Creating all these images will take some time - coding time of course, as I will not draw them manually ;-)