Jump to content

Front-end and Back-end Developers

Hi P
Go to solution Solved by vorticalbox,

If you're learning aws then learning docker is a great bonus so you can drop containers into AWS fargate.

 

Git is a must and unit/integration testing.

I want to focus on Back-end Development and upon doing some research for jobs in my country I gathered the following info (already weeded out the options)

 

From most to least mentioned (they are in order, e.g REST is the most mentioned and Linux the least)

Spoiler

Most common

REST (and a bit of SOAP)
MySQL
Git and Github

 

Common

Java
Scrum
JavaScript
PHP
AWS
Spring

Laravel

 

Uncommon
Docker
TDD Test Unit
Google Cloud

.NET (C#)

Linux servers

 

I have this info, but its still unclear to me which order would make the most sense for me to learn, could someone please help me out? :)

 

My gut tells me:

Java > Spring > REST > MySQL > AWS > Git ?

 

1) Which order would you recommend me? (I wanna be clear, I would learn Java before PHP as I found more Java jobs)

2) Should I learn just enough Front-end before even beginning with Back-end? (Not going Full-stack, but Front-end knowledge sounds helpful)

 

Thank you very much :D

 

Link to comment
Share on other sites

Link to post
Share on other sites

If you're learning aws then learning docker is a great bonus so you can drop containers into AWS fargate.

 

Git is a must and unit/integration testing.

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to comment
Share on other sites

Link to post
Share on other sites

I am no "professional" by any means - I am not even fully employed - so take this with a grain of salt...

And keep in mind - everything is just my opinion

 

I will not tell anyone what to do, because I don't have enough experience in working field at all. All I can tell you is the following;

 

I am just 18 years old, though with decent experience in full-stack development, and I am "partly" employed in a semi-large company as a programmer - I can't be full-time because I'm still a student (and laws here, etc..). I develop internal applications with "progressive" technologies such as NodeJS for backend, VueJS, Webpack, Service workers for frontend, etc...

 

The company is selling machines for casinos, machines themself (hardware) and software. Their software is written in C, C++ and maybe they'll switch to Java if they'll start a rework at some point.

 

C++ and Java are quite popular in the fields of gaming industry (gaming as "casino gaming").

There are also loads of applications for internal company organisation which are all written in Java and C++

 

If you're looking to get in some more "current-gen" work you should look into mostly web-related technologies.

Get familiar with Javascript, NodeJS to be more specific, and at least ES6 if possible with latest standards. If you will follow the NodeJS path, you should also look into GraphQL - a very good standard for HTTP API development. Look at it like an improved version of RESTful API standards (you should also learn at least the basics of RESTful APIs).

Don't forget about MongoDB - it's a bit weird if you're already familiar with MySql, but if you're starting a new project and you can pick between those two, I'd go with Mongo. It needs a bit more setup, but it gives you much more freedom and flexibility.

 

Speaking of Docker - learn it. It's very easy, it will help you A LOT. Especially when you're working on some backend stuff. In most cases servers run on linux-based environments. Docker helps you run your backend app in linux environment, while you're using Windows - without any virtualization. It's great - lean it.

 

Long story short... In my opinion you can't go straight to some language / technology and be like "I will learn this because this is what it is used at the moment" because at the time you'll get good enough, it might not be an industry standard any more. Well this probably doesn't hold true for C++ or Java, but it might for some other technologies.

If you have enough time - find some interesting, yet easy, project and try to complete it in a few different technologies.

You should learn how to use Docker in any case.

 

This post might be a bit messy, if anyone thinks I should correct something or needs some explanation, please `@` me.

Link to comment
Share on other sites

Link to post
Share on other sites

On 8/17/2019 at 10:32 AM, vorticalbox said:

Git is a must

This is a false statement.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

10 minutes ago, Dat Guy said:

This is a false statement.

not in a commercial environment, unless you have examples of companies that use no source control?

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to comment
Share on other sites

Link to post
Share on other sites

There is quite a huge difference between "no Git" and "no source control" and I think that you know that. Not everyone and their dog has migrated for the worse.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

@Aljaxus Thank you very much :D

 

I completely agree with you, it's just that at the moment I have too little programming knowledge so I thought I would be a good idea to begin by learning what companies around me are requiring, I had been learning Python, C and C++ but there's little to no demand for those (around me), but there plenty for Java

 

Could you give me a hand with something? I'm having a hard time understanding how the technologies below work together to build something, I just know what YouTube / Google has taught me so far (this is regarding Back-end, mostly)

 

My understanding so far is the following:

 

Spoiler

 

- I have to understand Front-end before Back-end, so I have to learn:

        HTML (the backbone of a website)

        CSS (to make it look pretty)

        JavaScript ( ??? )

 

- Java for Back-end ( ??? )

 

- Git (and GitHub)

         Keep track / control of the development process, project versions, etc

 

- TDD

        Automated tests for the software

 

 

- SQL and REST

        To interact with the server

 

- AWS ( ??? )

 

- Docker

        I kinda understand what this is for but don't know how to explain it my self, so don't worry

 

 

1) Could you please briefly explain the ones highlighted in Orange?

2) Are those basically what Back-end development is made of? (excluding the Front-end part)

 

Link to comment
Share on other sites

Link to post
Share on other sites

45 minutes ago, Hi P said:

 

1) Could you please briefly explain the ones highlighted in Orange?

2) Are those basically what Back-end development is made of? (excluding the Front-end part)

 

 

You got few things wrong but here some answers

 

Javascript run only on the client side but some code i would consider it back end. An example would be threejs that does 3d matrix computation and lots of other more complex 3d thing. A Lot of it is back end stuff.

 

Java can be both front end and back end it depends on what you are making.

 

SQL and REST you go that wrong. SQL is a language, it's not how you interact with a server. REST is a way to communicate with a web service so that it's multiplatform. You interact with a server ONLY with packets. Be it TCP / UDP or whatever fancy you might invent or other older tech. Usually communicating with a server is mostly all abstracted for you in each languages to a certain degree.

 

AWS is a restful web service (REST)

 

The easiest way to understand what is a web service is to think is as a simple DLL but that instead of being local on your storage it's running somewhere else. Don't get me wrong, It get more complex than that if you dive deeper but this simple analogy works 100% of the time with my interns new to programing.

Link to comment
Share on other sites

Link to post
Share on other sites

If you want to "quickly learn development just to get that shiny software engineer job just because it pays well" - don't. You really need to like problem solving, be passionate about technology, love challenges, love digging deep, analyzing, creating and making stuff work. If you can't tick most of those boxes then most likely you will not like this profession. This trend of "everyone can be a developer" is bull***t and as not everyone can be a musician - not everyone can or should be a developer. Sure you can start as a junior developer at some company and be proud of yourself and try to climb up the ladder, but if you won't like what you're doing you will burn-up and stay as a junior developer for the rest of your career at best. And worst case you will simply waste tons of time doing something that you have no passion for.

 

Now as we got this out of the way and you really want to learn software development there are many areas that you can aim at. You are talking about back-end and all those Web development related technologies, but have you considered app development, IoT development, Native platform development? Web of course is fairly easy to start at, but you need to pick an ecosystem. There's mainly three ecosystems for web development: Microsoft with .NET, Java and PHP. The easiest starting point would be PHP - it's simple language that has a low learning curve and you can start coding in minutes. There are tons of resources and material to learn from and most popular frameworks used with PHP are Laravel and Symfony. Java and .NET (mainly with C# language) are similar in terms of language and are more enterprise oriented so have a steeper learning curve but probably better job offers too.

Speaking of learning - start small. Code a few basic apps, get a hang of it, feel the code and most importantly learn the code not the language. Principles, paradigms, design patterns and software architecture skills - that what makes you a Software Engineer. Languages shift and change so you need to build strong foundation of engineering skills to be able to pick-up any language and continue building stuff. It's totally fine to look up documentation to check for argument order of some method, but if you've memorized half of the framework API's but can't tell a difference between an interface and an abstract class - that's where you know that you're doing something wrong. Don't look at that AWS or Docker jargon - this stuff will come later... In other words - you don't need paddles if you don't have a boat yet.

Best skill to teach yourself is to know how to learn. Create challenges for yourself, try out some code kata's, try many different libraries, languages, frameworks and don't just use them - reverse engineer them, learn how those work, how they were built and why. Read the code - it's as much as important as writing it. Get to know this craft from the core and all those SQL, REST, JWT, BLAH abbreviations will start to make sense as you go on. Have the best of luck!

Link to comment
Share on other sites

Link to post
Share on other sites

@MrVito Not so long ago I began to make up my mind, you see, back in January I learned Python because of the "Data scientist" hype (and easy syntax), then I moved to C because I wanted to understand the low level side of programming (I made this decision upon watching the CS50 course) and really liked it, then I planned to focus on C++ but ended up switching to Java (this is the TL;DR of the last 7 months)

 

3 hours ago, MrVito said:

Have you considered app development, IoT development, Native platform development?

I have, I'd like to learn someday (in this order)

 

- Desktop with .NET (C#)

- Android with Java / Kotlin

- Stuff like computer vision with Python

- C++ in general

 

But I see them as a side thing, I don't want to bite more than I can chew, I want to focus on web for now (mainly Back-end not Full-stack), DevOps also sounds pretty cool but I'm aware that's a long journey

 

3 hours ago, MrVito said:

There's mainly three ecosystems for web development: Microsoft with .NET, Java and PHP

(This is regarding jobs in my area) I'm picking Java since it's popular, .NET doesn't have demand, PHP does have demand so I might learn it after

 

3 hours ago, MrVito said:

Code a few basic apps, get a hang of it, feel the code and most importantly learn the code not the language. Principles, paradigms, design patterns and software architecture skills - that what makes you a Software Engineer.

Thank you, that's a nice advice and I plan to follow this :)

 

3 hours ago, MrVito said:

Don't look at that AWS or Docker jargon, get to know this craft from the core and all those SQL, REST, JWT, BLAH abbreviations will start to make sense as you go on. Have the best of luck!

I agree, I just have been asking for some advice because I want to learn back-end development the right way, not the quickest, not the easiest, but at least a common path to follow (does that make sense?), going without proper guidance just makes my journey a bit longer with unexpected pitfalls :(

 

Thank you again for the input!

Link to comment
Share on other sites

Link to post
Share on other sites

On 8/19/2019 at 3:39 AM, Dat Guy said:

There is quite a huge difference between "no Git" and "no source control" and I think that you know that. Not everyone and their dog has migrated for the worse.

im curious what you think git is a downgrade from. Would you rather have SVN or mercurial? gross.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

37 minutes ago, reniat said:

im curious what you think git is a downgrade from. Would you rather have SVN or mercurial? gross.

Having used all three plus a few others, I'm actually partial to Azure DevOps for source control.

 

On 8/19/2019 at 12:22 PM, Franck said:

AWS is a restful web service (REST)

Amazon Web Services is not "a restful web service". It's a collection of a lot of different offerings, each with their own level of abstraction away from the underlying hardware. My website, for example, runs on Amazon Lightsail, which is part of the overall AWS ecosystem.

On 8/19/2019 at 12:57 PM, MrVito said:

If you want to "quickly learn development just to get that shiny software engineer job just because it pays well" - don't. You really need to like problem solving, be passionate about technology, love challenges, love digging deep, analyzing, creating and making stuff work. If you can't tick most of those boxes then most likely you will not like this profession.

I've been saying that since I first started professionally nearly 15 years ago. I was a hobbyist before then, so I knew I'd enjoy doing this professionally. It's been a hard ride at times, but just like with medicine or nursing, if you're going into it for the money, you're going to burn yourself out fast.

 

Or you'll be one of the ones trying to fast-track to a management position, in which case everyone is worst off.

On 8/19/2019 at 12:22 PM, Franck said:

The easiest way to understand what is a web service is to think is as a simple DLL but that instead of being local on your storage it's running somewhere else. Don't get me wrong, It get more complex than that if you dive deeper but this simple analogy works 100% of the time with my interns new to programing.

Glad to not be one of your interns, since you're not explaining it right.

 

A better analogy for a web service is a phone call: you dial a number, have a conversation, and hang up. The web service is a Remote Procedure Call of some kind, whether it's requesting a web page or information from the National Weather Service. This is much different from a DLL that is "running somewhere else", since there are numerous considerations that your analogy doesn't encompass. The big one being lack of control. A phone call everyone can relate to. Will the other end even pick up? Will they understand your request? Will you understand the response? What if they hang up too soon or you get disconnected? How do you account for all of that and handle it gracefully?

Wife's build: Amethyst - Ryzen 9 3900X, 32GB G.Skill Ripjaws V DDR4-3200, ASUS Prime X570-P, EVGA RTX 3080 FTW3 12GB, Corsair Obsidian 750D, Corsair RM1000 (yellow label)

My build: Mira - Ryzen 7 3700X, 32GB EVGA DDR4-3200, ASUS Prime X470-PRO, EVGA RTX 3070 XC3, beQuiet Dark Base 900, EVGA 1000 G6

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, brandishwar said:

Having used all three plus a few others, I'm actually partial to Azure DevOps for source control.

by azure devlops do you mena TFVC? since i know a lot of people use azure devops with git as the underlying SCM

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to comment
Share on other sites

Link to post
Share on other sites

Just now, reniat said:

by azure devlops do you mena TFVC? since i know a lot of people use azure devops with git as the underlying SCM

Basically what used to be known as TFS.

Wife's build: Amethyst - Ryzen 9 3900X, 32GB G.Skill Ripjaws V DDR4-3200, ASUS Prime X570-P, EVGA RTX 3080 FTW3 12GB, Corsair Obsidian 750D, Corsair RM1000 (yellow label)

My build: Mira - Ryzen 7 3700X, 32GB EVGA DDR4-3200, ASUS Prime X470-PRO, EVGA RTX 3070 XC3, beQuiet Dark Base 900, EVGA 1000 G6

Link to comment
Share on other sites

Link to post
Share on other sites

Both SVN and Mercurial are less annoying to use indeed.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

5 hours ago, Dat Guy said:

Both SVN and Mercurial are less annoying to use indeed.

i agree. Git is a nightmare on a 1,600+ employee team. We haven't tried Mercurial with that much user on the same sources. I think there is some people with local repo used for test and stuff on mercurial but that's it.

 

10 hours ago, brandishwar said:

A better analogy for a web service is a phone call: you dial a number, have a conversation, and hang up. The web service is a Remote Procedure Call of some kind, whether it's requesting a web page or information from the National Weather Service. This is much different from a DLL that is "running somewhere else", since there are numerous considerations that your analogy doesn't encompass. The big one being lack of control. A phone call everyone can relate to. Will the other end even pick up? Will they understand your request? Will you understand the response? What if they hang up too soon or you get disconnected? How do you account for all of that and handle it gracefully?

Will the other even pickup ? Dll can hog max resource where it become unavailable, so same thing.

Will they understand your request ? Dll this is marshalling, so same thing.

Will you understand the response ? This is dll marshalling

What if they hang up too soon or you get disconnected ? This is RPC error in Dll, it stops and dies before an answer so same thing again.

 

And last, WebService can literally be a DLL that run locally.

 

Why i mention this very simple analogy is because the guy has barely 1 year experience in prog. And for the couple dozen of interns i get per year any docs on web service so far there is 0% of them that understood it. They don't seems to teach that in any class at school. Neither did i decades ago so i guess nothing ever change.

 

Link to comment
Share on other sites

Link to post
Share on other sites

14 hours ago, Dat Guy said:

Both SVN and Mercurial are less annoying to use indeed.

 With SVN being less annoying since it doesn't have the complication of it being a distributed system, similar to TFS (now Azure DevOps).

 

8 hours ago, Franck said:

Will the other even pickup ? Dll can hog max resource where it become unavailable, so same thing.

Will they understand your request ? Dll this is marshalling, so same thing.

Will you understand the response ? This is dll marshalling

What if they hang up too soon or you get disconnected ? This is RPC error in Dll, it stops and dies before an answer so same thing again.

 

Oh my God, you're one of those who thinks they know but in actuality doesn't. Remote web services and DLLs are two very, very different things. That you analogize DLLs with a remote web service is troubling in the kindest terms simply because it is wrong. Which makes me wonder whether you actually understand how Dynamic Link Libraries work, or whether you actually understand how web services work. So which is it?

 

A DLL is dynamically loaded by an executable either at startup or some time later. If it "hogs max resources where it becomes unavailable", it stops the calling thread in its tracks or causes the operating system to throw exceptions, which may cause the application to crash if you're not handling it - provided it can be handled gracefully. This isn't in any way similar to the other end of a remote connection not answering the connection attempt, unless you've set your timeout value to "infinite" and the connection attempt isn't outright refused by the other end.

 

If a DLL doesn't understand how you're attempting to call into it, provided you're loading the DLL dynamically at runtime rather than linking to it at compile time, the operating system throws an exception. If you fail to handle this exception, it crashes the application. And you don't have any choice on that result. Calling a remote web service isn't nearly as critical. Yes you could still end up with unhandled exceptions if you don't parse the response properly or get an unexpected response and don't handle that properly. But it's quite different from messing up how a function is called. Since the function is expecting the memory pointed to by the stack pointer to be in a particular layout. Give it a stack with the wrong layout and... problems arise. You'll either get an exception you need to handle, or the operating system will terminate your application.

 

Marshaling is nowhere near the same as making a remote procedure call. Especially since marshaling is about managed DLLs calling into unmanaged DLLs. Don't set up the marshaling correctly and you get exceptions - again, that whole stack layout thing - that, once corrected during development, typically don't become problems once the application is deployed in a production environment unless something seriously wrong happens to the system it's running on. Remote procedure calls, however, have multiple points of failure outside the system attempting to make the call, points of failure you can't exactly correct during development, only account for.

 

DLLs also don't just "stop and die" since they aren't separate processes, but belong to a particular process on the system. And that owner process can "stop and die" - or "crash" as it's generally known, or "seg fault" for you Linux guys.

 

Again, a phone call is the better analogy for describing web services, since it also encompasses all the considerations that need to be made in making a web service, such as the points of failure. The phone call is also the analogy that's long been used to describe network communication. I've also heard it analogized to the postal service. In all the years I've been doing this, I have never heard anything close to your analogy. So that your analogy is foreign to a seasoned programmer should tell you that you're not using a good analogy and, as a result, may not be explaining things properly to your interns.

 

8 hours ago, Franck said:

And last, WebService can literally be a DLL that run locally

If you don't connect to it via an HTTP(S) connection to send requests and receive responses, it isn't a web service. Period.

Wife's build: Amethyst - Ryzen 9 3900X, 32GB G.Skill Ripjaws V DDR4-3200, ASUS Prime X570-P, EVGA RTX 3080 FTW3 12GB, Corsair Obsidian 750D, Corsair RM1000 (yellow label)

My build: Mira - Ryzen 7 3700X, 32GB EVGA DDR4-3200, ASUS Prime X470-PRO, EVGA RTX 3070 XC3, beQuiet Dark Base 900, EVGA 1000 G6

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, brandishwar said:

If you don't connect to it via an HTTP(S) connection to send requests and receive responses, it isn't a web service. Period.

Well i literally have couple dozen DLL that are web services that you run from batch command at it runs and you can connect through http:\\localhost\Myservice\.

I have hosted similar web services on Azure (beta), IIS 6.0 and up and NGIX (1.2 if i recall correctly).

I am not sure i understand your point of view but i think everyone has their opinion.

 

All i know is i have been dealing with these kind of web services since 2003-2004 so i only base myself on the recent "web service" i have seen (C++, Java and C#)

 

I also do believe (haven't touch it in a long while) that WCF Web Services are only DLL nowadays.

Link to comment
Share on other sites

Link to post
Share on other sites

On 8/19/2019 at 7:22 PM, Franck said:

Javascript run only on the client side but some code i would consider it back end

node.js? It's at this point fully capable of front and backend.

Use the quote function when answering! Mark people directly if you want an answer from them!

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, bowrilla said:

node.js? It's at this point fully capable of front and backend.

Technically the javascript only run as client end of the story BUT you can as an example create a background service that runs and use node.js to do background code for an application that communicate with that service. Not something efficient but well in the realm of possible. You could be a team that just work on that background service that does lots of stuff and client could buy your product and use it inside their Wweb/Mobile/Desktop app.

Link to comment
Share on other sites

Link to post
Share on other sites

57 minutes ago, Franck said:

Technically the javascript only run as client end of the story BUT you can as an example create a background service that runs and use node.js to do background code for an application that communicate with that service. Not something efficient but well in the realm of possible. You could be a team that just work on that background service that does lots of stuff and client could buy your product and use it inside their Wweb/Mobile/Desktop app.

What exactly do you think are the interpreters of PHP, Ruby and Python do? There is no fundamental difference between node.js and those other interpreters. In fact, node.js can run a lot faster in some situations than those other. I really have no idea what you're aiming at here. 

 

Several huge services rely on node.js. It is fully capable of backend development, that's exactly what it was made for. If you want you can also develop cross platform standalone software with it. There are several CMS frameworks available as well. So what's your point?

Use the quote function when answering! Mark people directly if you want an answer from them!

Link to comment
Share on other sites

Link to post
Share on other sites

33 minutes ago, bowrilla said:

What exactly do you think are the interpreters of PHP, Ruby and Python do? There is no fundamental difference between node.js and those other interpreters. In fact, node.js can run a lot faster in some situations than those other. I really have no idea what you're aiming at here. 

 

Several huge services rely on node.js. It is fully capable of backend development, that's exactly what it was made for. If you want you can also develop cross platform standalone software with it. There are several CMS frameworks available as well. So what's your point?

I was in fact agreeing that i can be used as backend code and speed wise i was simply comparing to the backend code options you can have, it is not even close to compete with most common languages in backend (straight C++ as an example). Node.js doesn't directly communicate out the client but the C++ interpreter does indeed have the socket communication. I got a handful of projects running this way that are maybe already converted to pure c++ (for speed reasons only otherwise they would have stayed in Node.js as i can have nearly anyone programing it while c++ is very difficult with zero experience).

 

For frontend i know Netflix use it for their interface as it's blazing fast and easy to maintain/develop.

 

For backend i only know that Paypal not long ago used it for some basic validation on server side and we got an internal note from affiliate about it.

Link to comment
Share on other sites

Link to post
Share on other sites

41 minutes ago, Franck said:

I was in fact agreeing that i can be used as backend code and speed wise i was simply comparing to the backend code options you can have, it is not even close to compete with most common languages in backend (straight C++ as an example). Node.js doesn't directly communicate out the client but the C++ interpreter does indeed have the socket communication. I got a handful of projects running this way that are maybe already converted to pure c++ (for speed reasons only otherwise they would have stayed in Node.js as i can have nearly anyone programing it while c++ is very difficult with zero experience).

 

For frontend i know Netflix use it for their interface as it's blazing fast and easy to maintain/develop.

 

For backend i only know that Paypal not long ago used it for some basic validation on server side and we got an internal note from affiliate about it.

Well, to me it sounded very dismissive, therefore my response. Nobody claimed node.js to be as fast as C++ or C. An interpreted language will never be as fast as native code. But that's just as true for node.js as it is for Python, Ruby, PHP and even Java.

 

I wonder what your definition of backend- and frontend development is because ... node.js is pure backend as it runs on the server. Everyone using node.js is using it for (some part) of their backend. Yes, Netflix uses node.js for interface generation but that's still done on their servers and it's part of their backend structure. The client only builds upon the building blocks it's being served. 

 

Getting back to the original topic:

On 8/17/2019 at 2:23 AM, Hi P said:

I want to focus on Back-end Development and upon doing some research for jobs in my country I gathered the following info (already weeded out the options)

 

From most to least mentioned (they are in order, e.g REST is the most mentioned and Linux the least)

  Reveal hidden contents

Most common

REST (and a bit of SOAP)
MySQL
Git and Github

 

Common

Java
Scrum
JavaScript
PHP
AWS
Spring

Laravel

 

Uncommon
Docker
TDD Test Unit
Google Cloud

.NET (C#)

Linux servers

 

I have this info, but its still unclear to me which order would make the most sense for me to learn, could someone please help me out? :)

 

My gut tells me:

Java > Spring > REST > MySQL > AWS > Git ?

 

1) Which order would you recommend me? (I wanna be clear, I would learn Java before PHP as I found more Java jobs)

2) Should I learn just enough Front-end before even beginning with Back-end? (Not going Full-stack, but Front-end knowledge sounds helpful)

 

Thank you very much :D

 

You're really taking this from the very wrong angle mixing development concepts, application architectures, source code versioning, hosting and deployment styles, databases, programming languages and frameworks.

 

Git is source code versioning and probably the most common choice. MySQL is an SQL database management system and only one amongst many being based on SQL. The choice of your database management system depends on your use case mostly. AWS is a cloud hoster used for deployment. REST is a paradigm describing a certain way your backend is being setup. It usually (in a web service environment) builds around the HTML request verbs and is stateless. Spring is a web framework for Java.

 

Personally I don't really see the point of using Java as your backend language but this is mainly me not liking Java at all. 

 

You can't really learn a language for web development without some knowledge of a database management system (well you can but at that point the whole concept of a backend is missing the point some how since you can't serve data from a databasse). 

 

If you don't want to do frontend you don't need to but indeed some knowledge can be helpful. On the other hand, if you want to do REST APIs only then you don't care for the frontend.

 

Choosing a language purely because of job offerings you're seeing right now is not a very clever approach. Choose your language because you like it and learn it. The industry sometimes moves pretty quickly. A few years ago Ruby was heavily hyped and Ruby on Rails was a huge thing. Today Ruby is pretty much out again and people don't really care that much.

 

Personally I'd say there are only 3 real options here for backend development: PHP (due to legacy), node.js and in enterprise scenarios Java. There's a careful 4th language that's mostly used in education and scholar environments: Python. Choose one, learn it, become good or even great at it. Don't try to master all 4. While possible it will take quite some time and if you're just starting out then just focus on one. You wouldn't try to learn the piano, guitar, drums and trumpet at the same time, would you?

Use the quote function when answering! Mark people directly if you want an answer from them!

Link to comment
Share on other sites

Link to post
Share on other sites

19 hours ago, Franck said:

Well i literally have couple dozen DLL that are web services that you run from batch command at it runs and you can connect through http:\\localhost\Myservice\.

WHICH IS A WEB SERVICE SINCE YOU CONNECT TO IT VIA HTTP!!!! A DLL unto itself doesn't do anything. You can't run it on its own. It has to be loaded by another process for its functionality to be used.

 

19 hours ago, Franck said:

I also do believe (haven't touch it in a long while) that WCF Web Services are only DLL nowadays.

Yes, they are .NET packages. But they're served through IIS to provide the HTTP(S) interface to interact with the service. WCF just provides for a nice framework to abstract all the involved details so you don't really have to think about it.

Wife's build: Amethyst - Ryzen 9 3900X, 32GB G.Skill Ripjaws V DDR4-3200, ASUS Prime X570-P, EVGA RTX 3080 FTW3 12GB, Corsair Obsidian 750D, Corsair RM1000 (yellow label)

My build: Mira - Ryzen 7 3700X, 32GB EVGA DDR4-3200, ASUS Prime X470-PRO, EVGA RTX 3070 XC3, beQuiet Dark Base 900, EVGA 1000 G6

Link to comment
Share on other sites

Link to post
Share on other sites

Just learn the hippest, newest most high-level thing, and use that for every use case you can force into it. The IT business have been slowly turned to a cesspool of incompetence, and you'll earn the best buck by cutting the most corners.  Most oftenly, this involves using web technology for literally everything, despite how well it's fitted for it.

 

ASP.NET (or PHP + some hipster frameworks), throw in a bunch of crappy .js-libraries and you can probably do everything from medicine-technical equipment to defense contractor work.

 

If you want to be competent for real, know what tools are best for the specific job, and know how to learn those tool effectively. Additionally, learn C/C++, Python (really good for doing quick prototypes!) and C# w/ WPF.  It will be much harder for you to find work in these areas though, as 90% of the market is saturated with low-skill, overhyped web jobs.

 

Also, stay the hell away from Java, there is no reason to encourage its existence anymore than we already do.

 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×