Hoja de ruta de un desarrollador de Java
Un amigo mío se preguntaba por qué los desarrolladores siempre están tan contentos. La respuesta que dio fue simple y sorprendente: hacen lo que les gusta y ganan mucho dinero. Bienvenido al mundo de los desarrolladores de software.
Salario del desarrollador de software
Me gustaría hablarles sobre los salarios de los desarrolladores. Cómo está la tierra con los salarios, dónde se debe ir a trabajar y dónde no. Si no es un desarrollador y trata de descifrarlo por su cuenta, puede obtener datos bastante controvertidos. El punto principal es que el principal factor que influye en el salario de un desarrollador no es la calificación, sino el lugar de empleo. A veces, dado el mismo nivel de calificación, la diferencia entre un buen y un mal lugar de trabajo puede ser de 2 a 10 veces (!) Cada momento dado de tiempo su calificación es constante. No puede convertirse en el doble de calificado en un mes y recibir el doble de pago. Pero puedes cambiar de lugar de trabajo en un mes y obtener el doble de salario. Una vez en el flujo de dos meses, mi salario se multiplicó por tres (!) – Experiencia inolvidable. Entonces, averigüemos qué lugar es mejor.- Si el negocio principal de una empresa es el desarrollo de software
- Si la empresa está orientada al mercado global o local.
- Dónde está ubicada la oficina principal: país desarrollado o país en desarrollo
Números específicos
Dado que los salarios son diferentes en diferentes partes del mundo, propongo tomar el salario de un desarrollador senior de Java con 5 años de experiencia como punto de partida y llamarlo "máximo de 5 años". Todas las cifras a continuación se darán como un porcentaje de esta cantidad. Aquí hay algunos ejemplos de salarios de “máximo de 5 años” en diferentes ciudades del mundo:


Lo que puedes lograr a menos que hagas cosas estúpidas
Si comienzas a trabajar en tu autoeducación en programación ahora mismo, tu salario puede verse así:
Plan
0-3 meses (Estudiante)
Sabes muy poco de programación. Es posible que lo hayas estudiado en la escuela o en una universidad en el nivel básico. Lo que tienes que hacer es aprender a programar y aprender Java. Tu objetivo es conseguir un trabajo como Java Junior Developer en una empresa de nivel 3 o superior. Durante los primeros tres meses del plan no obtendrás nada, porque solo estás aprendiendo a programar. Pero cuanto antes empieces, mejor. El mejor momento es AHORA. En el futuro, cuando tenga una familia y muchos préstamos, será mucho más difícil volver a calificar. Para corregir tu error tendrás que apartar dinero para pagar al menos un año de vida normal. No cometas errores tontos.3-15 meses (desarrollador Java Junior)
Ya trabajas como desarrollador de software y tu experiencia crece día a día. No te relajes. Tienes mucho que hacer antes de descansar sobre los remos. Lo que debe hacer es estudiar las tecnologías que necesitará como desarrollador intermedio. ¿Qué son éstos? El mundo está constantemente cambiando. Te cargaré de consejos y la vida lo cambiará todo. Encuentre algunas vacantes en la web y vea lo que necesita para postularse. Asegúrese de leer un libro de Bruce Eckel “Thinking in Java”. Tu objetivo en el primer año de trabajo como Java Junior Developer es alcanzar el nivel de Java Middle Developer. Nadie dice que sería fácil, pero eso es posible para una persona orientada a objetivos. Aumentará su salario en un instante hasta el 40% del "máximo de 5 años" ($50K para SF y Londres, $6K para Bangalore).Programación de 2 años (Java Middle Developer, nivel 1)
Hiciste un buen trabajo el año pasado y ahora eres un desarrollador intermedio de Java. Puedes vivir bastante bien ganando el 50% del salario de Senior Java Developer. Se le asignan algunas tareas serias en el trabajo y su experiencia crece significativamente. Alcanzarás el nivel de Java Senior Developer en dos o tres años. No hay necesidad de apresurarse. De todos modos, no obtendrá grandes ganancias en el salario. Lo que debe hacer es aprender patrones de diseño, leer: Código completo de McConnell. Perfeccione la calidad de su código y las habilidades del equipo. Crea una regla de leer 1 libro sobre programación de computadoras cada mes. Entonces, en 4 años serás 50 libros más inteligente que todos los demás. No lo pospongas: no tendrás mayor cantidad de tiempo libre, además, lo más probable es que formes una familia, o si la tienes, se hará más grande. Tu metaes elegir algunas tecnologías en las que especializarse como desarrollador senior de Java. No puedes aprenderlos todos, ¿sabes? Y siempre es una buena decisión convertirse en gurú en una sola especialización.
Programación anual en 3D (Java Middle Developer, nivel 2)
Ahora eres un desarrollador medio experimentado y estás pensando en convertirte en desarrollador senior. Es agradable a la par que prestigioso. Su salario excede el 60% del "máximo de 5 años" ($ 10K en Bangalore, $ 25K en Kiev, $ 40K en Berlín, $ 80K en Nueva York). A partir de este momento la demanda de profesionales como tú sube la oferta. Siempre podrás encontrar trabajo en un par de días y casi nunca ganarás menos de lo que ganas ahora. Eso, claro, si no haces ninguna estupidez. Lo que tienes que hacer essiga estudiando las tecnologías que eligió. Trabaja mejor. No por el bien de su empleador, por el suyo propio. Solicite participar en proyectos que involucren tecnologías prometedoras (como BigData, en el momento en que se escribe este artículo). Pasarás 8 horas al día en la oficina de todos modos, entonces, ¿por qué no obtener un poco más de dinero y, lo que es mucho más importante, la experiencia más valiosa que necesitarás en el futuro? Su objetivo es encontrar un nuevo trabajo. Siempre se encuentra un buen equipo. Te enfrentarás a nuevos proyectos y tecnologías. No necesitas enraizarte en tu silla. Si aún trabajas en una empresa de tercer nivel, piensa en incorporarte a una de cuarto nivel.Programación de 5.º año (desarrollador sénior de Java, nivel 1)
Ahora eres un desarrollador sénior. Tal vez, no lo merecías, y lo sientes. Aún así, mis felicitaciones. No importa si eres digno de tu puesto ahora, lo único que importa es que seas digno de él en el futuro. Creo que estarás de acuerdo en que es mejor conseguir un buen trabajo y después crecer hasta el nivel requerido y viceversa. Espero que no hayas olvidado mi consejo de leer un libro al mes. Cualquier estudiante envidiará tus conocimientos y habilidades ahora. Para ser más específicos, estará orando por ellos. Solo piénselo: tiene ganancias serias, cerca del 90% del salario "máximo de 5 años". Probablemente todavía eres joven. El mundo está a tus pies. Lo que tienes que hacer espara volver a evaluar las tecnologías que ha elegido. Tal vez, usted necesita cambiar la especialización. El mundo ha cambiado, las tecnologías han cambiado y has adquirido bastante conocimiento en los últimos dos años. Lo que elijas ahora se convertirá en el titular de los próximos años para ti. Es hora de elegir sus tecnologías favoritas. Su objetivo es elegir su dirección de crecimiento. Son numerosos, nadie puede nombrarlos a todos, pero su elección debe hacerse ahora mismo. Si haces un pequeño cambio hoy, obtendrás uno grande en el futuro.Programación de sexto año (desarrollador sénior de Java, nivel 2)
Has decidido tu futuro y estás trabajando para que tu sueño se haga realidad. Una dirección elegida correctamente junto con el deseo de seguir adelante, y el resultado no tardará mucho. Felicidades. Estoy feliz de ver que hay una persona más que logró su sueño. Hay una verdad profunda. Las personas a menudo sobrestiman lo que pueden lograr en un año y subestiman lo que pueden hacer en cinco. Mira cinco años atrás. Es tan. Lo que debes hacer es evitar decisiones imprudentes y no ser perezoso. Su objetivo es elegir la dirección y avanzar. ¿O pensaste que termina aquí? Recuerda tu graduación. No es el final, es solo el comienzo.Tu futura especialización

Carrera de desarrollador Java
La carrera de desarrollador es diferente a cualquier otra. No necesita convertirse en gerente para ganar un buen dinero. A menudo sucede que un desarrollador senior gana más que su gerente-jefe. Cuanta más experiencia obtenga, más sólidas serán sus relaciones laborales con su jefe, que pasarán de ser "jefe-subordinado" a "estrella y gerente".
Desarrollador de doscientos años
Si lo que más le gusta es programar, este es su camino: desarrollador sénior, luego desarrollador líder tecnológico y arquitecto. De esta manera, puede trabajar como desarrollador durante 50 años y más. En la mayoría de los casos, los salarios de los desarrolladores sénior y los desarrolladores líderes tecnológicos superan los de sus gerentes. Así que obtenga el valor de su dinero.Gerente. Tienes suerte de no ser como los demás.
Te pasaste al enemigo. Es una broma. Si descubre grandes habilidades de organización, entonces su camino es: Líder de equipo y luego Gerente de proyecto. Le dará la oportunidad de convertirse en jefe de departamento y abrir su propio negocio. Eso es lo que quieres, ¿no?El hogar es donde está el corazón

Ver Nápoles y no morir.
Aún no tienes familia y te encanta viajar . oDesk es tu todo. Encuentre un cliente, acuerde una tarifa de $ 20- $ 50 por hora, lleve una computadora portátil y listo. Tu salario será suficiente para vivir en cualquier parte del mundo. ¿Por qué no empezar a hacer realidad tus sueños ahora mismo?No quiero programar, soy una chica..
Si eres una niña , es posible que debas tomar una licencia por maternidad . Suena a broma sexista, y lo es. Aún así, hay mucho sentido común en ello. Lo más probable es que tomando una licencia de maternidad puedas obtener mucho dinero de la licencia de maternidad (en países con alta protección social). Hay empresas que no pagan nada y las hay que pagan bien. Una de mis alumnas recibió un tercio del salario anual en una licencia por maternidad. Y esto sucedió en la primavera de 2009, durante los despidos laborales. Y en un año y medio puede que vuelvas, siendo al menos Desarrollador Medio.Nivel 6

1 Elly. Visibilidad de objetos. nulo
- ¡Hola, amigo! - ¡Hola, Elly! ¿Me dirás algo interesante hoy? - Hoy les hablaré sobre el tiempo de vida de un objeto . Después de que se crea un objeto, existe (vive) hasta que al menos una variable almacena su dirección (hay al menos una referencia de objeto). Si ya no hay referencias, el objeto muere. Ejemplos:
2 Profesor, Recolección de basura

3 Elly, finaliza
- ¡Hola de nuevo! Ahora te daré una breve introducción al método finalize() . La máquina virtual Java llama a este método en el objeto antes de que se destruya el objeto. De hecho, este método es opuesto al constructor. En este método es posible liberar los recursos utilizados por un objeto. - La clase Object tiene este método, por lo tanto, cada clase lo tiene ( todas las clases en Java se consideran heredadas de la clase Object y contienen una copia de sus métodos ). Si escribe en su clase el método finalize() y se llamará antes de que se destruyan los objetos de esta clase. Ejemplo:
4 Elly, duración del objeto
- También quiero contarles un par de cosas interesantes sobre la vida útil del objeto. En Java, es muy difícil perder el objeto por accidente; si tiene una referencia de objeto, significa que el objeto seguramente está vivo. - Dentro de una referencia de objeto almacena un número – dirección de este objeto en la memoria. No puede cambiar ese número, aumentarlo o disminuirlo. No puede crear una referencia cuando solo tiene una dirección en la memoria. Solo puede crear un nuevo objeto y asignar su referencia a una variable. Esta es la única manera de obtener una nueva referencia. - Veo. Es decir, si configuro en nulo (borro) todas las referencias de objetos, ¿nunca obtendré la referencia de objeto ni accederé a ella? - Sí. Pero a menudo ocurre lo contrario: hay demasiados objetos vivos sin usar.La mayoría de los programas crean docenas de objetos y los almacenan en diferentes listas en tiempo de ejecución, pero nunca limpian esas listas. - La mayoría de los programadores etiquetan los objetos no deseados como "eliminados", eso es todo. A nadie le importa que los eliminen de las listas. Por lo tanto, los programas grandes de Java tienden a hincharse: cada vez más objetos sin usar permanecen vivos en la memoria. - Eso es todo. En el futuro, siempre llamaré su atención sobre los objetos no utilizados y su eliminación adecuada. - OK, gracias. Has aclarado un par de cosas sobre las referencias.5 Diego, tareas de por vida del objeto
- ¡Hola, amigo! Aquí hay un par de tareas para ti:Tareas | |
---|---|
1 | 1. Método finalize() de la clase Cat Escriba un método protected void finalize() throws Throwable en la clase Cat |
3 | 2. Clases Gato y Perro y método finalize() para cada clase En cada clase Gato y Perro escribe un método finalize() , que muestra en pantalla un mensaje de que el objeto ha sido destruido. |
3 | 3. 50 000 objetos de la clase Gato y 50 000 objetos de la clase Perro Cree en un bucle 50 000 objetos de la clase Gato y 50 000 objetos de la clase Perro. (La máquina virtual Java destruirá los objetos no utilizados, por lo que se llamará al método finalize() al menos una vez). |
4 | 4. Contador de gatos En el constructor de la clase Cat [public Cat()], aumente el contador de gatos (variable estática catCount de la misma clase) en 1. En el método finalize() disminuya en 1. |
6 Elly, Clases y métodos estáticos
- Aquí hay un nuevo tema interesante. Quiero contarles acerca de las variables y métodos estáticos. - Oh, ya escuché sobre las variables estáticas. También sobre métodos estáticos, supongo. Pero me gustaría tener más detalles. - Al declarar variables en una clase, especificamos si estas variables se crean en una única instancia compartida o si es necesario crear sus copias para cada objeto. De forma predeterminada, se crea una nueva copia de la variable de clase para cada objeto de esta clase. Así es como se ve:



7 Risha, Clases y métodos estáticos
- Además de los métodos estáticos, también hay clases estáticas . Consideraremos este caso más adelante, solo les mostraré un ejemplo:
8 Diego, Tareas sobre el método estático
- ¡Hola, amigo! Aquí hay algunas tareas interesantes sobre métodos estáticos:Tareas | |
1 | 1. Clase Cat y variable estática catCount Escriba una variable estática int catCount en la clase Cat. Cree un constructor [ public Cat() ], en el que la variable dada debe aumentarse en 1. |
2 | 2. Métodos estáticos: int getCatCount() y setCatCount(int) Agregue dos métodos estáticos a la clase Cat: int getCatCount( ) y setCatCount(int) con los que puede obtener/cambiar el número de gatos (la variable catCount) |
3 | 3. Class Util Implementa un método estático double getDistance(x1, y1, x2, y2) . Debe calcular la distancia entre puntos. Utilice el método double Math.sqrt(doble a) para calcular la raíz cuadrada del parámetro pasado |
4 | 4. Class ConsoleReader Escriba una clase ConsoleReader, que tendrá 4 métodos estáticos: - String readString() para leer cadenas desde el teclado - int readInt() para leer números desde el teclado - double readDouble() para leer números fraccionarios desde el teclado - void readLn () para esperar a presionar enter [use readString()] |
5 | 5. Clase StringHelper Escriba una clase StringHelper, que tendrá 2 métodos estáticos: - Multiplicación de cadenas (String s, int count) debe devolver las cadenas repetidas veces. - Cadena multiplicar (String s) debe devolver la cadena s repetida 5 veces. Ejemplo: Amigo → AmigoAmigoAmigoAmigoAmigo |
9 Profesor, alcance estático del objeto y vida útil

10 julio
- ¡Hola, amigo! Hiciste un gran trabajo hoy. Por eso no puedo darte más. Vamos, siéntense, comienza el espectáculo:11 capitanas ardillas
- ¡Hola, soldado! - ¡Buenos días señor! - Tengo una noticia increíble para ti. Aquí tienes una comprobación rápida para reforzar tus habilidades. Hágalo todos los días y mejorará sus habilidades rápidamente. Las tareas están especialmente diseñadas para hacer en Intellij IDEA.Tareas adicionales para hacer en Intellij Idea | |
---|---|
1 | Clase Cat y variable estática catCount Escribe una variable estática public int catCount en la clase Cat. Cree un constructor [Cat público ()]. Deje que la variable estática catCount aumente en 1 cada vez que cree un gato (un nuevo objeto Gato). Cree 10 objetos Cat y muestre el valor de la variable catCount . |
2 | 2. Gatos estáticos
Para crear la línea de código de uso variable cats : public static ArrayList<Cat> cats = new ArrayList<Cat>(); |
3 | 3. Mueva un modificador estático Mueva un modificador estático para que el código se compile. |
4 | 4. Número mínimo de palabras clave estáticas Agregue el número mínimo de palabras clave estáticas para que el código se compile y el programa se complete con éxito. |
5 | 5. ¿Alguna idea nueva? Pensemos...
|
6 | 6. KissMyShinyMetalAss Escribe una clase llamada KissMyShinyMetalAss. Cree un objeto de esta clase, luego muéstrelo en la pantalla. |
7 | 7. Nombre de tres variables estáticas Escriba 3 variables estáticas públicas: String Solution.name , String Cat.name , String Dog.name |
GO TO FULL VERSION