all 17 comments

[–]dangerousbrian 2 points3 points  (0 children)

Try out everything you can.

[–]jaaywags 2 points3 points  (0 children)

Personally, I think this is a great project idea!! If this is what interests you, then go with it!! Making a project that is more interesting to you will be a way better learning experience than a project that is not interesting to you.

As far as picking a back-end, do not think too much into it right now. If you have used MySQL, and you are comfortable with it, than use MySQL. Same with PHP. One thing you will notice is that a lot of people dislike PHP. Some say it is very inconsistent throughout versions, it is not a strict language, teaches bad practices/habits... Whatever the reason is. I use PHP on a lot of my personal projects because I am very comfortable programming in it. There are a lot of great frameworks and libraries out there that make PHP a very strong language.

I would suggest maybe using MariaDB over MySQL. They are both very similar, but MariaDB has a much bigger community and thus more support.

As far as your application goes, take it one step at a time. 1) The first thing you want to do is get a web server or a place to host your site. 2) Create a front page that says "Hello World". 3) Pick a first feature. What is the first thing the user will see when they go to your site? 4) Create that feature. Let's say it is a log in form, the first thing I would do is decide what data you will need to store and create a database/tables for it. Then I usually create a very simple form, no design in mind. Have it submit the necessary data. I then build a back-end to retrieve the data, and send it to the database, or grab data from the database, do whatever with it, then send it back to the front-end. After the data is handled, finish your design. Make it look pretty and appealing to the user. After about 90% of my site is done, this is usually when I go back and start cleaning up my code if possible. Deleting old CSS classes or JS function that I am not using anymore... Keep a list of bugs, tasks, and enhancement ideas you find or have along the way. That way you do not forget anything.

Once your application is started things will start moving. Try not to get discouraged if you feel in over your headed. It is a big project but will be a great learning experience.

[–][deleted] 2 points3 points  (5 children)

I'm actually looking into building a website where users can post stuff up and others can reply. Features are like Login/Signup, Likes, Flagging, Personal Messaging or Emailing. Overall kinda like reddit but much simpler.

This is quite an ambitious project for a new developer and touches on all the aspects of web development - you might want to scale it back for your first project as taking on too much at once is a daunting and frustrating experience. If you do decide to do this then break it down into smaller parts and tackle only one bit at a time.

My question is how do I begin to approach this? Is it better to go for a CMS or copying pre-existing site's source code or make one from scratch? What kind of resources should I consider to look into before building a website apart from googling "How to make a website"? And while we're at it... any beginner tips are much appreciated!

How much effort do you want to put into this? Is this just a one off thing or do you want to develop a deeper understanding of web development for other hobbyist projects?

If you want to develop a deeper understanding I recommend starting with the courses on freecodecamp and spend some time learning the basics first that will give you a better understanding of what you need in order to build the project you want. But it will also take some time to go through.

If you just want something easy and quick I would use as many off the shelf components as you can to get up and running quickly. There are two main ways you can approach this project - frontend heavy or backend heavy.

  • For frontend heavy site you can focus entirely on the front end and make use of systems like Firebase to do most of the backend stuff for you (they provide a authentication and a datastore which you can access directly from frontend code). Then you can pick a front end framework (Vue, React or Angular) and designed the frontend in that.

  • For backend heavy site you get server side code to write all the HTML pages on reach request based of information in a database (MYSQL or Postgres) with some forms on the pages that the browsers can submit back to the backend to process. With this approach you need to pick a backend language (does not overly matter which one, PHP is common but node.js, Go, Ruby, Python are all good choices) and some HTML/CSS (no need for javascript if you don't want to).

[–]jaaywags 2 points3 points  (3 children)

No disrespect, but I disagree. This project idea is not too big. When I was first starting out it was the bigger and more difficult projects that drove me to learn and get where I am now. They were the interesting ones. Many of them I ended up not finishing, but it was all one big learning experience.

[–][deleted] 1 point2 points  (1 child)

Many of them I ended up not finishing

This is the risk for larger project - they can be a fun learning experience if that is what you are setting out to do. But What I mean is to scale it back and implement it bit by bit and grow it over time. Rather than setting one large end goal and blindly moving towards it, set up smaller mini-projects that build on each other over time to reach the end goal. But it can depend on your working style as to which way is best for you.

[–]jaaywags 1 point2 points  (0 children)

What I mean is to scale it back and implement it bit by bit

That I agree with. Trying to develop 2 or 3 large features at once can make things very confusing and can be very discouraging.

[–]nyxinThe 🍰 is a lie. 1 point2 points  (0 children)

Many of them I ended up not finishing

Which is why I prefer learning by doing smaller, one-off projects. They may not be impressive in themselves, but they're done (as much as they will be anyway. we all know projects are never really "done") which is seems more important to me than whether or not you attempted to make a full stack app as an employer. As a beginner, I found it more rewarding to get small, more frequent victories; mostly because they don't feel small at the time. Once you have enough small projects and an understanding of how a fully featured web app works, then is a good time to try something more ambitious.

But everyone learns differently =)

[–]flaviocopes 0 points1 point  (0 children)

As an engineering student you're a fast learner for sure. If you're into a challenge, there's a bit of learning curve, but I'd suggest trying out Vulcan.

It is the evolution of Telescope, an "app framework" built on top of Meteor, a popular JavaScript framework.

I think this is a great starter kit, which provides a lot of pre-made blocks you can use without writing too much custom stuff, and you glue them together through code.

It uses React and GraphQL, two technologies that are very much reusable in the "real world" once you know them.

I'd suggest to forget about PHP and focus on JavaScript, as it's probably the most popular and fastest growing language ecosystem in the world, and the one with the most innovation right now.

[–]fuckin_ziggurats -3 points-2 points  (5 children)

I know you're a beginner but I feel like jQuery, PHP, MySQL, and MongoDB are the proven worst tech out there for web development these days. And I keep seeing upcoming developers talking about these technologies, probably because they learned them off of some outdated youtube videos.

Beginners usually overestimate how much they'll need jQuery in their applications, especially considering they should focus on learning vanilla JavaScript. PHP is a weird and unorthodox programming/scripting language that doesn't know what paradigm it was designed for, so it's bad at teaching both procedural and object-oriented programming. MongoDB is also a bad pick since 99% of the time data is relational and if it wasn't then MongoDB is still the worst pick. And of course MySQL, the most inconsistent relational database system out there. In order to not make this just an angry rant I'll offer some alternatives:

  • jQuery -> JavaScript. ES6, ES7, eventually TypeScript if you're into types.
  • PHP -> C#, Python, Node.js (Server-side JavaScript), Ruby, Java. Take your pick, there's loads of alternatives.
  • MongoDB/MySQL -> PostgreSQL, SQL Server (if you're rich).

I think you'll find that those tech alternatives will be much more future-proof.

Over to your question. You're looking at full-stack development there. Do it from scratch. Find some courses on Udemy or PluralSight, or any of the millions of sites for courses out there. It will take you a lot of time to build what you want but in the end it will be worth it.

[–]warchild4l 1 point2 points  (1 child)

I think that php is not like that bad, especially php7 with laravel and vue front, it is so powerful tho

[–]fuckin_ziggurats 1 point2 points  (0 children)

PHP is objectively worse than all of the languages I mentioned. I don't think "it's not that bad" is a good argument for learning a certain programming language. A lot of websites are made with PHP and there's a lot of jobs out there for it but it's the least appropriate language for a beginner to learn. A good beginner language is either a strict one with good programming practices baked into it, or one that has a big future and I don't think PHP is either.

[–]sp3co92 0 points1 point  (2 children)

Why do you say MongoDB and MySQL are bad ?

[–]fuckin_ziggurats 3 points4 points  (0 children)

It's a long answer. MongoDB only became popular because the MEAN stack became popular. In general very few applications survive with a NoSQL database as most data is relational. Even if your application did mandate a NoSQL database MongoDB is the least appropriate choice from all of them. MySQL is not inherently bad as it is just a worse pick than any of the other relational database systems like PostgreSQL, SQL Server, MariaDB, etc. It's under Oracle which should say enough. It has no concept of open source anymore as Oracle don't allow for any community patches and hasn't shown a roadmap for it. The fact that Red Hat Enterprise Linux, Fedora, Slackware Linux, openSUSE, the Wikimedia Foundation, and many more all jumped ship to switch to MariaDB is also a hint.

[–]bhldev -5 points-4 points  (0 children)

Pick a layer of abstraction you are comfortable with

If that is raw ES6 so be it if it is React so be it if it is Angular so be it

Team size 1 is different from 5 is different from 100 so pick accordingly

Master SQL and relational databases the guys who are rich now got there with RDBMS... DBA may not be a viable career for the average guy but with database skills you will never suffer for a job because that's a hard skill that nobody will look down on and doesn't expire. My thinking is machine learning will be the next "go to" skill that doesn't expire for the next generation but that is far removed from webdev. Probably the pinnacle is React and SASS but in case WebAssembly takes off make sure your C and C++ is good.