A React guru's tips on learning to code without a CS degree
Hey, so can you introduce yourself?
I’m Roy Derks, software developer, public speaker, author and entrepreneur. Currently I’m working on multiple open-source projects for the City of Amsterdam, after moving here from a small village in the south of the Netherlands, and several small startup projects.
Creating new business ideas and companies has always been my passion, starting at lower school when I sold sweets and other small items to kids in my class. At the age of 14 I was already heavily interested in the internet and wanted to combine my other passion at that moment (movies and tv series) with entrepreneurship. The idea was to create an online marketplace where people could trade DVD’s (and later Blu-Rays) with other people, also offering a paid subscription with more features. But to create this platform I needed someone who could program, something I wasn’t able to afford.
Therefore I used the internet to learn myself how to code to eventually create the movie marketplace called “MovieMarkt”, which translates to “Movie Market” in English. This marketplace was run by me next to my high school education, something I couldn’t really care for. After finishing my high school, I went to University and chose Economics as my major. Before enrolling, I checked out the computer studies, and followed several introduction days. Only to find out that the entire first year curriculum was based upon skills I already taught myself.
What advice do you have for someone who wants to learn to code?
When starting to learn anything, whether it's programming or something completely different like golfing, you need to have motivation. Learning new things is time consuming and hard work, which requires you to be motivated to see it through the end.
Also, it makes sense to create a path that you want to follow - which a mentor could help you with. On the internet there are lots of places to learn programming skills, but these are also really cluttered. If you’re in example using Twitter, you probably get confused by people that are saying you should learn “framework X” or “library Y”.
In my opinion you should find a programming language that has a market fit and matches your own logic. If you’ve found this language, try learning its basics before exploring the libraries and frameworks. Libraries and frameworks are usually opinionated, meaning the contributors of this project have a certain opinion about the technological approach. This approach might not be the best approach for you, which you’ll only know if you understand the underlying programming language.
What does a typical day as a software developer look like for you?
I’m both an entrepreneur and a programmer, so my days are pretty much split into these two roles. Most of my time is currently spent on working on numerous open source projects for the City of Amsterdam, consulting activities for small startups and writing my third book - about fullstack development with GraphQL.
The last few months I’ve been working from home, which was kind of different from before. Usually I would’ve been at the office around 9am in the morning to do some coding, have business meetings around lunch and continue coding in the afternoon. After spending a day at the office, I would either go boxing or meet with friends.
Now I’m using my living room as an office and notice that business and social activities are way more intertwined, which has some difficulties. Although many of my colleagues enjoy working from home, personally I can’t wait to get back to the office soon. Social interaction and personal contact is important for me to level my creativity and focus during a working day. Something that’s missing for me while working from home so much.
How did you learn coding without a CS degree?
As mentioned before I started coding as I had an idea for a marketplace, where people could trade movies with each other. My first guess to start this was to find ecommerce software that could be expanded with a plugin to set this up. Platforms like Shopify weren’t as big as they are now, which led me to use open source projects based on PHP and jQuery.
I spend weeks trying out all available projects, ranging from Magento to Opencart. In the end I found out that all these projects were hard to customize, as they all used different abstractions and approaches. So I decided to try and build something from scratch, using tutorials that I found online.
My school offered IT classes, but those taught you how to use Paint, Word and other software programs. So without any programming experience this was very hard, but after some time I noticed there was a pattern in there and it was just like learning a new spoken language. You have to practice a lot and need proper examples to get started.
Needless to say, I spend hours over a long period of time after school and on the weekends. From trying out the open source ecommerce projects, I already had an introduction to the LAMP stack that was used. Using that knowledge I was able to build the system that had people create an account, add a movie to the database and initiate a trade with a movie from someone else's list.
Check out coding courses recommended by self-taught web developers
Did you have any mentors or people that inspired you?
The people that inspired me the most in this process weren’t developers, but entrepreneurs. I started programming with a vision and ambition to create a successful business. Something that was done by for example Bill Gates or Steve Jobs.
These people showed how they can reach their goals by using technology, which matches my vision of using technology to get where I want to be in the future. During the same time I was learning how to program, Facebook started moving towards Europe, and my country The Netherlands.
This again was a company led by a young technologist, Mark Zuckerberg, that was built around technology. Again this was inspiring me of the possibilities of technology to create a business - at that time just an online community. In terms of mentors I had some people helping me get better business understanding, like my father who has been an entrepreneur his entire life or people that managed me on my first “real” job.
How did you get your first programming job/ freelance work?
After building the first version of my movie marketplace, I noticed other people in my area also wanted a website for their business. At first I created websites for family or parents of my friends, which taught me a thing or two about interacting with clients. Later on I started advertising my services on the internet, after I had to dissolve my movie marketplace due to the rise of Video on Demand, giving me the chance to build websites for people all over the Netherlands and Belgium.
By the time I started my University education I had created all sorts of websites for small business owners, ranging from news websites to ecommerce stores. All of this was done from my own home, until I got a job at a digital consultancy agency in the third year of my studies. This company was hired by the biggest Dutch telecom provider to create a mobile tv guide application, and I was responsible to oversee the development activities.
Working with other developers for the first time in my life was challenging, but also inspired me to learn new things like software architecture and scalability. Next to learning more about development, I also learned a lot about what it's like to work for a big company.
Can you tell us about your coding bootcamp teaching?
At Restart Network I helped teach them programming skills and work with populair libraries and frameworks. At some point I wasn’t able to combine this with my other activities any longer, as I co-founded an electronics marketplace called SwitchBay.
At this new startup I had the privilege to work with multiple young developers, which I mentored and helped to improve their programming talents. Working with them was giving me a lot of encouragement to help even more promising developers, inspiring me to start giving speeches at conferences and start giving workshops and bootcamps with the React GraphQL Academy - something I still regularly do and enjoy.
What are some GraphQL benefits in your opinion?
Over the course of my career so far I’ve been interacting with databases and other data sources in lots of different ways. When creating an application based on a MVP approach this was done with models and later with REST APIs. But I also felt something was missing in these approaches, the data that you’re requesting was either hard to detach from surrounding structures or not customizable enough.
This was exactly why Facebook came up with GraphQL, as this approach wasn’t working well on mobile devices especially when the network connection or bandwidth is lacking. If you’re working on the frontend of web or mobile applications you can immediately see why this might be problematic.
But from a backend perspective GraphQL can be more challenging, as you’re giving the user of your API a lot of flexibility that may reduce the efficiency of your backend. So GraphQL can certainly benefit your application, but only when implemented correctly and with a certain need - you should know which optimizations will be beneficial for your use case. That’s why I started working on the book Fullstack GraphQL (co-authored by Gaetano Checinski) that will be released later this year. This book will show how to properly use GraphQL in your entire stack.