Gophercon EU Experience

This May I visited Gophercon EU, a big conference about Go. It was held in the south of Tenerife. There were many things that I experienced for the first time! For example, it was my first time on an island and it was my first time to talk to Mat Ryer, Bill Kennedy and other gophers who write books and articles about Go and make it so popular and understandable. It was also the first time I took a coding workshop.

I was able to take part in this conference because I got a scholarship from GoBridge. I filled in the application form long ago and then forgot about it because I knew that the chance of being selected is very small. How happy I was when I got the email saying that my application was approved! It was about 1 a.m. when I read it and I woke up my mom to tell her great news and the two of us couldn’t sleep for the next couple of hours because we were so excited and happy. I’m smiling now when I’m writing these lines and remembering that night.

Then there were weeks of preparations for the trip and anticipation. I’ve read about speakers I didn’t know (I already knew some of them from previous conferences) and decided what talks I want to hear. Choosing talks beforehand is one of the key steps in preparing for the conference. Many conferences have more than one track and even if there is only one track, it’s extremely hard to stay focused the whole day and keep absorbing new information so you have to chose what is the most interesting. It may be difficult if there are many topics relevant to what you are currently doing at work so it’s nice to have time to think it over and not to leave decisions for the last 5 minutes before a talk.

On the first day of Gophercon, I took part in a workshop “Daily Go” by Miki Tebeka. There was a lot of practice and Miki showed us best practices of code structuring, debugging, performance testing and even some basics of CI/CD. He also shared useful links and I saved them to read later. I think that I’ll use in my daily work a lot of what he showed during this workshop.

There were many great talks on the second day. I especially liked two of them: “Finding Dependable Go Packages” by Julie Qiu and “How I Write HTTP Web Services after 8 Years” by Matt Ryer. I hope the organizers will post videos so that my colleagues who missed the conference could also see these talks. I also had a chance to talk to speakers during breaks. It’s one of the things you should visit conferences for. When you watch recordings, you cannot dive into this atmosphere and profit from real-time communication.

The third day of the conference was Community Day. It was less formal and many people gave talks on important Go-related topics. I made notes so that I can explore in-depth aspects that can be handy for my tasks.

All three days were very different and each of them brought me lots of valuable information. I’m very glad that I had a chance to visit Gophercon EU 2019, learn, network and meet new friends.


Being Stuck Is OK

I’ve heard many times from different people that they had abandoned some task or project because it had been too difficult. This can be a good excuse when the problem is really over-complicated but often what one needs is a piece of friendly advice and encouragement.

I need to point out that when I’m talking about being stuck, I mean that a person has tried to solve the problem by searching for an answer on the Internet, and debugging or decomposing the task (dividing it into smaller doable tasks). First, you should try to find the solution yourself and only then search for help.

So why people don’t ask for help and seem to abandon what they are doing?

I could think of several reasons:

— they don’t know who has relevant knowledge

— they are afraid of being laughed at or rejected

— they don’t know how to describe the problem concisely

— they were told that asking for help is something bad

For me, the most frequent were the first two. When I was learning to code, I asked questions several times in community chats but I often received unfriendly feedback, so I preferred to do as much myself as possible and not to show others that I didn’t understand something.

And I think that it’s totally wrong!

There are many good professionals ready to help. They may be part of another community or chat so it is worth trying again. For example, if someone told you something harsh in a Facebook group, you can ask your question in the relative Slack channel. Of course, you shouldn’t bother people with questions you can easily google yourself (“How to make a string uppercase in JavaScript?” is probably a bad question to ask).

When looking for people with relevant knowledge, you can consider the following channels:

— Slack (for many software communities it is the primary way of exchanging information and networking)

— Telegram (it has both channels and chats and you can find different lists of them by googling something like “telegram chat [name of a programming language, CRM and so on]”

— Gitter and community chats like Rocket chat (you will usually find links to them on GitHub/GitLab repositories under README or Contributing)

— Facebook (it’s not only a network of friends but it also has groups for professionals)

— Twitter (by posting your question on Twitter and adding hashtags you can get many replies from active community members)

These are just some of the resources where you can look for a person who could help. Don’t hesitate to ask even if the problem is very specific: there may be people who have already struggled with the same thing and found a workaround.

Outreachy is totally unique in the aspect of getting help. You have a mentor (or mentors) for your project, which means that there is definitely a person who can (and is willing) to help. It means a lot for me as I understand that whatever difficulties I can have, my mentors will try to figure out the solution with me and I won’t be left alone. It gives me confidence (which is an awesome feeling by the way).

When I had a problem with Python and destroyed Ubuntu on my machine, Robby and Toni were there to help me with re-installing necessary packages and encouraging. They never told me that my questions were stupid or that something was obvious.

I always try to answer questions in community chats when I have time and know the answer even if they seem trivial for me. I suggest that a person has already tried to google or do something to figure out the solution and that didn’t help. Sometimes all you need is to put information from official docs into simple English!

Open Source Is about Being Accepted

When people ask me why I spend time on working on an open source project, the first thing that comes to my mind is the feeling of being accepted and doing something meaningful.

I can’t tell you that I have had the worst experience being a career-switcher woman without an engineering degree in IT, but I often feel hostility and I have an imposter syndrome. I’m not sure if this is a cultural phenomenon or such things happen everywhere but I didn’t receive much (if any) encouragement from my colleagues and managers in the IT company where I used to work. I was depressed and wanted to leave my job (which I finally did).

I understood that I lacked experience to work independently as a freelancer. I started to look for an open source project where I could improve my skills. I found Outreachy and the application period for the summer had just started. I found a project connected with healthcare, because medicine is my primary degree, and started contributing.

The first thing that I noticed when I started to contribute was that people treated me differently than at the company where I used to work. They thanked me for every effort even when it was fixing a typo in the docs and encouraged to continue.

I also got help and encouragement when I made mistakes. Once I enabled mirroring the main project repository to my forked repository, made a commit and a pull request, and got a message from the mentor a couple of hours later that my commit was empty. Now I know that enabling automatic mirroring can wipe off all your changes and I won’t use it without a reason. I switched it off and pushed my changes from a local repo to the remote again and re-submitted PR. I got positive feedback and my changes were merged. It was great that no one scolded me or told that I’m doing something stupid. Instead, I learned a new thing and made a contribution.

I think that it’s usually fine to make mistakes when you are learning (unless you are deleting a production database with your client’s financial information without making a backup) and it’s great when others understand it and help to improve.

I find work environment in the office to be more demanding and pushing you towards business goals while open-source communities are more product-and people-oriented. Most of the work is done by volunteers and everyone understands that time and skills should be recompensed so as nothing is paid, they are recompensed with gratitude and acknowledgment. This approach totally suits me.

It was a great (and deserved) chance that I was accepted to the Outreachy internship with LibreHealth. I don’t have to go to the office because there is a scholarship that is enough for living. I can increase my skills and prepare to work on my own if I won’t have much desire to go to office. I’m at the beginning of this wonderful three-months long program and I’m looking forward to new skills, networking and contributions to the great project.

My advice for anyone who is thinking whether to try contributing is:

Don’t be afraid and go on!