During our third week, Outreachy interns received an assignment to write a blog post about our current (or past) struggles. These kind of "confessions" are hard, especially when they are about current issues, but enough time has passed now for me to be able to share them with you.
I come from the web development world and while I still remember some issues and feeling of incompetency I had when I was on the start of that path, I've been programming in PHP for quite some time now and it is more or less familiar ground for me.
With my Outreachy project, integration within a C/GTK+ application, I am a complete rookie. The foundation and the concept are completely different from what I am used to, and I am often confused and feel inept and spiritless because the progress is slow. The feeling is scary, especially since I always think that everybody is an expert (they are not) and is (or would be) judging me for not knowing something (I'm not sure, but I think they are not).
I struggled a lot when I started to work on my project. When talking to other members of the team and discussing possible solutions and approaches, I realized that the whole thing is much, much bigger and much more complicated than I first grasped.
When I actually began to add some lines of code, nothing worked as expected. My mind was not used to C language (anymore) and the whole structs-windows-widgets-signals-pointers concept was bewildering.
There are references and tutorials and examples online, but some of them are not very beginner-friendly or don't have detailed explanation that would help you understand what the code does—so you are unable to adjust it to your needs. Even searching the web for any posts related to my problems generally doesn't return any useful results. (It's possible, though, that I don't know what to search for, yet.)
Often, there is a thin line between taking time and figuring something out on your own to learn and improve, and wasting too much time because you don't (want to) ask for help. In the end, it may only take a short explanation from a mentor or a colleague to help you understand and get back on track.
So: don't be embarrassed, don't be self-conscious, don't be afraid and just ask. I also learnt it helps to make notes; just create a document and write your findings in it. Everything, even if it seems trivial. You will soon have your own tips and tricks to which you can refer when you get stuck.
Rubber duck debugging is another great thing that (almost) always gets you back on track. It makes you start from the beginning and reexamine what you are working on. Just the other day my code wouldn't work but I couldn't find the problem. After I wrote a message to my mentor describing what is happening and asking for help, I realized using single quotes to print a string may not be the right way to do it in C (whereas in PHP, you can use either single or double quotes), so I changed them and—hooray, it worked! Small victories, but they are important to lift your spirit and push you forward.
We are all human and nobody expects you to be an expert in everything, especially as a beginner, and especially as a mentored intern during Outreachy. Don't despair and don't hide or isolate yourself, insisting on getting it right by yourself. Ask your mentor, your team members, the community; in my experience, most, if not all, of them are eager to help and answer your questions. The important thing is to not give up—If you want to keep learning, you will have to be a newbie again and, even though it is scary, there is nothing wrong with that.