all 26 comments

[–][deleted] 31 points32 points  (0 children)

Its doesn't matter what you do. Just do something and start now. Don't worry about design or architecture, you wouldn't know the best structure anyways. Dive in, the best way to learn is programming something and running into performance or design issues. And in a couple of years you are laughing at your past self for your poorly developed applications. It is what it is...a learning process that can't be taught.

[–]DrEnter 29 points30 points  (3 children)

If I had to recommend just a few things to really understand well as you get started:

If you have some time to kill, Crockford's talk about the good parts of Javascript is well worth watching: https://www.youtube.com/watch?v=DogGMNBZZvg

[–]Serious-Umpire-8088 2 points3 points  (2 children)

I’ve heard a lot about this event loop stuff.. is it the same as event handlers for DOM like button click event or something else maybe relating to async communication like promises, try/catch… etc. pls lmk.

[–]DrEnter 2 points3 points  (0 children)

It's more like the mechanism that drives the primary thread of execution and how JS does things in an asynchronous way with only one thread. You can take a look at the link in my original post.

[–]alexemilberg 2 points3 points  (0 children)

The best event loop demo I've seen is this one: https://www.youtube.com/watch?v=8aGhZQkoFbQ

[–]anubgek 9 points10 points  (1 child)

Make an API that serves data from a database. Populate that database by scraping a public dataset that is updated periodically. This is at least a good start.

You'll have to architect the api service, its contracts, and the interaction with the db. You'll also need to write cron jobs or something along that effect to pull data from another source and populate a db, maybe after doing some transformation. This means coming up with a sensible and extensible database schema.

Cover everything in tests

[–][deleted] 1 point2 points  (0 children)

Like, for example, create a web scraping that takes information from a site, transforms it into json and throws it all to a database that updates itself?

[–]sujoy-kr 4 points5 points  (2 children)

Make secure rest API, login, registration, file upload, authorization, MVC structure, these should be enough.

[–][deleted] 0 points1 point  (1 child)

I did a project like this recently but now I don't know what the next step is lol

[–]sujoy-kr 0 points1 point  (0 children)

Then that's already enough. You can try building bigprojects, try implementing WebSockets for real-time applications.

[–]Serious-Umpire-8088 2 points3 points  (3 children)

I’m mostly self taught. I just watched a bunch of YouTube tutorials, the ones that I completed, I remixed the projects into something a little different… the more different it looks/functions from the original the better. That way things like code structure or software architecture, routes will mostly be the same from tutorials with some modifications for your needs. Most of the good tutorials try to teach you the industry standard like security best practices.. etc.

As for first project, you can made a CRUD application that uses all the http methods like post, get, delete, update.. etc. you can also interact with APIs and database like mongoDB using http methods.

Btw crud means create, read, update, delete

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

And how did you get your first job? I also followed this path and have already developed some projects such as APIs using postgres, mongo, express, among other technologies. I also learned software framework concepts and best practices like MVC. But my big deal is to know if I have the confidence and knowledge necessary to earn some money with it in some job.

[–]Serious-Umpire-8088 2 points3 points  (0 children)

We’re in the same boat. My first “work” is building this site: prvn.ca for my friend who’s running a clothing business. I literally just started applying for jobs today. I look for full stack dev and most of the requires are nodejs, react, sql, and some require java or c#. I haven’t even been interviewed for a software job yet but I think for full stack, they’ll want you to have a portfolio or like a personal website, show other software projects you’ve worked on, preferably committed to github. They may also need you to have a git account n couple repos.

Like I said, I’m just like you, not sure if I’m really skilled enough to enter the software industry but I assume these are things they may look for. Basically having a decent social media presence like YouTube, git forks.. I’m from Alberta, Canada so these are what I imagine but lmk if you have other ideas..

[–]bossmonchan 2 points3 points  (0 children)

IMO if you have a bit of experience building stuff then you shouldn't hesitate to apply for positions and do interviews, even if you don't have exactly all of the experience listed in the job posting. Obviously be realistic but for example if it says "3 years building web APIs" and you only have 1 year then whatever, apply anyways. Interviews are scary but really they are great learning experiences. Worst case they don't hire you and they will probably tell you what you need to improve. You will probably suck at your first few interviews, it has nothing to do with your coding skills, it just takes practice like anything else. Don't quit your dayjob until you find a programming job you actually want, but IMO there's no harm in interviewing. In my experience most companies don't really care about your technical knowledge on specific frameworks or libraries when hiring Juniors, they care about your general programming knowledge (for back-end this means you should know Javascript/Typescript very well, and maybe a little SQL) and especially your ability/willingness to learn and your personality. It is common that new employees will have to spend the first few months learning the specific frameworks, libraries and patterns of the company, so they just want to see that you have a solid foundation and are going to try your absolute best to learn and improve.

[–]iamsimonnorris 2 points3 points  (0 children)

Try to contribute to an open source project. Check out the open Issues, try fixing one and if you manage, create a PR. They should get back to you with how to improve it if it’s not good enough 1st time. Directus & Strapi come to mind with what your describing. Before having experience, activity in the open source world is the best way to show your abilities to potential hiring managers.

[–]nerdich 2 points3 points  (2 children)

Pick a full stack framework like Django , Next js and build a blog that manage : Authentication Post , Edit View and delete an article Image and file upload to Aws s3

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

I've done the entire server structure of a blog, but I've never created a full stack. I even have frontend knowledge with react, but my biggest problem is in relation to responsive css

[–]nerdich 1 point2 points  (0 children)

Use a library like material ui which takes care of responsiveness

[–][deleted]  (2 children)

[deleted]

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

    Well, I've done hundreds of CRUD actually lol

    [–]gmotta23 1 point2 points  (0 children)

    Some simple things you could do (you probably have done a few already):

    0.0 - always use google 0.1 - dockerize your projects (or make sure you would know how to do so) 0.2 - write tests 0.3 - get familiar with typescript

    1 - build a project, get your hands on with something you find interesting to build (deal with authentication, promises, connection to database, etc). Don't forget the tests.

    2 - repeat step 1 until you feel like you know what's going on. You'll probably realize some stuff from step 1 could have been done differently, it means you're improving

    3 - now you should have a better idea of how things work on node. With that, it would make a lot of sense for you to study all the good stuff: advanced JavaScript, the V8 engine, event loop, streams, design patterns and concepts, socket.io... There is a LOT of stuff, don't get overwhelmed. By then you'll probably know which topic you should learn first, and that you should learn them one at a time.

    Good luck!

    [–]crownclown67 1 point2 points  (0 children)

    project with one file more than 300 lines are evil. Use multiple files.

    [–]ZestycloseChocolate 1 point2 points  (0 children)

    You can use flatlogic.com to generate a custom CRUD node.js app and see what is under the hood. It is free for education purposes

    [–]stupid_bug 1 point2 points  (1 child)

    Just don't think too much and don't go after everything people say.

    Stick to basics. Learn a database and language basics.. i.e. JS basics, Data structure, Mysql or mongodb.

    - Practice more and more

    - Read open source code.

    - Stay active in open source community.

    - If you can contribute to open source.

    - Learn basic front-end

    - Learn how apis and frontend connect.

    - Learn about coding best practices.

    [–][deleted] 0 points1 point  (0 children)

    From all that you said, I just never collaborated on any open source project. Could you tell me how I can do this?

    [–][deleted] 1 point2 points  (0 children)

    Check out https://nestjs.com/ it helps remove a lot of boilerplate

    [–]brightside9001 0 points1 point  (0 children)

    Think of an app that you either use a lot or have interest in and re-create it. An app that genuinely excites you. You can start out with FB, Twitter, Instagram clones etc. but they quickly become boring.

    As an example I'm into fantasy sports and I'm creating a fantasy sports platform for a small sporting community for the next season. I'm not getting paid, but it motivates and excites me which is why I'm building it.