¿Cómo se decide entre la programación de back-end y front-end?

No tienes que hacer esa elección. Puedes hacer las dos cosas.

Si no tiene experiencia en programación, comience con el front end. Obtenga Twitter Bootstrap y profundice en html, CSS, Javascript, LESS / SASS. Especialmente pasar tiempo con CSS y MENOS. Una vez que comprenda CSS, profundice en MENOS. Si MENOS se siente bien, profundiza en Javascript / JQuery. Si esos se sienten bien. Puede que también te guste el trabajo de backend.

Para el trabajo de back-end, instale MongoDB y siga los diversos tutoriales. Luego, dado que hizo su trabajo de Javascript y lo comprende, instale node.js y haga que la plomería funcione entre MongoDB, node.js y una página de arranque. Haz un juguete divertido de algún tipo. Tal vez una máquina de insulto automatizada que acepte respuestas y las almacene para usarlas como futuros insultos. Tal vez podría tener un sistema de puntuación.

Para cuando haya terminado con todo lo que tendrá, pasará entre 3 y 18 meses en un trabajo de desarrollo muy productivo. Podrás agregar valor a un equipo. No importa qué sombrero falta.

Estudie todo lo que pueda sobre programación orientada a objetos. Es posible hacer mucho trabajo en Javascript sin él, pero tendrá más poder con él.

No he conocido a una persona que tenga el lujo de decidir. Tal vez los niños de hoy en día tengan más opciones, pero en general, lo contratan como programador para implementar soluciones. Tú haces el trabajo que te asignan. Parte delantera, parte trasera. Devanadora lateral. Aprende las tecnologías que necesita usar.

Un programador, que se considera un programador “back-end” o un programador “frontend” en comparación con un “programador con habilidades de back-end”, es despedido primero. Si está buscando tecnologías para aprender, intente aprender todo el conjunto

Si eres bueno en el desarrollo front-end y te encanta, trabaja en ello. El mismo concepto se aplica para el desarrollo de back-end también. Si eres bueno en ambos, eso es increíble.
Un criterio importante en el que debe pensar es en lo que quiere hacer. Por ejemplo, estoy trabajando como desarrollador de back-end durante bastante tiempo pero estoy aprendiendo a diseñar cosas hoy en día porque quiero aprender a diseñar cosas como photoshop, ilustrador, tipografía, etc.