Slack Thread |
---|
Hey all, I’m Anil, a CS student in university. This past semester, I took the Android class Rahul made for CodePath, which is how I found out about his YouTube channel and this community. I’ve been wanting to work on personal projects for a while now, especially having learned the basics of Android development. However, I am a little lost on what to spend my time learning. I was planning on spending winter break building some apps, but I realized that I simply don’t like frontend development. Mainly, I have minimal interest in anything related to UI/UX development, which seems to be a significant chunk of the work. I enjoyed working with REST APIs or services like Parse, where all the development time is spent trying to make something functional, but working on any component of a project that’s purely visual is just not for me. One of the areas I’ve always thought would be interesting is backend development, since it sounds like lots of fun to build APIs that interface with a database to manipulate data. It sounds ideal for me, since most of your time is spent designing code, not a UI. I tried to look into getting started with API development, but it seems difficult to build anything without a frontend. Based on what I understand, APIs are generally designed to meet the needs of the frontend, so without at least an idea of what the final product would be like, it seems difficult to build anything interesting or useful. Furthermore, I know very little of how APIs are architected and built in the real world, so I wouldn’t even know if I’m doing it “right” (unlike frontends, where the end goal is much clearer to me). What would you recommend I do? I am of course open to other areas of software, I simply don’t know anything about them or how one would get started on their own. Another possibility I was considering is simply not bothering with coding projects for the moment. I have an internship next summer, so I will naturally learn a lot, and I’d have a better idea of what projects I want to build afterwards. Also, as a follow-up, how might one go about building projects with users if one is not building a project with a frontend? Thanks in advance for your thoughts.) |
You should do whatever sounds interesting to you. You can just build backends and play around with them using curl commonds, postman or something similar.You can also just make really simple front ends with no styling and focus on the business logic part of your front end. For example, you can just make buttons that hit your back end endpoints, or wire up forms that hit your endpoints. "Based on what I understand, APIs are generally designed to meet the needs of the frontend, so without at least an idea of what the final product would be like, it seems difficult to build anything interesting or useful." This is not necessarily true. Think of services like Stripe and Foursquare. They (mostly) provide back end services or SDKs, and their products are interesting. You could also look into building out proxies or reverse proxies. In terms of doing it "right," just focus on getting things working while following basic conventions provided by whatever community you're associated with. Sprint, Rails, Node/Express, all have docs you can look at with conventions. At the end of the day, I wouldn't overthink things. If you want to build something, fine. If you don't in lieu of building things at internships, also fine. |
Great question @Anil Shanker. I agree with what @Daniel Dawson said, just do something exciting enough that it motivates you to build it. I was actually in a similar position years ago where I felt like my knowledge of backend and APIs was limited. One way to learn more about best practices is to leverage APIs that are designed by good engineering teams (Stripe, Twitter, Shopify). If you build a few applications with the API, you’ll naturally get a feel for what a good API design is (how does search/pagination/authentication work?). You’ll also be able to understand tradeoffs with alternate implementations, which IMO is the sign of seniority in engineering. In my case, Stripe was blowing up at the time that I was exploring, so I made a very basic app on my personal website which let people email me if they paid $5. It involved a very simple HTML webpage and a backend (Ruby server on Heroku) talking to the Stripe API. Whatever you do, I’d really recommend choosing a company where the docs are clear and well-explained. Stripe was actually famous back in the day for how developer-focused they were, so I’d prioritize things like that. You can learn a lot from reading the docs (esp version changes). |