Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community!
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.Start your free trial
Thomas MooreFront End Web Development Techdegree Graduate 25,371 Points
However it leaves the backend surprisingly open. Whenever the backend is mentioned in the courses I'm working through, the instructors usually say something like "...whether you're using Python, PHP or Ruby" without recommending which one to pick or what's needed for the full backend stack (APIs, databases, servers etc.)
Any help or advice would be greatly appreciated.
For what it's worth, this would make an excellent Treehouse course that's currently missing – a generally agnostic view of a web app's (or native app's) backend incl. APIs, databases and server hosting.
The requirements I have are fairly standard: – User account creation and authentication, – User uploading text and images to a database, – User liking/favouriting content drawn from the database, – Database information available through APIs.
Christof Baumgartner20,864 Points
Yes, you're right, a general and language agnostic view on this topic would be nice to have. There is the https://teamtreehouse.com/library/how-the-web-works course, which covers some general terms here, but it's not going very deep. However most web framework courses at teamtreehouse start with basic explanations of web server architecture. Once you have worked with one, the other ones will be a lot easer to understand, because most basic concepts are the same for different systems.
The reason why teamtreehouse is not telling you what to choose for backend, is because this is a very open topic. Frontend technologies like HTML, JS, and CSS are used on nearly every webpage, but for the backend there are pages, that run only with python, or only with java. So you have the free choice here. A lot of people start with a web framework in a language that they are familiar with (spring for java, or django for python). If you have no experience in any of these languages, then no worries, you can't make anything wrong. All framework courses start with the basics and explain how a webserver is working and how it is processing requests.
A few thoughts on some technologies:
- Many people without prior experience in backend web developing start with PHP, because you don't have to learn another language before it (PHP has been made for server backends) and it is very easy to set up. You can start directly by writing your first commands that will make your web pages come to live. However creating larger projects can take some time, because you have to write all the code on your own.
- This is were big frameworks like ruby on rails come into place. They already have a lot of libraries and code included. You will need to learn some ruby first, but then ruby on rails supports you with commands to create basic systems like a block backend in just 5 minutes. This is great when you directly want to have something 'cool' and working
- Somewhere in the middle are micro frameworks like Flask for Python and Spark for Java, that are quite basic, but allow you to use your existing Java or Python code. So you can upgrade your local software projects to web applications. Micro-Frameworks are also great to understand what a web server is really doing, because you write most stuff, like the request-handling on your own.
To avoid frustration you should start with a track here, like 'PHP Beginner', or 'Rails Development'. They will teach you all you need to know from the beginning. Once you have finished the first one, the next will be a lot easier and soon you will find the web framework, that you like most.
Have a good coding time :)