It has been a summer full of some happy coincidences and one we have just discovered is that apart from having a Star Wars related name like the Coding Padawans, we, Team Joda are writing our blog exactly two years after they published it 😉 and are getting ready to end our coding journey as Rails Girls Summer of Code students.
Role Models
Amazing Role Models (Image: Team joda, Technique: Collage)
This has been a very cool journey indeed, through which we got to meet many inspiring women and learn about their coding journeys as well. We shared our stories and motivated each other: We had lunch several times at SoundCloud with team LoadtoCode and we also met team Kindr3d, when they came to Berlin for a couple of conferences. Then, we even got to meet the RubyCats during EuRuKo 2016. Furthermore, Ellen (one of our coaches), Duana and Tam (our mentors) and Nynne (a RGSoC alumna, who worked last year on the same project) have been incredible role models that continuously embolden us throughout our coding paths.
Our Project and Lessons Learned
As we mentioned in our first post, our project is SoundDrop. By working on this project closely together and having a great team of supporters, we acquired and improved both our technical, as well as our communication skills: We learned to ask more precise questions, to research better for solutions, to try things out from different perspectives and to talk about our problems and boundaries to be able to get along throughout the summer. Working on a project so closely can be very challenging: It is like having a travel companion with which you do everything together and with whom you have to talk often, to make sure you are not stepping on each others’ toes. So even if our communication is not always perfect, we put a lot of effort and achieved the goals we had for the summer:
We learned about APIs and could design and implement one for our project
We revamped the landing page with an embedded map in which you can see the drops that have been added
We added tags, so users can categorize their drops
Johanna made it possible for users to search drops according to tags
Dayana created a “My Drops” Page where users can see their drops on a map and a count of them.
Of course this is work in progress and there is still much work to be done, but we’re satisfied with the results and looking forward to code more. Throughout this process we learned a lot about programming languages, servers and memory allocation among other topics and also began using awesome debugging tools such as Pry and Chrome’s developer tools. We also had to understand, and sometimes even refactor legacy code.
Conference: EuRuKo 2016
EuRuKo 2016 (Image: Team joda, Technique: Collage)
On September 23rd and 24th, we were able to attend our first international Ruby conference, EuRuKo, which was taking place this year in Sofia, Bulgaria (Thanks again to EuRuKo for providing free tickets!). Not only was EuRuKo our first big international conference, it was also the first one where we gave a lightning talk. We became quite nervous, when we realized in front of what a large audience we would speak and what famous and well known developers were attending. But the EuRuKo staff supported us very well and we quite enjoyed standing on stage, sharing our Rails Girls Summer of Code experience wrapped up in 5 minutes. We received a lot of positive feedback and people liked that we announced to be looking for jobs after Summer of Code ;)
Attending EuRuKo meant experiencing diversity in many different ways: The talks were both technical and non-technical. One talk that deeply impressed us was “Consequences of an Insightful Algorithm” by Carina C. Zona. She warned about negative impacts that errors in algorithms can have on people’s’ lives, e.g. when an automated tagging system categorizes a picture of a concentration camp as “playground” or when Facebook reminds you of a day you always wanted to forget. We were also impressed by José Valim talking about how and why he created Elixir and to hear about the accomplishments of the awesome Ruby Together community that maintains some of the most important Ruby Gems (in their free time! Thanks!). During the breaks and the after party on Friday we got to meet a lot of Ruby enthusiasts from many different countries and backgrounds, e.g. our fellow RGSoC Team from Warsaw: The Ruby Cats, some Rails Girls Sofia organizers with whom we could exchange experiences from putting together beginner workshops and - last but not least - we met Matz, the creator of the Ruby programming language!
In a nutshell, we had an amazing experience with many interesting people in a pulsating city and we are looking forward to EuRuKo 2017 in Budapest!
What Comes Next
Now the last week of RGSoC has started and of course we are sad that these three months of intensive learning are soon to be over. But we are also looking forward to new challenges: continue contributing to SoundDrop (updating it to Rails 5 \o/), working on our own projects and applying for developer jobs. Or, as Yoda would put it:
“If you end your training now — if you choose the quick and easy path as Vader did — you will become an agent of evil.”
Hey, we are Team Rookies. Our summer story begins with great excitement and our adventure is almost ending with happy memories. For 3 months, we have delved into JavaScript world, learning from the front-end to the back-end to make a Hoodie desktop application. We have learned how to handle events, how to make API, how to split the code efficiently with Riot.js and how to connect our project to the Hoodie server with Node.js and how to wrap the project with Electron Framework. When we look back our summer, it was not only about learning technologies but also about positive mindsets and enthusiastic attitudes. There were many important lessons and we were happy to achieve a lot of progress in our project. This growth of ours was impossible without kind supports and helps from RGSoC, Hoodie, mentors, coaches and supervisor.
And,,,,, Now, are you ready to listen our amazing & exciting summer journey? :D
This is a visualization of our Hoodie-RGSoC summer journey. (Image: HyeSoo)
Positive mindset & Take an action
It has been a happy summer for us to grow up and make progress in our Hoodie desktop application project. We have learned an invaluable mindset towards approaching the problems and taking an action. These days, IT industry is flooded with a lot of new technologies and we might feel overwhelmed sometimes. When we talked about this issue with the mentor and coaches, we learned a positive attitude from them. Instead of trying to cover all must-know new technologies, we can think of how we can move towards problems first and use the technologies as a tool to solve the problems. With this approach, we can have an open mind on challenges and required technologies than getting overwhelmed.
We also have been wondering how we can write a clean and efficient code and how we can broaden our horizon as a developer. While we were talking with the mentor and coaches, we learned an important lesson. If we just read lots of books and do not take an action to make an application, we are likely to forget what we have read/studied. But if we practice what we read by getting our hands dirty by making actual applications, we can grasp more concrete concepts by experiences. We are happy that we can approach current/future projects with a positive mindset and walk through them in a better direction.
Tehetena is in the center, from the bottom left are Esko, HyeSoo, Omid, Pilar and Gregor. (Image: Gregor)
Improvements and progress of Team Rookies’ project
We also have made lots of changes to the code we made in the first month. First, we have learned lots of new concepts in JavaScript. We made 8 different kinds of event handlers to create/edit/update/cancel/delete/go back/start/stop applications. When we had the first response by clicking button with handlers, we were so happy. We also learned how to debug using ‘debugger’, ‘breakpoint’ and ‘watch’ in the browser from Gregor. With these methods, we were able to observe the code flow and expressions and find where an error comes from. There are no perfect applications and most of times, we try to improve our application by debugging or adding more features. They became very useful tools for fixing problems in our project.
While implementing several features for our project, we used ‘event.preventDefault’ to make our custom event. For sorting the apps in the app list, we used ‘Array.prototype.filter()’ and for looking through the application, we used ‘Array.prototype.forEach()’, and ‘Array.prototype.map()’.
We also learned two advanced JS topics. One is ‘promise’ and ‘closure’. We both have never worked with promise and closure before. It took us a while to grasp the concepts. Thanks to Gregor’s helpful tutorials, we have managed to work with promises for making our API work asynchronously and closure for our API safer from the scope of the anonymous function with a private variable.
This is an example of our API which with promise and closure. (Image: Tehetena)
When we reviewed the code feedback done by Gregor, we learned how to clean up our current code and how to make an uniform format with a standard style throughout our code.
The other important thing we have learned this month was working with APIs. In the beginning our application main.js file contained all its logics and methods on one long JavaScript file. Now we have tried to split the code into several different tags, using ‘Riot.js’, so that we can manage our code more efficiently. Gregor’s example code was very helpful to understand how to divide our application into several tags that will show and hide according to the routing.
This is the first prototype of Hoodie Desktop application. (Image: HyeSoo)
Our plan for the last part of our journey
Lastly, this month is our last part of our RGSoC journey. Time flies. We cannot believe we are already looking at the end of our journey.;D We have grown day by day compared to our beginning. In July, we did not know how to make event handler, API and how to clean up the code etc. But now we are more confident that we can implement interactive web pages and handle API to talk with server and retrieve data.
In the monthly call, we planned our last month with Hoodie mentor Gregor, our coaches Omid & Esko and our supervisor Pilar. While we taught ourselves Riot.js, Gregor worked on the guidance of how to use Riot.js for our project to speed up our project. We tried to understand how Riot.js works for our project with coaches’ helps for several weeks. Since last week, we have studied Node.js and Electron framework to make our project interact with the real Hoodie server side and wrap up our current code with Electron framework. We hope that our first prototype of Hoodie Electron desktop application can be ready by the end of September.
We also talked about what we can do after this month in the monthly call. If it is possible, we would like to work as a contributor for the current project, so that if someone who is interested in this project have a question, we can help him/her and if there are errors or bugs, we want to try to solve the issues together in the future.
Everyday we have felt so thankful for RGSoc, Hoodie mentor Gregor, coaches(Omid, Esko, Musse) and supervisor Pilar who have helped us a lot and supported us all the time. Thanks to their great encouragements and helps, we did not lose our confidence during the 3 month journey and we were able to move our steps forwards day by day.
‘Our last journey’ does not mean we will end our stories. We would like to continue working on our project after these happy and invaluable three months. If it can be helpful or interesting to someone, we also would like to share our stories with RGSoC communities.
Thank you so much for the great opportunities and kind helps. We will not forget our 2016 amazing summer with RGSoC.
Best wishes for all of us and RGSoC. cheers! ;D
For further information on repository of Hoodie desktop application, please visit team Rookies’ repository and for Hoodie, visit hood.ie.
Github’s CEO Chris Wanstrath, also known as defunkt, commenced Github Universe by unveiling exciting, new features.
Some of these new features included a refreshed redesign of Github’s profiles, unveiling the GraphQL API, and the project management tool Github Projects.
Photo taken by Patricia Arbona
Github Universe was located in a warehouse district near San Francisco’s Pier 70. On top of this warehouse was a giant Octocat!
In the main entrance of the conference, a majestic balloon Octocat strikes your eye.
We had came across Githubber Nikka Padilla.
Photo taken by Elom Gomez
All throughout Github Universe, our team periodically kept running into friends, colleagues, and mentors.
As fellows currently going through the program now,
it was valuable to hear about Karla’s and Emma’s challenges and successes with their Rails Girls project.
Our team attended the informative Open Source panel Pains and Gains: Five Short Stories, facilitated by Katrina Owen.
Each panelist illuminated upon a particular challenge they faced in Open Source, and what strategies they employed to go about solving their unique challenges.
After the panel, our team was fortunate enough to speak with two Rails Girls Summer of Code Project Maintainers,
Katrina Owen, author of exercism.io and Gregor Martynus,
Chief Dream Officer of Hoodie.
Both Project Maintainers were welcoming, approachable, and humble in regards to their amazing accomplishments.
At the Heroku booth, our team was thrilled to meet up with an previous programming instructor, Cynthia Dueltgen.
Cynthia is currently having a fantastic experience as a Customer Solutions Architect at Heroku.
Our team thanked her for giving us foundational software development skills. Her patience teaching us difficult programming concepts was pivotal in our growth as software developers.
Cynthia was ecstatic to hear about our experiences in the world of Open Source!
Photo taken by Rebekkah Murphy
We ended a jam-packed day with a Big-Bang Benefit Concert, with proceeds going to Black Girls Who Code.
Common’s lyrics and rhymes were powerful! Common has an amazing stage-presence. His lyrics were very politically-aware.
Photo taken by Patricia Arbona
Team Hackbrighters came across Amanda Gelender, Senior Manager of Github’s Social Impact team.
Amanda made it possible for our team to be hosted by Github for the duration of our fellowship. We are extremely grateful for Amanda and the Social Impact team’s time and generosity.
Thank you for supporting women in Open Source!
At lunch, our team met former GitHubbers Brandon Ferguson and Rachel Meyers.
Brandon currently works at Travis CI, and Rachel was a Rails Girls Coach in 2015 and is founder of Opsolutely.com.
Both imparted to us thoughtful advice in terms of how to grow professionally as a software developer.
Our team attended an interesting Electron talk Making Electron Development Simpler, More Pleasant, and More Productive by Slack Desktop Engineer,
Machisté Quintana.
Photo taken by Patricia Arbona
Machisté highlighted throughout his talk how there exist
unique challenges when working with Electron, a cross-platform framework for desktop apps.
We also came across Travis CI foundation’s booth.
Here we spoke with Konstantin Haas, Mathias Meyer,
and Josh Kalderimis co-founders of Travis CI.
Past and current Rails Girls fellows thanked the Travis foundation for creating and funding our fellowship.
After intimately configuring and debugging Travis CI on Lektor,
our team gave input as to how to improve the continuous integration system.
It’s so hard to write a post about project management which wouldn’t make people say: ‘Hey, this is obvious!’. Still obvious solutions to problems are often the right ones and at the same time difficult to follow-through on. Most management tips may sound logical and even familiar to you, yet so many project problems arise not because of technical failures but rather due to mismanagement.
Project management will look very different from company to company and from project to project. Here I would like to stress just a few things which make a difference whatever you do in a team.
1. Talk with your teammates
Tech people tend to underestimate the importance of communication, and yet most problems in projects appear as a result of insufficient communication, or lack of transparency in communication. Sometimes you may think that things are obvious without discussion when, in fact, team members have different opinions on them. Examples could be:
project mission and values (why you do something);
expectations and motivation (what you want to do, in which way and what result you expect);
actual meaning behind vague task titles (e.g. improving UI may mean reworking design or cleaning up markup);
etc.
There are many communication techniques which may come handy and efficient: issue trackers, wiki, project management tools, not to mention emails and chats. And at the same time, talking to people is still indispensable, because it helps you not just to understand each other, but also to reveal communication gaps. Please, find your time to talk to each other.
Photo by Anika Lindtner
2. Ask for help
Often students don’t ask for help. The reasons may be different:
I don’t want to look not smart/capable enough;
I don’t want to bother others;
I want to deal with this challenge myself!
The latter might make sense up to a certain degree, however, try also to think of what is good for the project. You can spend a week on a one-day task and finally nail it, but ask yourself first: Is it an efficient way to spend time? Doesn’t it hinder the project instead?
Ask people for help if you feel like you’re stuck. You might even set a “rule of one day”: if I spent one day on a particular problem, searched everywhere I could (I really did!) and didn’t find a solution, I ask my teammates for advice. It doesn’t have to be one day, of course; try to find a period which would be comfortable for your team. It’s always about balance.
3. Share progress and set deadlines
Even if things are going well at your side, don’t disregard sharing your progress with the team. It’s really easy to forget about it when you:
do something monotonous;
work on one task for a long time;
dive too deep into technical details…
But even then, providing your team with updates will not only get the team on the same page, but may also be beneficial — be it actual help from your teammates or just them pushing you forward :)
One of the best ways to make sure you move in a good pace is to set deadlines. Everybody is used to setting deadlines to big tasks. Sometimes it is useful to set deadlines to smaller tasks, too. If you’re stuck with a task or not sure which solution to choose, break the task into smaller pieces and eat your elephant one bite at a time: you can plan to talk to someone ‘by Wednesday’ and make a decision ‘by Friday’. This will help you keep moving.
Photo by Anika Lindtner
4. Don’t rely on your memory
Whenever you have a meeting where you discuss things and especially make decisions, a good thing would be to write a short summary and share it. It could be as simple as: “Today is DD.MM.YY, participants are Alice and Bob, we agreed on this and that”.
Often you might feel that it’s not necessary because:
the meeting was short;
it wasn’t official enough;
nobody demands notes from me, so why would I lose precious time writing them;
and my personal favorite: we won’t forget this anyway.
Time goes, things change. Sometimes it’s very useful to refer to history, whether you want to understand why things went the way they went, need facts to argue with someone, or want to give a quick update on the project to someone who wasn’t there with the team for some time.
5. Stay in touch with the project maintainer
Whenever you have a customer, a product owner or an OSS project maintainer — a person who is interested in developing a project — it’s good to keep them in the loop. Show them what you have accomplished every once in a while, even if it’s not a big piece of software and even if you send pull requests anyway.
Don’t take it the wrong way, I don’t mean you should spam your project maintainer with emails (maintainers are usually busy after all!). The point is the following: if you work on a project regularly and try to make major contributions, it’s good to give the person on the other side an overview of what you were/are up to. This will not only help you get feedback and learn if you are doing the right thing or not, but it will also ensure transparency and shape your future plans.
That’s it. No silver bullet, right? Hope you still found it useful. Good luck!
…so the Rails Girls Summer of Code will come to an end!
Two months ago we blogged about our start — about us being loaded to code. Now, having some time passed, which seems to go faster day by day, there is this constant feeling of loading, loading knowledge to code or rather buffering — buffering all the knowledge we received those last months. We not only received great coding teaching but also valuable business knowledge. We reached out to the amazing SoundCloud-People surrounding us and mentioned that we are a little bit lost in our learning freedom and not having a structure set from top-down. We saw the problem, reached out and found solutions — creating our own structure. BOTTOM(S)-UP.
READY, STEADY, PUSH, DONE: Our KANBAN-Board in movement! (Image: Team LoadToCode)
Sharing is caring is <3 is RGSoC!
With this newly created structure of walking the (KANBAN-)board in the morning, we were able to have more awareness on the tasks and reach out to our amazing coaches more effectively. Speaking of it, when RGSoC taught us one thing then it was for sure support and patience. We were lucky and had those qualities in person: Duana, Remy and Sergio. Having the “I’m learning so much!”-attitude, as all of our coaches had, is the best present in the world to us newbies. Newbies, having no clue at all and asking how it works over and over again. Having passionate supporters which are fighting for a world without stupid questions is the most valuable RGSoC experience. Next to the great coaches in the SoundCloud-Office the #helpdesk-rgsoc-channel was always there when we needed it. GIT almost became our friend — ALMOST.
#Helpdesk LOVE (Image: Screenshot of RGSoC-#Helpdesk-Slack by Team LoadToCode)
Failing is coding, too!
Speaking of all those achievements it’s time to also mention failures. We worked on LEAP and we quickly realized that it is bigger and more complex than we could imagine! To make sure that we don’t get lost in LEAP-specific knowledge and tasks we told ourselves to split the day, start the day with plain Ruby-/Rails-learning and end the day with coaching and working on our LEAP-task. We tried but we regularly failed with this goal. We read more than we coded, trying to understand the twitter ruby gem and the twitter requirements. In the end we achieved less than we wanted, know more about twitter than we probably ever gonna need again, but we learned to keep on coding and asking AND were able to find a secure way to put some twitter content on the LEAP Web-App. So after 2,5 months RGSoC the day came we were waiting for so long and we were able to tweet to the world that our PR was merged. The Providers using LEAP will from now on have the possibility to connect their Twitter account within LEAP to easily inform users about releases or bugs.
Twitter Feature within Leap-Web-App (Image: Screenshot of Twitter Feature within LEAP by Team LoadToCode)
Oooooooooooooooooom
Having all about programming was fun, even on our #rgsocdayoff we didn’t stop programming. Instead of programming on our computers we preferred to connect with an IT-monk in Thailand and program on our minds on that special day.
Programming our minds on the #rgsocdayoff (Image: Screenshot of Duana's Tweet by Team LoadToCode)
What’s next?
At the beginning we couldn’t imagine that this Rails Girls Summer of Code would end somehow someday… Now that there are only a few days of it left, we can actually see the end coming /o\ ! However, we know that this Summer of Code is meant to be a start of something bigger and not only a short & intense moment of coding in our lives. So we are preparing ourselves to keep working on code and watch out for internship opportunities. Excitingly, we will be able to share our journey by attending conferences (yes, you’ve read it right, conferenceS(!) ) and hopefully meet many of the RGSoC people in real life! So to help us keep going, meeting more Ruby-enthusiasts and getting more into conference world of code, we are invited to
* RubyConfPt in Braga/Portugal at the end of October and to
* GOTO Berlin in Berlin/Germany in the middle of November.
Please ping us, if you are also attending one of these, we are happy to chat about #RGSoC, the Leap Project, Rails, Ruby and permaculture principles or feminisms!