DEV Community

I need advice before beginning new project

Jaimie Carter on June 13, 2019

Hello everyone! I'm about to start my next project to continue on the learning path. I'd like to build a calendar roster management application, ma...
Collapse
 
avalander profile image
Avalander • Edited

Well, it all depends on what you want to learn, but when I start a personal project this is what I usually do.

  1. What backend language would you use?

Nodejs with express is my default to go. I'm familiar with it and it is really easy to set up.

  1. What approach would you take with structuring the database?

I would choose a document store, like MongoDB, and have a collection for each kind of data I need to store, unless the data is highly relational, but that's seldom the case in my projects.

  1. What approach would you take with structuring the application?

I start simple and let the structure emerge as I learn more about the application I'm building. My starting point is usually grouping vertical slices of functionality in the same folder. For instance, if I have an API related to users, I would have a user folder with separated files for the API endpoints, the database operations, and any other layer of functionality I might need.

You can check this project on GitHub to see an example of what I mean.

Collapse
 
jamonjamon profile image
Jaimie Carter

This is awesome. Thanks, I'll check out the GitHub

Collapse
 
babrown93 profile image
Bill • Edited

As you know Jaimie, I'm a Microsoft advocate.

I would go for an ASP.NET Core MVC application. C# is it's backend. I'd likely go for an SQL database. Simple N-Tier architecture. Don't overthink the 'structure' so much. Your project will most likely mutate, use this project as a way of learning the best structures. I would also add that projects that are quite different to another will often be a different structure.

Collapse
 
jamonjamon profile image
Jaimie Carter

Hey Bill,
C# is great, as is .NET. The whole Azure integration is pretty impressive, as well. I like the structure of SQL with the ability to put json in there as well is very powerful.
Node has always scared me because it seemed chaotic and complex, as does NoSQL databases. So. I'm going to go with what scares me... Then the next one is C#

Collapse
 
babrown93 profile image
Bill

I suppose if your objective is to learn something new [assuming you have already used the aforementioned] then your choices are probably right. To be perfectly honest though, I see no benefit to using Node or NoSQL solutions over the previously mentioned technologies.

I will be intrigued to know what comes of this, let me know your thoughts later down the line in the project.

Good luck.

Collapse
 
flrnd profile image
Florian Rand • Edited

Let me see, I probably would go with a serverless approach. Maybe firebase or similar. But in case that a backend its mandatory I'd go with javascript (express). Why? Because in case, I can use the same language in backend and frontend. For learning purposes is a lot better focusing in just one language.

Now for the database, first thing is to create a data model, there are good books about relational models and I'd start with that.

And point 3 I remember a very good article here in dev.to about that but I can't remember the link, maybe a fast search on the topic?

Hope it helps!

Collapse
 
jamonjamon profile image
Jaimie Carter

Thanks Florian! I was thinking about Node... And firebase is a good idea to get it working. I'd forgotten about firebase! Thanks for the advice, it's greatly appreciated.

Collapse
 
flrnd profile image
Florian Rand

Wonderful!

Collapse
 
ssimontis profile image
Scott Simontis

I'm going to suggest something different here...none of that truly matters, and if you spend more than thirty minutes researching it, you are procrastinating. Pick a language you feel comfortable with. You might not understand why something is a best practice when it comes to design issues, learning the hard way might be the most beneficial thing you can do.

You can modify your approach at any point in time if it is not working out, but first you need to start!

Collapse
 
jamonjamon profile image
Jaimie Carter

Good point

Collapse
 
mccurcio profile image
Matt Curcio

Hi J,
Remind me what your ultimate programming goal is. Are you shooting for Web creative or full stack or what? Also, what is your computer skills background?
Keep working, :))

Collapse
 
jamonjamon profile image
Jaimie Carter • Edited

My ultimate goal is to be useful to a tech company outside of broadcast. I'm not too concerned about the role. My programming ability is from zero to identifying a problem I had (at work) and building and deploying an app that solves that problem. I did that in six months. I understand dynamic multi dimensional tables, basic security issues around PHP and how and why to sanitise data and use preparation statements (PDO) for depositing to the db. Deployment on AWS elastic Beanstalk, modifying the Apache server for permanent redirect to use https. The importance of data structures being correct. Redundancy. Dependency , etc etc etc. So I understand how to break problems down into small components of a complex system and put that complex system together successfully.
I understand managing a crew in high pressure situations. I understand deadlines like only a broadcaster can understand (when the DA counts to zero, you're on air of you're ready or not... Theres NO second chance).
Not too sure of that's going to be useful to anyone, but I'm hoping it will at some stage. Until then, I've still got a great job, and I'll keep building things and expanding my skill base. I guess the bottom line is - I feel energised working on a code project, where I've done everything in broadcast and really want to be excited again. Does that all make sense? What about you?

Collapse
 
mccurcio profile image
Matt Curcio

In the US, there are 'Meetup.com" groups. Does your area have any local computer groups? They are great places for help and ideas.