From Coding Challenge Ankara to JSNation Amsterdam
Once again, we left behind yet another weekend full of development. Technical events like this give us the opportunity to interact with our community more closely, meet a lot of new people, and have insightful conversations. We also get to spend more time with our teammates who are not involved in the same project and enjoy each other’s company eating and drinking together. This way, we make the most of these events and create priceless memories.
As for Coding Challenge Ankara, we must say that the interest we received was just amazing. We had fellow developers coming over from not just Ankara, but also various other cities such as Trabzon, Izmir, Konya, Istanbul, and Eskişehir. For this challenge, we invited up to 20 to 25 people out of hundreds of applicants. We also had the chance to grab a cup of coffee and catch up with some of our dear friends from Ankara, particularly Erhan Yakut.
We held the previous Coding Challenge event back in December at our headquarters in Izmir. This time we were at Ankara Walkers Tunalı. First, we had the opportunity to get to know our participants a bit more during a brief networking session accompanied by Walkers' magnificent breakfast. We then kickstarted the challenge after explaining the following steps in more detail to our attendees. At each challenge, working on the same project with people who have very different levels of GraphQL knowledge is always a new experience for us all.
So, why do we care so much about Coding Challenge? Because as a company that uses GraphQL effectively and extensively, we want to contribute to the growth of our community. On various days of the year, we give speeches at conferences, organize events, and reach thousands of developers in Turkey. Likewise, Coding Challenge is also another opportunity for our teammates to share their knowledge and experiences. Throughout the event, our team and participants conduct code reviews and brainstorm together. We have detailed talks about the mistakes made during the challenge and discuss possible solutions.
While we are at it, it would be useful to talk about the errors that we think were made in Ankara and Izmir. In both of these events, our teammates observed many common mistakes. As part of Coding Challenge, we present our participants with a problem. We then document this problem exactly as we would for one of our clients and expect the participants to solve it using TypeScript and GraphQL. One of the main issues we encountered was Gold Plating, which exceeds the requirements and specifications of the project and results in extra and unnecessary development. We observed that the participants who did Gold Plating were not able to use the time efficiently and ended up wasting it. Instead, we think our participants could have focused on the actual requirements and the problems we hid in our challenge.
A few of the problems we noticed in the use of GraphQL were based on not correctly introducing the application domain to GraphQL, not accurately naming it, and not showing the relations in the right way. Some of the applications were developed not using the correct Ubiquitous Language. The relations between GraphQL types were sometimes shown falsely, and many features of GraphQL were not used properly. For example, instead of using GraphQL's ID property in entities that contain IDs, String or Int definitions were made. As a result of these errors, many of our participants ended up designing the GraphQL API as a RESTFul API. As the Atolye15 team, we spend a lot of time thinking and working on the GraphQL schema in all the products we develop. Because this structure reduces the development and maintenance cost of our application and gives us a better idea of how the data structures and relationships within the application will look like.
Last but not least, one of the key technical requirements we focused on was for the challenge application to be designed as a production-ready product. We expected the participants to apply their own linting and formatting rules in addition to layers and separation of concerns within the APIs they developed. It was extremely crucial that the code they delivered at the end of the day would be consistent within itself.
We shared these common mistakes and their solutions with our participants in a detailed session right after the challenge. We hope that they found the information we provided useful and that we were able to help them improve themselves even a little bit.
And - of course - the challenge finally had a winner: Tarık Yusuf Yıldızcı! Currently studying Business Administration at METU and working as a part-time Frontend Developer at Evraka, he became the champion of Coding Challenge Ankara and won the award to join the JSNation conference in Amsterdam.
P.S. Maybe we will write a whole new blog post for the awesome food spots we discovered during our stay in Ankara. :)