Ver la versión completa : Java Ayuda con problemilla básico de Arrays JAVA (SPOILER: Soy muy malo)
selecter25
11/01/2022, 16:56
Hola pamiques, estoy sacando DAM a distancia en mis ratos libres y me he atascado en un problemilla con arrays en JAVA.
Básicamente necesito codificar un texto en cifrado Cesar (codificado por desplazamiento de caracteres) y luego volverlo a decodificar. La parte del codificado (aunque seguramente con código muy rudimentario) va bien, he solventado el posible OutOfBounds tirando del resto y de la función length.
Scanner sc= new Scanner(System.in);
String lower = "abcdefghijklmnopqrstuvwxyz ";
String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
String text1, text2, text3;
int code;
text2 = "";
text3 = "";
System.out.println("Ingresa la frase a codificar");
text1 = sc.nextLine();
do{
System.out.print("Ingresa el número de clave para codificar [0-26]: ");
code = sc.nextInt();
}while(code<0 || code>26);
for (int i = 0; i < text1.length(); i++) {
for (int j = 0; j < lower.length(); j++) {
if (text1.charAt(i) == lower.charAt(j)) {
if (j + code >= lower.length()) {
text2 += lower.charAt((j + code) % lower.length());
} else {
text2 += lower.charAt(j + code);
}
}else if (text1.charAt(i) == upper.charAt(j)) {
if (j + code >= upper.length()) {
text2 += upper.charAt((j + code) % upper.length());
} else {
text2 += upper.charAt(j + code);
}
}
}
}
System.out.println(text2);
Sé (o eso he visto por ahí) que hay formas mejores y más sencillas de hacerlo, pero el profesor exige que se no se emplee nada que él no haya utilizado o explicado (ejem) en clase (que vienen a ser métodos de la clase String). El problema viene al hacer la inversa, al recorrer el array en sentido negativo, no sé cómo evitar el OutOfBounds (y continuar al final del array) cuando los índices sobrepasan la primera posición. Tengo esto hecho para la decodificación, pero evidentemente no funciona cuando j<code.
//DECODIFICAR
do{
System.out.print("Ingresa el número de clave para decodificar [0-26]: ");
code = sc.nextInt();
}while(code<0 || code>26);
for (int i = 0; i < text2.length(); i++) {
for (int j = 0; j < lower.length(); j++) {
if (text2.charAt(i) == lower.charAt(j)) {
//ETO NO VALE if (j - code >= lower.length()) {
//ETO TAMPOCO text3 += lower.charAt((j - code) % lower.length());
} else {
text3 += lower.charAt(j - code);
}
}else if (text2.charAt(i) == upper.charAt(j)) {
//ETO NO VALE if (j - code >= upper.length()) {
//ETO TAMPOCO text3 += upper.charAt(upper.length()- code);
} else {
text3 += upper.charAt(j - code);
}
}
}
}
System.out.println(text3);
Jrasias por halludar ha heste provre nub, mis dies.
A ver, en una lectura super rápida, veo que tu problema se debe a que cuando tienes "j + code", usas correctamente el módulo para evitar que se salga de tu rango [0..lower.length].
Sin embargo, cuando tienes "j - code" no puedes evitar que en ocasiones te salga un valor negativo, ya que puede pasar que code > j.
La solución fácil es que, dado que j siempre 0 <= j <= lower.length, es que
int valor = j - code;
if (valor < 0)
valor += lower.length(); //Esto te devuelve dentro de tu ventana de valores
Ten en cuenta lo dicho, j nunca será > que lower.length(), así que compararlo con >= no sirve. Y el módulo de una división negativa devuelve un valor negativo, y te dará el out of bounds.
Seguramente hay alguna forma más elegante de hacerlo, pero por mi experiencia con mapas cíclicos de tiles, esta es tu solución más simple.
-----Actualizado-----
Poniéndotelo más fácil, el código que deberías usar podría ser:
for (int i = 0; i < text2.length(); i++) {
for (int j = 0; j < lower.length(); j++) {
if (text2.charAt(i) == lower.charAt(j)) {
if (j - code < 0) {
text3 += lower.charAt(j - code + lower.length());
} else {
text3 += lower.charAt(j - code);
}
}else if (text2.charAt(i) == upper.charAt(j)) {
if (j - code < 0) {
text3 += upper.charAt(j - code + upper.length());
} else {
text3 += upper.charAt(j - code);
}
}
}
}
selecter25
11/01/2022, 17:37
Qué velocidad Drumpi! Tiene todo el sentido del mundo, en llegar a casa lo acabo, mil millones de gracias.
Aqui tienes el if para trabajar con los chars `c` de la cadena, para el código `cod`. Juega con que los chars ya son números en ascii, donde a=65 y A=97
if (c < 65 || c > 122 || (c > 90 && c < 97)) { // Not rotable
return c;
} else {
char target = c + cod;
if (c > 90) { // Uppercase
return target > 122 ? 97 + (target - 122): target;
} else { // Lowercase
return target > 90 ? 65 + (target - 90): target;
}
}
Itera por la cadena como quieras, yo soy un chico moderno y uso streams :D
String str = "patatas";
int cod = 20;
String result = str.chars().map(c -> {
if (c < 65 || c > 122 || (c > 90 && c < 97)) {
return c;
} else {
char target = c + cod;
if (c > 90) {
return target > 122 ? 97 + (target - 122): target;
} else {
return target > 90 ? 65 + (target - 90): target;
}
}
}).collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append);
System.out.println(result);
No hay de qué :D
De todas formas, por el bien de tu formación, piensa si la solución que te doy es la correcta o si existe alguna otra más eficiente o elegante, ahora que conoces la raíz del problema ;)
Aqui tienes el if para trabajar con los chars `c` de la cadena, para el código `cod`. Juega con que los chars ya son números en ascii, donde a=65 y A=97
if (c < 65 || c > 122 || (c > 90 && c < 97)) { // Not rotable
return c;
} else {
char target = c + cod;
if (c > 90) { // Uppercase
return target > 122 ? 97 + (target - 122): target;
} else { // Lowercase
return target > 90 ? 65 + (target - 90): target;
}
}
Itera por la cadena como quieras, yo soy un chico moderno y uso streams :D
String str = "patatas";
int cod = 20;
String result = str.chars().map(c -> {
if (c < 65 || c > 122 || (c > 90 && c < 97)) {
return c;
} else {
char target = c + cod;
if (c > 90) {
return target > 122 ? 97 + (target - 122): target;
} else {
return target > 90 ? 65 + (target - 90): target;
}
}
}).collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append);
System.out.println(result);
Acabo de leer lo de no usar cosas raras, no cambia mucho.
char rotate(char c, int cod) {
if (c < 65 || c > 122 || (c > 90 && c < 97)) { // Not rotable
return c;
} else {
char target = c + cod;
if (c > 90) { // Uppercase
return target > 122 ? 97 + (target - 122): target;
} else { // Lowercase
return target > 90 ? 65 + (target - 90): target;
}
}
}
String input = "patatas";
int code = 1;
String output = "";
for (int i = 0; i < input.length(); i++) {
output += rotate(input.charAt(i), code);
}
selecter25
11/01/2022, 18:43
Meteré el arreglo que ha hecho Drumpi a mi cutrecódigo, que va perfecto y da el pego, y el de pakoito me lo quedo para disfrute personal (me va a llevar un rato entenderlo), es muy parecido a soluciones que encontré por la red.
El profesor sigue una metodología que roza el absurdo. Por cada elemento detectado en el código que no aparezca en sus apuntes, resta 0.1 a la práctica.
Gracias a los 2!
El profesor sigue una metodología que roza el absurdo. Por cada elemento detectado en el código que no aparezca en sus apuntes, resta 0.1 a la práctica.
WTF!?!? Si programar es buscar soluciones a un problema, lo ideal es que no ponga estas restricciones para que cada uno presente la solución que se le ocurra y si se expone en clase vereis que las cosas se pueden hacer de mil maneras, es mejor tener la mente abierta.
La restricción sera para que la entienda el profesor XD
el de pakoito me lo quedo para disfrute personal (me va a llevar un rato entenderlo)
La clave para entenderlo es saber que Java pone los chars como ASCII, asi que en el fondo son números. La correspondencia entonces es: https://upload.wikimedia.org/wikipedia/commons/1/1b/ASCII-Table-wide.svg
El resto es jugar con números para comprobar que el caracter está en el rango (el primer if), y que el resultado de la rotación de la vuelta con una ecuacuón muy sencillita. Experimenta con distintos valores en esta ecuación: `target > MAX ? MIN + (target - MAX): target`
El profesor sigue una metodología que roza el absurdo. Por cada elemento detectado en el código que no aparezca en sus apuntes, resta 0.1 a la práctica.Toooonto.
Drumpi ya te ha dicho lo que pasa: que en el segundo bucle estabas usando números negativos como índices. En Java eso no se puede hacer
(en Python, los índices negativos sí se pueden usar y a[-2] significa "el segundo empezando por el final)
Pero dos apuntes:
if (j + code >= lower.length()) {
text2 += lower.charAt((j + code) % lower.length());
} else {
text2 += lower.charAt(j + code);
}
El if no es necesario. Fíjate que " 3 % 5 = 3". Es decir que si calculas un resto con un divisor más grande que el dividendo, el resto es el propio dividendo: el if es innecesario. Esto basta y es equivalente a tu código:
text2 += lower.charAt((j + code) % lower.length());
Por otro lado, te lo han asignado como ejercicio, bien que mires arrays y límites y qué sé yo. Pero precisamente en el cifrado Caesar el descifrado con la clave K es igual que el cifrado con 26-K. Es decir que para descifrar un texto cifrado con K=3 puedes "cifrar el cifrado" con K=26-3=23. Así que el primer código, si te funciona, también te vale para descifrar, simplemente usa text1.length()-K como clave y todo lo demás es exactamente igual. Como curiosidad, esto pasa a menudo con los algoritmos de cifrados y descifrados criptográficos: el descifrado es casi igual que el cifrado simplemente cambiando algún detalle y se puede reaprovechar casi todo el código.
Aprovechar código es lo siguiente que aprenderás :D Así te evitas errores y si un código funciona, reaprovéchalo. En la enseñanza Java el "reaprovechamiento de código" está en su ADN porque en Java todos son clases y objetos reaprovechables.
WTF!?!? Si programar es buscar soluciones a un problema, lo ideal es que no ponga estas restricciones para que cada uno presente la solución que se le ocurra y si se expone en clase vereis que las cosas se pueden hacer de mil maneras, es mejor tener la mente abierta.
La restricción sera para que la entienda el profesor XD
Seguramente sea uno de esos profesores que quiere inculcar la "manera de pensar de un programador", es decir, intenta hacerte elaborar el algoritmo con las funciones más básicas en lugar de recurrir a soluciones más avanzadas; es una manera de hacer que la gente que aprende a programar tenga muy claras las bases antes de meterse con cosas más avanzadas y abstractas.
WTF!?!? Si programar es buscar soluciones a un problema, lo ideal es que no ponga estas restricciones para que cada uno presente la solución que se le ocurra y si se expone en clase vereis que las cosas se pueden hacer de mil maneras, es mejor tener la mente abierta.
La restricción sera para que la entienda el profesor XD
Seguramente sea uno de esos profesores que quiere inculcar la "manera de pensar de un programador", es decir, intenta hacerte elaborar el algoritmo con las funciones más básicas en lugar de recurrir a soluciones más avanzadas; es una manera de hacer que la gente que aprende a programar tenga muy claras las bases antes de meterse con cosas más avanzadas y abstractas.
Bueno, yo entiendo el punto de vista del profesor: cuando uno empieza a programar, su mente no está en "modo código", y lo ideal es forzar a sus alumnos a que busquen soluciones por sí mismos. Los "novatos" darán antes con la "solución sencilla" o "cutre" que las opciones más avanzadas, y es lo que él espera. Cualquier tipo de código más avanzado sería sospechoso de haber sido encontrado por internet, lo que significa que el alumno ha hecho copia y pega sin siquiera razonar el por qué, y eso a corto plazo pasa factura.
Muchos de mis compañeros de carrera empleaban el copia-pega como método de hacer ejercicios, y el que no tenía problemas de errores desconocidos (por copiar las comillas que no eran), en cuanto se complicaban los ejercicios y dejaba de haber "ayudas", se atascaban y empezaban los suspensos.
A base de pegarse golpes contra el código, uno aprende a detectar problemas. ¿Recordáis en Matrix lo de "yo ya no veo código, sólo veo una rubia, una pelirroja..."? Llega un punto que has corregido tantos fallos propios que con un vistazo rápido al código sabes dónde está el error.
Yo entiendo que Selecter es un tío inteligente, y habrá intentado sus propias soluciones antes de acudir al foro en busca de ayuda :lol:
if (j + code >= lower.length()) {
text2 += lower.charAt((j + code) % lower.length());
} else {
text2 += lower.charAt(j + code);
}
El if no es necesario. Fíjate que " 3 % 5 = 3". Es decir que si calculas un resto con un divisor más grande que el dividendo, el resto es el propio dividendo: el if es innecesario. Esto basta y es equivalente a tu código:
text2 += lower.charAt((j + code) % lower.length());
Emmm, no estoy seguro de que eso sea más eficiente.
Supongo que depende del lenguaje, pero en algunos la operación módulo es bastante "ineficiente", ya que no hay un mnemónico que ejecute la operación en un ciclo, y los he visto que tardan más de 4.
Hice la prueba en BennuGD (ya sé que es una porquería de ejemplo, pero es el que tengo) y una operación if y una resta tardaban menos en realizarse que un módulo, pero un if con dos restas tardaba más.
Si alguien me lo puede desmentir, se lo agradecería.
Por otro lado, te lo han asignado como ejercicio, bien que mires arrays y límites y qué sé yo. Pero precisamente en el cifrado Caesar el descifrado con la clave K es igual que el cifrado con 26-K. Es decir que para descifrar un texto cifrado con K=3 puedes "cifrar el cifrado" con K=26-3=23. Así que el primer código, si te funciona, también te vale para descifrar, simplemente usa text1.length()-K como clave y todo lo demás es exactamente igual. Como curiosidad, esto pasa a menudo con los algoritmos de cifrados y descifrados criptográficos: el descifrado es casi igual que el cifrado simplemente cambiando algún detalle y se puede reaprovechar casi todo el código.
Aprovechar código es lo siguiente que aprenderás :D Así te evitas errores y si un código funciona, reaprovéchalo. En la enseñanza Java el "reaprovechamiento de código" está en su ADN porque en Java todos son clases y objetos reaprovechables.
No metas al pobre en meta-código antes de aprender a iterar dentro de los límites de un array :D Déjalo que aprenda a programar clases antes de empezar con arrays dinámicos y "los caracteres no existen, son los números" :D :D :D
Ahora, lo de reaprovechar código, a mi me lo enseñaron llevado al extremo. Hasta el punto de meter en una función un simple bucle en lugar de escribirlo dos veces: tenía más código declarando variables que ejecutando cosas.
Pero visto cómo funciona Java, que es una función, dentro de una función, dentro de una función, dentro de una función, dentro de una función, dentro de una función... hay tantas capas que para escribir una simple letra tiene que llamar a 6 sub-funciones (comprobado con el debugger y el código interno de todas las librerías) ¡no me extraña que sea tan ineficiente!
selecter25
12/01/2022, 14:43
Mil gracias por las aclaraciones a todos, sé que algunos aparte de programar os dedicáis a la docencia, ojalá tener un profesor así.
El único aspecto positivo que puedo comentar del mío es que hacemos los exámenes en papel, es algo que al principio me pareció un handicap, pero una vez puestos me ayudó mucho a retener sintáxis y a no depender tanto del autocompletado del IDE. A efectos prácticos, sé que es como picar piedra para escribir y es un escenario totalmente irreal, pero ahora soy un niño en pañales y no me ha venido mal.
El resto es un absoluto desastre:
- La improvisación y la resolución de cualquier ejercicio que proponga mediante un método que no aparezca explícitamente en sus ejemplos es tomado como una herejía (aunque mejore la resolución en términos de optimización y limpieza).
- Los temarios se reducen a un pdf anodino con teoría pseudomilitar, y unos ejemplos de ejercicios resueltos (que por supuesto no ha hecho él).
- A estos les acompaña una hoja de ejercicios propuestos, con un plazo de entrega y adiós muy buenas.
- Las tutorías (una por semana, al ser semipresencial no tenemos clase) se reducen a leer el pdf de teoría y el de los ejercicios resueltos, y en ellas el profesor se niega a resolver dudas porque el tiempo es muy limitado. También se niega a usar el foro de la plataforma (moodle) para resolver dudas globales del grupo, todas las dudas personales se resuielven de forma privada y vía mail.
Si ya de por sí la educación a distancia es jodida, el compaginarlo con la vida laboral y el que te caiga un elemento así como profesor de la asignatura más importante del ciclo es una locura. Imagino que si aparte de aprobar (la primera evaluación ha ido muy bien, rozo el 9.5 de media) quiero aprender, tendré que meterle horas por mi cuenta.
A la docencia no, pero pegarme palos con los lenguajes sí... y cada lenguaje nuevo es casi volver a la casilla cero :D
Oye, no menosprecies el programar en papel, porque te ayuda a desarrollar las capacidades para entender cómo trabaja el ordenador ejecutando código. Y ya me conoces, el obseso de Fenix y BennuGD, que durante casi 15 años ha estado programando con el Notepad++ como IDE, y ahora que estoy con Visual Studio, vuelo :D
Que a ver, para aprender está muy bien, sobre todo si tienes tiempo, pero habiendo IDEs, es tontería ponerse en plan Picapiedra con el código :D
Sí que tienes un profesor un poco pasota, desde luego, pero no te creas que el laboratorio de programación era mucho más: 3 horas para explicar la práctica, y nos vemos dentro de un mes, mis tutorías están en el panel de la entrada, y el foro para que resolváis las dudas entre vosotros está en construcción. Chao :D
Mil gracias por las aclaraciones a todos, sé que algunos aparte de programar os dedicáis a la docencia, ojalá tener un profesor así.
El único aspecto positivo que puedo comentar del mío es que hacemos los exámenes en papel, es algo que al principio me pareció un handicap, pero una vez puestos me ayudó mucho a retener sintáxis y a no depender tanto del autocompletado del IDE. A efectos prácticos, sé que es como picar piedra para escribir y es un escenario totalmente irreal, pero ahora soy un niño en pañales y no me ha venido mal.
El resto es un absoluto desastre:
- La improvisación y la resolución de cualquier ejercicio que proponga mediante un método que no aparezca explícitamente en sus ejemplos es tomado como una herejía (aunque mejore la resolución en términos de optimización y limpieza).
- Los temarios se reducen a un pdf anodino con teoría pseudomilitar, y unos ejemplos de ejercicios resueltos (que por supuesto no ha hecho él).
- A estos les acompaña una hoja de ejercicios propuestos, con un plazo de entrega y adiós muy buenas.
- Las tutorías (una por semana, al ser semipresencial no tenemos clase) se reducen a leer el pdf de teoría y el de los ejercicios resueltos, y en ellas el profesor se niega a resolver dudas porque el tiempo es muy limitado. También se niega a usar el foro de la plataforma (moodle) para resolver dudas globales del grupo, todas las dudas personales se resuielven de forma privada y vía mail.
Si ya de por sí la educación a distancia es jodida, el compaginarlo con la vida laboral y el que te caiga un elemento así como profesor de la asignatura más importante del ciclo es una locura. Imagino que si aparte de aprobar (la primera evaluación ha ido muy bien, rozo el 9.5 de media) quiero aprender, tendré que meterle horas por mi cuenta.
Poco me sorprende lo que cuentas, la verdad. Hay cada personaje por ahí dando clases que ... En muchos casos, es lo que tiene no tener miedo de poder perder tu trabajo.
Emmm, no estoy seguro de que eso sea más eficiente.
Supongo que depende del lenguaje, pero en algunos la operación módulo es bastante "ineficiente", ya que no hay un mnemónico que ejecute la operación en un ciclo, y los he visto que tardan más de 4.
Irrelevante por varios motivos:
- El más importante: estoy casi seguro de que selecter25 no estaba pensando en la eficiencia cuando escribió ese condicional, sino que no ha entendido la operación módulo así que la corrección la estimo apropiada.
Además:
- No hay que hacer programación eficiente antes de tiempo. Si no detectas un problema de eficiencia, no lo arregles antes de tiempo.
- en CPUs modernas, la operación módulo es mejor que el condicional si el branch perdictor de la CPU se equivoca en qué rama te bifurcarás. Por cierto, no tengo ninguna duda de que selecter nos podrá dar una clase magistral con las CPUs con el mejor branch predictor del mercado actual.
- Curiosamente, si el array "lower" tiene longitud 32 en vez de 26 (es decir, si le añade 6 caracteres al final cualesquiera porque el algoritmo no debería llegar a ellos nunca), el compilador traducirá la operación módulo por un AND, que es muy superior a cualquier if/then. Los compiladores saben escribir código eficiente mucho mejor que nosotros.
- Miles de cosas que no sabemos. Enlace relevante para C, no sé hasta qué punto aplica al JIT de Java: https://stackoverflow.com/questions/15596318/is-it-better-to-avoid-using-the-mod-operator-when-possible
Y es que no hay que escribir código eficiente, hay que escribir código legible y dejar a los expertos que lo hagan eficiente... si es que es necesario.
En el mundo de la programación competitiva (lo poco que he visto, en lo personal sólo he empezado a hacer alguna cosa básica) se evalúa, casi únicamente, la eficiencia de los algoritmos (con la típica notación BigO) y normalmente este tipo de "problemas de eficiencia" de mod vs if se consideran irrelevantes. Lo importante es dividir el problema en partes más pequeñas, y diseñar soluciones donde en la medida de lo posible no se aniden bucles que pasen por colecciones grandes. El problema de las soluciones más eficientes es siempre el mismo, no las entiende ni dios aunque sean una sóla linea de código.
Un ejemplo muy curioso de este tipo de optimizaciones que no las entiende casi nadie, pero mágicamente funcionan: https://betterexplained.com/articles/understanding-quakes-fast-inverse-square-root/
Gracias por las aclaraciones.
No, si yo entiendo que es una tontería, que eso hoy día un ordenador ni se entera... pero a nosotros nos hicieron programar en ensamblador en su día, y la eficiencia del Echo en Wiz aún la tengo demasiado presente, y por tanto, tengo incrustado en la cabeza lo de hacer el código más eficiente desde el minuto 1, con todos los conocimientos que tengo.
Es más, seguro que yo mismo he usado el módulo cientos de veces sin preocuparme si es más efectivo un IF... pero es que este caso me ha recordado directamente a las optimizaciones del motor de scroll tileado, y ese cambio del mod al if+suma supuso un pequeño empujoncito.
De cara a entenderlo, la corrección está bien, por eso preguntaba si, al margen del ejercicio, mi propuesta era más eficiente o no, para saberlo a título personal. Siempre es bueno repasar algunas cosas de las bases.
Fíjate que en ese enlace para C que pasas, juanvvc, hay varias respuestas que me dan la razón... pero claro, hablamos de una diferencia, en el peor de los casos, de unas decenas de ciclos de los miles de millones por segundo, y que realmente no sabemos lo que pasa en las cocinas de los compiladores (ni ganas de saberlo, oiga :D).
MasterGame
13/01/2022, 19:32
Los foros de dudas de programacion siempre terminan en opiniones acerca de lenguages o si yo lo hago mejor que tu
En un ordenador moderno es mejor optimizar los accesos a memoria para que no se produzcan fallos de cache que optimizar cosas como el modulo de un numero.
selecter25
06/04/2022, 17:46
Vuelvo a la carga con otro problemilla de noob, esta vez manejando archivos de texto con las clases FileWriter y PrintWriter.
El ejercicio a priori es sencillo ,partimos de una clase Punto con constructores y métodos ya definidos.
import java.io.Serializable;
public class Punto implements Serializable
{
private int coordX;
private int coordY;
private double distOrigen;
private String color;
public Punto(int cx, int cy, String colorp)
{
coordX = cx;
coordY = cy;
distOrigen = Math.sqrt(cx*cx + cy*cy);
color = colorp;
}
public int obtenerCoordX()
{
return coordX;
}
public int obtenerCoordY()
{
return coordY;
}
public double obtenerDistOrigen()
{
return distOrigen;
}
public String obtenerColor(){
return color;
}
@Override
public String toString()
{
String resul = "";
resul += "(" + coordX + "," + coordY + ") Dist: " + distOrigen + " Color: " + color;
return resul;
}
}
La idea es hacer:
- Un Arraylist de objetos de tipo punto (atributos int cx, int cy, String colorp) en método main. Hecho
- Un método para escribir txt que recibe por parámetro el Arraylist de objetos de tipo Punto y la ruta/nombre de un txt a crear. El método escribe en un txt los valores del arraylist de objetos usando el método write(), añadiendo separadores entre coordenadas "#" y "\n" al final de línea (se tratan como caracteres unicode, esto lo hace para que use el método split, por putear,vamos). Hecho
- Un segundo método para leer txt que recibe ruta y nombre de archivo, y que devuelve un Arraylist de objetos de tipo Punto. Se debe utilizar un buffer (BufferedReader) y acceder al fichero con el método readLine() (hasta aquí hecho), separando las coordenadas con el método split y casteándolas a int. Luego en el método main habría que usar el método tostring con el Arraylist<Punto> devuelto.
Esto es lo que tengo hecho hasta ahora:
package puntosud10;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Puntosud10 {
public static void main(String[] args) {
try {
String path = "D:/prueba/";
String name = "puntos1.txt";
ArrayList<Punto> ptList = new ArrayList();
Punto pt1 = new Punto(1, 2, "rojo");
Punto pt2 = new Punto(1, 2, "rojo");
Punto pt3 = new Punto(1, 2, "rojo");
ptList.add(pt1);
ptList.add(pt2);
ptList.add(pt3);
almacenarColPuntosEnArchivo(path, name, ptList);
} catch (IOException ex) {
Logger.getLogger(Puntosud10.class.getName()).log(L evel.SEVERE, null, ex);
}
}
public static void almacenarColPuntosEnArchivo(String path, String name, ArrayList<Punto> ptList) throws IOException {
File ptFile = new File(path + name);
FileWriter fw = new FileWriter(ptFile);
for (int i = 0; i < ptList.size(); i++) {
if (i != ptList.size()) {
fw.write(ptList.get(i).obtenerCoordX() + "#");
fw.write(ptList.get(i).obtenerCoordY() + "#");
fw.write(ptList.get(i).obtenerColor() + "\n");
} else {
fw.write("");
}
}
fw.close();
}
public static ArrayList<Punto> obtenerColPuntostDeArchivo(String path, String name) throws IOException {
File ptFile = new File(path + name);
BufferedReader ptBuff = new BufferedReader(new FileReader(ptFile));
String linea = ptBuff.readLine();
ptBuff.close();
return null;
}
}
He probado varias cosas y ninguna me ha funcionado del todo bien. Si fuese un String array lo que devuelve, le metía un return linea.split("_"); y me quedaba tan a gusto, pero al tener que devolver un Arraylist de tipo punto (con atributos de tipo int y String) y manejar el método readLine() líneas completas de String, me quedo un poco macareno.
Alguien me sugiere algo? Jrasias de hantevrazo.
Unas ideas.
A la hora de escribir los puntos a un fichero podrías tener un método que "empaquete" todos los datos a guardar a un String, como el método toString que tienes. Asi para guardar el array de puntos solo tienes que llamar a ese método del punto, guardar el string que te devuelve a un fichero y después le metes un salto de linea, en vez de tener esa función separada.
// esto en la clase Punto
public String serialize()
{
return String(coordX) + " " + String(coordY) + " " + color;
}
// mas o menos, no se las funciones de java
public Punto deserialize(String str)
{
int x = StrToInt(str);
// habría que avanzar hasta el primer espacio
int y = StrToInt(str + primerEspacio);
// avanzamos hasta el segundo espacio
string color = StrToInt(str + segundoEspacio);
return new Punto(x, y, color);
}
public static void almacenarColPuntosEnArchivo(String path, String name, ArrayList<Punto> ptList) throws IOException
{
FileWriter fw = new FileWriter(new File(path + name));
for (int i = 0; i < ptList.size(); i++)
fw.write(ptList.get(i).serialize() + "\n");
fw.close();
}
// mas o menos algo asi
public static ArrayList<Punto> leePuntos(String path, String name) throws IOException
{
FileReader in = new FileWriter(new File(path + name));
ArrayList<Punto> array;
while ( !in.eof() )
{
in.ReadLine(linea);
array.add(Punto::deserializa(linea));
}
in.close();
return array;
}
Para leer los puntos tendrías que hacer el método contrario, que dado un string te devuelva un punto. Para leer el fichero de puntos, abrirlas el fichero, lees una linea, llamas a este método (podria ser un método de clase que devuelva un nuevo punto) y metes el punto creado en un array. así hasta que se termine el fichero y devuelves el array.
PD: el if que haces al guardar los puntos sobra.
selecter25
06/04/2022, 20:19
Unas ideas.
PD: el if que haces al guardar los puntos sobra.
Mil gracias por las ideas y por contestar tan rápido, has tardado menos en contestar que yo en escribir el post :D. Eliminado el if, cierto es que no pintaba nada.
En cuanto al ejercicio, imagino que cualquier profesor normal daría por válida la solución que propones, pero como ya pasó en el anterior, este hombre es un maniaco. A título personal voy a probarlo, prefiero aprender que cumplir, llevo todo el curso aprendiendo más por mi cuenta que en el FP. Sus directrices para este ejercicio:
- No puedo modificar absolutamente nada en la clase Punto.
- No puedo modificar nombres de variables, métodos, etc. facilitados por el profesor.
- No puedo introducir nada que no se especifique explícitamente en el enunciado, ni utilizar métodos que no se hayan visto en clase o estén en los apuntes del temario.
Estas cosas las manda vía mail para cada ejercicio del tema, si no cumples las directrices, 0 (de hecho si lo entrego con el actual nombre de clase, me lo tira para atrás). :D
Dejo el enunciado para que se vea lo que pide:
https://i.imgur.com/mPgKM1y.jpg
Mil gracias de nuevo por el tiempo que te has tomado :brindis:
Vale, tengo bastante oxidado el tema de acceso a ficheros en Java, pero creo que tienes un buen inicio de función.
La idea es similar a lo que dice swapd0: es ir leyendo línea por línea, separar los datos, y guardarlos en un nuevo objeto "punto" que añadirás a la lista.
No sé si meteré la pata con la sintaxis o con otra cosa, o si estaré mezclando código de C#, pero creo que a modo de pseudocódigo lo pillarás:
public static ArrayList<Punto> obtenerColPuntostDeArchivo(String path, String name) throws IOException {
ArrayList<Punto> miLista = new ArrayList<Punto>(); //Dato a devolver
File ptFile = new File(path + name);
BufferedReader ptBuff = new BufferedReader(new FileReader(ptFile));
String linea;
String[] datosLeidos;
Punto tempPunto;
while (!ptBuff.Eof) {
linea = ptBuff.readLine(); //leemos una línea
datosLeidos = linea.split('#', linea); //separamos los tres datos de la línea en diversas strings
tempPunto = new Punto (int.parse(datosLeidos[0]), int.Parse(datosLeidos[1]), datosLeidos[2]); //Creamos UN nuevo punto con los datos de esta línea
miLista.Add(tempPunto); //Guardamos el punto en la lista, y pasamos a la siguiente línea
}
ptBuff.close();
return miLista;
}
Lo cierto es que el \n siempre me trae por la calle de la amargura, porque nunca sé si es \n o \r\n, o si hay que gestionar ambos... Tengo que manejar dos BBDD diferentes y una usa un tipo de fin de línea y el otro la otra, y cuando los confundo empiezan a salirme errores de sintaxis y...
Volviendo al ejercicio. Pues creo que esa sería la cosa: lees una línea, extraes sus datos, creas un punto, lo guardas en la lista, y a por otra línea. No sé por qué no usas join para escribir en una sola línea del fichero, pero yo he usado split porque es lo que uso :D Ya tú sabrás si tienes que leer byte a byte buscando # o lo que sea.
selecter25
06/04/2022, 21:10
Vale, tengo bastante oxidado el tema de acceso a ficheros en Java, pero creo que tienes un buen inicio de función.
La idea es similar a lo que dice swapd0: es ir leyendo línea por línea, separar los datos, y guardarlos en un nuevo objeto "punto" que añadirás a la lista.
No sé si meteré la pata con la sintaxis o con otra cosa, o si estaré mezclando código de C#, pero creo que a modo de pseudocódigo lo pillarás:
Lo cierto es que el \n siempre me trae por la calle de la amargura, porque nunca sé si es \n o \r\n, o si hay que gestionar ambos... Tengo que manejar dos BBDD diferentes y una usa un tipo de fin de línea y el otro la otra, y cuando los confundo empiezan a salirme errores de sintaxis y...
Volviendo al ejercicio. Pues creo que esa sería la cosa: lees una línea, extraes sus datos, creas un punto, lo guardas en la lista, y a por otra línea. No sé por qué no usas join para escribir en una sola línea del fichero, pero yo he usado split porque es lo que uso :D Ya tú sabrás si tienes que leer byte a byte buscando # o lo que sea.
Gracias Drumpi!! Sintaxis aparte esta parece una solución que apañaría al señor psicópata. En salir del curro lo apañaré y probaré, mañana reportaré con el resultado.
Lo cierto es que el \n siempre me trae por la calle de la amargura, porque nunca sé si es \n o \r\n, o si hay que gestionar ambos... Tengo que manejar dos BBDD diferentes y una usa un tipo de fin de línea y el otro la otra, y cuando los confundo empiezan a salirme errores de sintaxis y...
Volviendo al ejercicio. Pues creo que esa sería la cosa: lees una línea, extraes sus datos, creas un punto, lo guardas en la lista, y a por otra línea. No sé por qué no usas join para escribir en una sola línea del fichero, pero yo he usado split porque es lo que uso :D Ya tú sabrás si tienes que leer byte a byte buscando # o lo que sea.
Yo siempre busco \n ya que si aparece \r estará antes y me lo habré "comido", IIRC en el único sitio donde he buscado \r\n es haciendo una petición https que te devuelve los datos con la cabecera (un montón de mierda) y tienes que buscar \r\n\r\n (dos saltos de linea seguidos) para encontrar los datos de respuesta.
Yo siempre busco \n ya que si aparece \r estará antes y me lo habré "comido", IIRC en el único sitio donde he buscado \r\n es haciendo una petición https que te devuelve los datos con la cabecera (un montón de mierda) y tienes que buscar \r\n\r\n (dos saltos de linea seguidos) para encontrar los datos de respuesta.
Ya, para buscar, pues guay, pero como \r es un carácter que suelo necesitar quitar por alguna razón, pues me tengo que pelear. En BennuGD he aprendido a lidiar con ello, porque funciona diferente en Windows o Linux, y en C# aún me estoy peleando y nunca recuerdo en qué proyecto metí el método que lidia con ello por mi :D
Nota pro: si tienes un problema recurrente, créate un método o función que lo resuelva por ti, guárdalo en un sitio como "código útil", y lo usas en lugar de tener que enfrentarte de nuevo al problema. Se te olvidará cómo resolverlo y no podrás hacerlo cuando no tengas el código a mano, pero compensa la cantidad de quebraderos de cabeza que te quitas cuando sí.
Ya, el tipico directorio de "utilidades" o "herramientas" donde metes funciones a coscoporro, pero si empiezas a meter bastantes funciones de un tipo o que hacen cosas bastante parecidas, lo suyo es que las quites de ahi y crees una librería con ellas.
selecter25
07/04/2022, 14:23
Ya, el tipico directorio de "utilidades" o "herramientas" donde metes funciones a coscoporro, pero si empiezas a meter bastantes funciones de un tipo o que hacen cosas bastante parecidas, lo suyo es que las quites de ahi y crees una librería con ellas.
+1, al habla el presidente oficial del fanclub "olvidé dónde guardé todas mis cosas útiles".
PD: Finalmente conseguí hacerlo funcionar modificando el código de Drumpi, a título personal también desarrollé la idea de swapd0, con buen resultado. Gracias a ambos por la ayuda :brindis:.
Siguiente tema: AWT y Swing, nos vemos en próximas entregas de "noob millenial meets Java".
Al menos, las guardáis :D :D :D
selecter25
07/04/2022, 19:39
Yo lo aplico a todos los ámbitos, herramientas, componentes, cables, marcadores de navegador... Nunca encuentro nada.
Por cierto, acabo de hacer una variante del ejercicio anterior, esta vez almacenando los objetos como objetos (valga la redundancia) en un archivo .dat y usando Object Stream. Imagino que almacenarlos como caracteres unicode hace que sea fácilmente legibles, pero la madre que lo pario, por qué me hizo pasar el mal rato anterior si se pueden almacenar y recuperar objetos así de fácil?
Huy, lo de la serialización de datos es un auténtico lujo. No veas lo útil que es de cara al envío de datos por internet, coger un objeto, serializarlo en formato JSon, y que el receptor, él solo, te lo transforme de vuelta en el objeto sin tener que escribir código. Incluso para convertir entre tipos de dato, cuando la herencia se te queda corta o son tipos con atributos similares, pero no tienen nada que ver uno con otro...
Pero es lo que dices, puede ser inseguro tener la información como datos legibles :D
De todas formas, ten en cuenta que estos ejercicios no son para aprender a hacer el código bien hecho, sino para practicar las nociones más básicas, cosas concretas, en este caso, crear, gestionar, guardar y cargar datos de una clase, pero sin profundizar en el concepto de clase, instancias y demás, por eso es tan "tiránico" e "inflexible" en algunas cosas, porque se salen del ámbito del ejercicio.
Cuando se terminan las lecciones es cuando empiezas a trabajar por tu cuenta, creando tus estructuras de datos, buscando tu forma de gestionar el problema y cometiendo errores garrafales que te van a hacer reescribir la mitad del código dos o tres veces :D Es cuando de verdad empiezas a aprender a programar, pero necesitas tener cristalino todos los conceptos que te están dando ahora.
Yo aprendí a programar en la facultad, pero por otro lado estuve dando clases particulares de forma paralela, desarrollando en DIV2 y Fenix :D La época de Sector Gamma, Fenix Land, El Ballena Azul, Venturer, el primer Tilemap Editor... :D
selecter25
07/04/2022, 21:36
Sí claro, entiendo que estemos encorsetados aplicando supuestos muy concretos y con 0 utilidad, pero no estaría de más algo de teoría aplicada al mundo real, saber qué es realmente útil y aplicable al desarrollo "real", como ahora entiendo que la serialización lo es.
La teoría es demasiado académica, los profesores son vagos y acomodados, reciclan material de hace casi 2 décadas, material de otros profesores, hay profesores que ni siquiera corrigen actividades durante el curso. Esto hace que llegues a los exámenes sin poder estudiar sobre tus propios ejercicios, porque no sabes si están bien o no. En el más grave de los casos, el mismo día del examen te marca todos los ejercicios como entregados y correctos. Esto ha hecho que muchos aprovechen el "exploit" y entreguen solo el enunciado de las actividades :D.
Si a la nula implicación le sumamos que, al ser semipresencial, el trato es muy impersonal, tenemos que los profesores no contestan (o lo hacen a la semana), anulan tutorías porque otra persona está utilizando la licencia de Webex y no saben utilizar otra plataforma :lol2:, cuando los propios alumnos tenemos servidor de Discord y un slack, pero no lo usan porque no saben :lol2:.
Hay un caso que es motivo de risas en clase, porque tuvimos un profesor que realmente me parecía bueno, y desgraciadamente lo era, porque se lo llevaron a nosequé compañía de investigación espacial.
Pues bien, a día de hoy, abres un ejercicio de Lenguaje de marcas, y pum, es suyo. Abres un recurso de Bases de datos, pum, también es suyo. Sistemas Informáticos, pum, medio temario de ese profesor. No se molestan ni en cambiar el nombre. Y la profesora de LDM aún tiene el valor de decir en un ejercicio de formato en XML que "no le copiemos el formato, que es suyo", que le demos uno propio.
A mí me da un poco igual porque no voy a ejercer de ello, es más un enriquecimiento personal y un apoyo para mejorar en las cosas que utilizo o intento utilizar(C# en Unity, algo de Ruby y Javascript en RPG Maker, cositas con Kotlin...), pero me da mucha pena ver a los chavales empollar basura para acabar en consultoras reciclando código mohoso en Java de los años 90 por el SMI.
Tampoco tenía muchas expectativas puestas en el curso, es justo lo que imaginaba, una experiencia en la que apenas aprendes, pero al final te dan un papel que dice que sí sabes.
Bueno, por desgracia, los cursos de programación se basan en ese estándar en la mayoría de casos, aunque con sutiles diferencias.
Mi experiencia se limita a las clases de programación en la facultad (bueno, las de C, porque las de otras cosas cambian bastante), un curso de analista programador, y las pocas clases que vimos en el Máster de Videojuegos. En todos ellos se limitan a enseñarte lo más básico (condicionales, bucles, orientación a objetos, problemas típicos que te vas a encontrar miles de veces...), a ponerte algunos ejercicios aunque la mayoría ni se corrigen, y un examen que podría ser un ejercicio de casa, pero con tiempo insuficiente para ver quién ha estado practicando por su cuenta, y ha cogido más habilidad a la hora de resolver problemas.
Yo he aprendido que si quieres aprender, tienes que ponerte por tu cuenta, corregirte tú mismo los ejercicios (aunque tengas que escribir por pantalla los datos en memoria para revisarlos) y ampliarlos a ver qué puedes hacer. Las clases te dan unas herramientas básicas para que te puedas apañar, pero es que es verdad, no hay tiempo material para aprender sintaxis, elementos básicos, buenas maneras y estructuras completas de programas. A mi me llevó años aprender a estructurar mis juegos y a ser más eficiente, por eso, cuando me dicen "deja ya de hablar del Echo y haz otro juego" no saben que lo he reescrito casi entero tres veces (y creo que le toca una cuarta ^^U).
Pero bueno, de anécdotas te puedo escribir un libro :D Una, por ejemplo, tiene que ver con un ejercicio en que teníamos que entregar tres versiones distintas de un programa de mecanografía (debíamos implementar una lista FIFO, una LIFO y una lista doblemente enlazada, en el fantástico mundo de los punteros, y usarlos para exactamente lo mismo, es lo único que vimos para aprender a estructurar un programa). Recuerdo que el último día sólo tenía hecho un apartado y medio, y me tuve que quedar hasta la 1 de la mañana para terminar el ejercicio... lo que significa que terminé a las 4 de la mañana de depurar código y corregir todos los fallos. Estaba muy orgulloso de ese disquete, porque había añadido opciones para elegir medias filas de teclas, filas o el teclado entero (nos daban libertad para ampliar los programas siempre que hiciéramos lo que nos exigían). Fui al despacho del profesor, le entregué el disquete, miró el nombre, anotó el ejercicio como entregado y me lo devolvió sin siquiera ejecutarlo.
Lo irónico es que, trabajando en consultoría, no son pocas las veces que me hacen exactamente lo mismo: me meten prisa para entregar algo, me esfuerzo a full para terminarlo, se hace la entrega para testeo, y al final nadie lo prueba y me mandan el documento de diseño de la siguiente versión. :D
Pero sí, si quieres aprender a programar, las clases están muy bien, especialmente para preguntar todas las dudas (aprovecha, que después va a ser mucho más difícil que te respondan), pero luego tienes que ponerte por tu cuenta, hacer muchos códigos sencillos (pero muchos), pegarte con los fallos y resolverlos por tu cuenta (que se lleva muuuuucho tiempo) y con el tiempo empezarás a ver estructuras, cómo dividir problemas, quizás hasta una chica con un vestido rojo, y es cuando ya empiezas a disfrutarlo, y a entender por qué Starfox es un milagro técnico, aunque no sepas qué lleva dentro el SuperFX :D
selecter25
08/04/2022, 20:12
:D Imagino que todos en mayor o menor medida habréis pasado las de Caín a nivel académico.
Exacto, es tal cual dices, todos los métodos de aprendizaje tipo "aprende X lenguaje desde 0" (con esto incluyo DAM/DAW que es lo que estoy haciendo ahora) son idénticos , bases de programación idénticas, aplicadas a 0 casos de utilidad reales.
Aprendes sintaxis, variables, métodos, clases, ámbito de visibilidad, parámetros de entrada y de retorno, tipos de datos básicos, estructuras de datos, bucles, POO (si el lenguaje se presta)... pero nadie te enseña a aplicar todo esto a modelos concretos o proyectos reales, nadie te explica "hey, esto está genial pero no lo vas a usar en la vida", "no le des mucha importancia a esto, en el mundo real vas a trabajar con otros frameworks". Te dan el esqueleto y los órganos, pero nadie te explica cómo revivir a Frankenstein.
Y te digo esto habiéndome dedicado (y sigo parcialmente dedicado a ello) a la docencia durante años, hay muchos profesores que son buenísimos programadores, pero no saben enseñar al resto.
Cómo es posible que haya aprendido más en un curso de 100 horas de Unity (de Juan Gabriel Gomila) que en un año de DAM?
Si considero que tenía una base justita antes de empezar, y a escasos 2 meses de acabar el primer año, tengo una media de más 9 sin prácticamente haber aprendido nada (ya véis que hasta con iteraciones simples me atasqué); Cómo llegan los becarios a las prácticas? Saben hacer algo?
Para que entendáis el nivel de los alumnos, en este último ejercicio que os pregunté, más de la mitad de la clase no ha entregado la práctica por no saber siquiera lo que tenían que hacer.
La gente no llega a comprender ni siquiera de qué va el tema, no entienden que el ejercicio se basa en almacenar como texto Unicode una colección de objetos, para luego recuperarla. Piensan que hay que hacer una serie de magia para que al compilar "haparezkan los puntos por harte de majia hen la consola".
Vimos las colecciones hace solo 2 temas, y la gente se queja porque se usan colecciones y en los ejercicios resueltos de este tema no aparece ningún ejemplo con ellos. No recuerdan ni un método, no se molestan ni en buscar en la API (algunos no sabe ni que eso existe).
Y con esto no quiero parecer pedante, yo soy el primer noob, soy un paquete y voy con toda la humildad a la hora de aprender, pero como profesor me cuesta entender qué demonios está pasando para que ni profesores enseñen, ni alumnos aprendan.
Mucho ojo, porque lo que os enseñan SÍ que sirve para algo. De hecho, estos ejercicios tan complicados e inútiles los vas a repetir 20 veces al día.
Por ejemplo, cuando hacía lo de los punteros me decían "eso no sirve para nada, porque en Java y en C# tienes unas List muy majas, que con Add y Remove te lo hacen todo". Ya, pero cuando llega la hora de trabajar en Java, esas "List" tienen distintas formas de trabajar: listas ordenadas, pilas, colas... incluso tienes los "Dictionary", que si no te has peleado con eso no sabes cuándo conviene usar una cosa u otra, y la gente termina cogiendo las "List" estándar por inercia (que sí, que funcionan, y la penalización de tiempo es irrisoria... pero demuestra tu nivel).
Cuando rehice el Tilemap Editor, no sabes la de listas enlazadas que tuve que implementar con su interfaz (añadir, borrar, actualizar, leer, buscar, ordenar...): ¿Lista de mapas? Una para guardar en memoria la lista de mapas abiertos, y otra para la parte de la interfaz que muestra la lista de mapas abiertos. ¿Capas del mapa? Otra lista para poder seleccionar en la interfaz la capa activa. Y otra para las acciones realizadas y poder implementar el botón "deshacer"... y ojo porque si un paso es "rellenar", cada tile rellenado es un nodo de otra lista anidada dentro de ese paso. Y podría seguir todo el día :D
Comparado con la versión 1, tiene 4 veces más código, hace poco más o menos lo mismo, pero la diferencia de rendimiento es abismal, y la facilidad que tengo para ampliarlo ni te cuento (otra cosa es que lo haga :P).
En tu caso, eso de guardar los datos de una instancia, hoy es un ejercicio para guardar y recuperar de un fichero. Mañana es un sistema de guardado de log o un trozo de código para hacer debug, que no se usará en el programa final. O puede que lo uses para, en lugar de un fichero, transmitirlo por http, puerto serie, o el GPIO de la Raspberry. ¿Bucles para recorrer una lista y sumarle 1 a cada elemento? 50 escribo yo al día para actualizar datos de List, o borrar elementos que están en otra lista.
Y sí, los alumnos terminan un tema y hacen "clear", sin saber que el conocimiento en programación es acumulativo, preguntan sobre lo que ya se ha visto, y copian código sin siquiera entender lo que hacen. Salvo que estés en la carrera de informática (y no te lo puedo asegurar, porque no he asistido a sus clases), la mitad de la gente va a intentar pasar de las clases de programación. En Teleco tenemos varias asignaturas: 2 teóricas y 1 práctica de las bases de C, y a partir de ahí... bueno, no quiero sonar pedante. El caso es que la mitad de los alumnos se atragantan con esas asignaturas. Pueden aprobar cálculo con la gorra, análisis vectorial con facilidad, sistemas electrónicos II (que no sé qué tienen de "electrónica", la verdad :D) casi sin mirar... pero cuando toca programar (y créeme, en electrónica, programamos bastante... o al menos, simulamos que lo hacemos :D) el índice de suspensos se incrementa casi a niveles de las "asignaturas hueso", y no son uno ni dos los que me han dicho que dejaban la carrera por esas asignaturas.
Así que sí, para programar, tienes que tener una configuración cerebral adaptada al medio: capacidad de análisis, voluntad para entender, intelecto para dividir problemas, imaginación para plantear soluciones y cabezoner... fuerza para frustrarte una y otra vez y seguir adelante.
Y corto porque se me alarga mucho el mensaje, y tengo que escribir el código para activar la cámara de la tablet para leer un código de barras :D
PD: Se me olvidaba (porque lo acabo de ver en el código :D), cuando te pones a trabajar de programador, también es imprescindible comprar una bola de cristal. Adelantarte a los cambios que te van a pedir, a deshacer trabajo que te van a volver a encargar, y a ampliar funcionalidad que aún no te han pedido es vital, si quieres ahorrar tiempo.
A veces, dedicar esos 30 minutos extra a hacer bien las cosas, pese a lo que te digan jefes y compañeros, te pueden ahorrar varias horas la semana que viene, como estoy viendo ahora mismo por pantalla :D
selecter25
11/04/2022, 15:48
Gracias por toda la info Drumpi.
No es que cuestione la utilidad de lo que enseñan, que indudablemente la tiene, lo que me frustra es que el 100% de teoría está descontextualizada y encorsetada. Te enseñan "qué" y "cómo", pero no "para qué" o "cuándo".
Yo podría enseñar a un alumno a construir los tipos de condicional en habla inglesa a nivel sintáctico-semántico y no sabría utilizarlos, porque se olvida quizás la parte más importante de la enseñanza de un lenguaje, la pragmática. Pese a las diferencias entre lenguajes naturales y artificiales, no creo que la metodología sea tan diferente.
Sin ir más lejos, todos los casos de uso reales que me has dado en el mensaje anterior, me hacen tener una nueva perspectiva de todos los elementos que citas. Ejemplo práctico: Ya había visto las diferentes estructuras de datos en el temario de clase, con horas y horas de trabajo, arrays, matrices, colecciones... pero por mi cuenta en el curso de Unity, con una sola hora de explicación sintáctico-semántica (una hora entre todos), y abordando la creación de un inventario, pude entender y dominar el uso de diccionarios en C# mil veces mejor.
Cualquier persona es capaz de abrir la API, buscar clases y ver el funcionamiento de sus métodos. Ahora por ejemplo estamos con Swing. No me pidas que te haga una app usando un tipo de layout, con un slider y 4 botones guarros que la cambien de color, vamos a hacer por ejemplo una calculadora, que le va a dar un sentido pragmático a toda esa teoría anodina.
Y finalmente entra otra de las cosas que me crispan, y viene relacionado con tu párrafo:
Así que sí, para programar, tienes que tener una configuración cerebral adaptada al medio: capacidad de análisis, voluntad para entender, intelecto para dividir problemas, imaginación para plantear soluciones y cabezoner... fuerza para frustrarte una y otra vez y seguir adelante.
Pídeme algo, enumera algunas limitaciones, pero deja un pequeño % de creatividad. No me pidas una calculadora con un diseño y una lógica ajustadas al milímetro. No quiero usar tus nombres de variables en castellano, no quiero capturar excepciones usando tus mensajes, no quiero usar tu lógica para programar la calculadora, no quiero entregar el mismo ejercicio que 30 personas más, no quiero verme limitado a no poder usar un método que no interfiere en mi aprendizaje y que no me simplifica siquiera el trabajo (por ejemplo usar un maldito JOptionPane en lugar de sacar cosas por consola) porque me vas a restar puntos.
Entiendo que es una virtud ajustarse a patrones específicos de un cliente, pero dejemos eso para más adelante, cuando un novato pueda desarrollar todo lo que citas en tu cuadro. Si te piden un "6" y solo te permiten hacer "5+1", jamás vas a desarrollar el "3*2", o el "60000000000/10000000000".
Soy un llorón? Sí.
Yo creo que es más problema de falta de tiempo que de otra cosa: la informática tiene muchas cosas que dar, crear un programa que funcione lleva su tiempo (sobre todo, la parte de debug, que nadie te enseña, salvo para decirte "si lo haces como tienes el código, no vas a poder hacer debug, o vas a tardar mucho tiempo") por lo que no queda para decir "esto se puede usar para...".
De hecho, sólo en la asignatura práctica nos daban "libertad" para hacer lo que quisiésemos: diseñar un juego de la oca, donde las casillas sean una lista enlazada que contengan... y a partir de ahí había quien hacía el tablero en ASCII, quien metía 3 o 4 jugadores, pero la base era bastante estricta. Fue un buen método de enseñanza, pero antes ya llevábamos a la espalda un cuatrimestre de teoría, y lo que íbamos dando de forma paralela al laboratorio. Eso, en un "curso" no se puede hacer por falta de tiempo, y más cuando viene gente con conocimientos a cero.
Pero esto no es un mal exclusivo de programación. A mí me pasaba en cálculo: veía a mi profesor resolviendo un límite mediante una serie y yo me decía "¿y por qué con una serie, y específicamente esa serie?". Sí, luego empezaba a tachar términos, pero yo no sabía por qué milagro cerebral su solución empezaba por buscar esa serie en concreto.
Luego me veo el vídeo del canal "Derivando" sobre "qué se estudia en la carrera de matemáticas" y dice que, más que nada, pensamiento crítico y cómo solucionar problemas, más que una fórmula para hacerlo... y yo me digo "será en tu carrera, no en la mía"... y no dejo de ver cierto paralelismo en ello con las carreras de informática y teleco frente a "cursos de programación".
Pero no me quiero extender en ello, sé que lo tuyo es un post de desahogo :D Para eso hay un remedio bastante eficaz: llegar a casa, buscar un rato libre, y resolver el ejercicio a tu manera, equivocarte y aprender. Como dije, cuando empecé a programar en la facultad fue cuando empecé a hacer mis juegos en DIV en paralelo. Servía de desahogo y de aprendizaje, y hasta hace un par de años, me servía incluso para el trabajo... pero hay un punto crítico en que es demasiado código :D
Yo creo que no se tarda/pierde tanto tiempo si se deja que cada uno entregue su solución, y después en una clase el profe enseña las mas pintorescas, raras o mejores soluciones para que la gente vea que se pueden hacer de muchas formas que aunque funcionen son malas soluciones. Creo que así se aprendería bastante.
A ver,un profe de Universidad suele tener como una o dos clases al día, cuatro horas de tutorías a la semana (que absolutamente nadie usa, salvo las dos últimas semanas antes del examen) y el tiempo de investigación. Ellos sí podrían dedicarle ese tiempo, pero no es tan fácil, luego voy a ello.
Los de los cursos lo tienen más complicado, porque son cursos de una duración corta, con "poco" espacio entre clase y clase, y con muchísimo material en cada una de ellas (en el curso que yo estuve, eran como 5 o 6 horas cada día, 2 veces por semana, durante 1 mes... creo). Apenas hay tiempo de revisar los ejercicios de 20 alumnos.
Pero aparte, y el que programa lo sabe, leer código de otra persona es muy complicado. A no ser que esté bien estructurado, con muchos comentarios, y se entienda lo que intenta hacer, intentar seguir la traza de otra persona es más difícil que encontrar un bug en código propio. Y si eso es complicado entre programadores, no te digo ya con alumnos que están aprendiendo, que cometen fallos, que se saltan las normas, y que no escriben ni un sólo comentario.
...Aunque bueno, a Selecter le he entendido el código muy rápido... no todo (sobre todo porque lo he revisado entre compilaciones :D), pero sí lo esencial para comentarle una solución. Aún así tampoco me toméis como vara de medir, tengo un olfato especial para encontrar fallos de código (los he cometido casi todos :lol:)
Por eso mismo, si alguien entrega algo sin un comentario y mal estructurado, lo puedes poner como ejemplo de como no se hacen las cosas, sin decir el alumno. Ademas que al ser programas simples si no son fáciles de seguir es que estas haciendo algo mal.
A ver,un profe de Universidad suele tener como una o dos clases al día, cuatro horas de tutorías a la semana (que absolutamente nadie usa, salvo las dos últimas semanas antes del examen) y el tiempo de investigación. Ellos sí podrían dedicarle ese tiempo, pero no es tan fácil, luego voy a ello.
Los de los cursos lo tienen más complicado, porque son cursos de una duración corta, con "poco" espacio entre clase y clase, y con muchísimo material en cada una de ellas (en el curso que yo estuve, eran como 5 o 6 horas cada día, 2 veces por semana, durante 1 mes... creo). Apenas hay tiempo de revisar los ejercicios de 20 alumnos.
Pero aparte, y el que programa lo sabe, leer código de otra persona es muy complicado. A no ser que esté bien estructurado, con muchos comentarios, y se entienda lo que intenta hacer, intentar seguir la traza de otra persona es más difícil que encontrar un bug en código propio. Y si eso es complicado entre programadores, no te digo ya con alumnos que están aprendiendo, que cometen fallos, que se saltan las normas, y que no escriben ni un sólo comentario.
Hola?
Doy programación en los ciclos superiores de DAW/DAM y hago lo que dice el compañero swapd0.
Es así como se aprende porque luego en el mundo laboral lo que se van a encontrar en el 80% de las veces es código ya hecho que deben de entender y trabajar sobre él. Y , como bien sabes, te puedes encontrar cada cosa cuando entras nuevo en una empresa...
Por eso hay que formar bien desde los inicios: tabulación, comentarios, nombres de variables/clases/métodos, estructuración del código ... les cuesta MUCHO a los alumnos y muchos no les ven el sentido al principio pero al año siguiente cuando van a las empresas en la FCT siempre me lo agradecen.
Yo muestro varias soluciones (sobre todo en ejercicios que usan patrones de diseño) e intento debatir cual sería la más fácil de entender por un lado y la más "óptima " en términos de rendimiento, por otro.
Y lo de los profes de universidad es de traca (hice y acabé Ingeniería Informática, la de 5 años). Para mí el 90% de los que tuve no sabían dar clase. Serían unos cracks en su campo (algunos ni eso) pero dando clase eran nulos o muy nulos (curiosamente más ellos que ellas).
Si no tienes tiempo de dar/preparar clases porque estás investigando, no cojas tanta horas de lo uno o de lo otro. Yo mismo he estado haciendo eso y no he tenido problemas de organización. Pero claro si cojo 876765654 horas de docencia para intentar acabar lo antes posible pues es normal que no de tiempo a nada... pero lo importante es acabar antes y a los alumnos que les den xD Al menos ese es el pensamiento que yo he visto en mucha gente de la UMA.
¿por qué no he visto antes este hilo?
Supongo que habrá de todo en la viña del Señor.
Yo he conocido profesores que apenas tienen tiempo de prepararse las clases, porque lo hacen bien, gente que iba a por el cheque (por falta de motivación, por estar quemado...) e incluso alguno que directamente se escaqueaba en cuanto podía (no daré detalles, me parece feo).
Pero tengo la teoría aún sin demostrar de que, cuanto mejor sea una persona en su campo, peor es enseñando. Algunos por soberbia (y eso está a la orden del día en cuestiones de programación), otros porque dan por sentadas bases que los novatos no tienen, y otros porque se olvidan lo que se siente en esos primeros momentos y que no son capaces de ver esas estructuras que con los años parecen obvias.
Y también tengo la teoría sin demostrar de que la mayoría de los profesores que acaban en academias privadas, son gente que va por el sueldo y les importan tres pepinos si los estudiantes aprenden o no. Ojo, que hay quien les importa que aprueben, porque les va el sueldo en ello, pero de aprobar a aprender va un trecho. Anda que no he visto pocos anuncios de "te ayudamos a aprobar", o de gente que yendo a una academia, los sacas del examen tipo, y se pierden.
Al menos ese es el pensamiento que yo he visto en mucha gente de la UMA.
¿UMA? ¿De Málaga? Entonces hemos estado en la misma facultad... pero en módulos opuestos (o sea, como si no estuviéramos en el mismo sitio :D).
Ya digo que a los de Informática no los conozco, pero en Teleco hay de todo, hasta alguno que, si no fuera por la seriedad que se les impone, serían unos frikis de cuidado :D
Creo que fue en 2006 cuando acabó ardiendo el laboratorio de robótica :awesome:
Por ejemplo: Métodos Numéricos siempre me dijeron que era la asignatura hueso. De hecho, es la única asignatura de la carrera que te permiten llevarte todos los apuntes que quieras (bueno, en física te permitían un formulario, pero sin palabras). Los tres primeros años que fui, en clase éramos 6 personas, y el profesor se jactaba (en broma) de tener el mayor porcentaje de alumnos aprobados. Yo no entendía nada de sus clases. Mis apuntes eran "aptdo 1.5.4.3, aptdo 1.5.4.5, aptdo 1.5.4.23".
El cuarto año me cambié de grupo, teníamos otro profesor, el aula llena, los apuntes pasaron de un tocho de 200 páginas a 5 temas de 4 a 8 páginas cada uno, y me enteraba de todo, incluso fue una asignatura que me encantó... muy surrealista, pero me encantó.
A ver, por alusiones
Profes de Universidad. Hay dos perfiles: los que priorizan docencia y hacen investigación en ratos libres y al revés. Las universidades públicas incentivan más la investigación (para avanzar tienes que investigar) mientras que las privadas incentivan la docencia (si no tienes buenos reviews de alumnos, a la calle). Esto es una generalización y como cualquier generalización es falsa, claro. Recordad también que parte de los profesores de universidad son externos que están contratados por horas así que estos cálculos de Drumpi solo son válidos para la minoría que está a tiempo completo y tiene plaza en la universidad pública
A ver,un profe de Universidad suele tener como una o dos clases al día, cuatro horas de tutorías a la semana (que absolutamente nadie usa, salvo las dos últimas semanas antes del examen) y el tiempo de investigación.
Yo he pasado por los dos perfiles en universidad pública y en privada. Ahora solo hago docencia. En ambas te pagan solo por la horas efectivas de docencia, el tiempo de preparación es cosa tuya. En mi caso: 4 horas a la semana (dos universidades, así que 2+2, asignaturas y lenguas diferentes en cada universidad) Así que ya tienes tú que pensar si el precio/hora de docencia te compensa también las horas de preparación. Ya os avanzo: esto se hace por vocación.
Por supuesto, si tienes un contrato por horas, entonces es que la docencia no es tu actividad principal. Así que las horas de preparación son en vacaciones de tu actividad principal no relacionada con la universidad. Por ejemplo, en mi caso, las preparaciones y correcciones de ejercicios las haré esta semana santa, y si se acumulan mucho, a las 21 horas de un día entre semana.
Para que lo tengáis en cuenta.
-----Actualizado-----
Sí que estoy de acuerdo en una cosa: hay profesores que no sabemos enseñar. En general, no hay "clases de profesor de universidad". Un día apareces en medio de una clase y, ale, a enseñar. Mis primeras clases debieron ser horribles. No digo que las actuales ya no lo sean, seguro que tengo mil vicios, pero ya tengo algo de experiencia y quiero pensar que a veces acierto. La única manera que ofrecen muchas universidades a los profesores para aprender a dar clases es la propia práctica de dar clases.
¿UMA? ¿De Málaga? Entonces hemos estado en la misma facultad...
Por ejemplo: Métodos Numéricos siempre me dijeron que era la asignatura hueso.
Soy el profesor de Metodos Numericos, me llamo Angel Bueno, pero no soy ni lo uno ni lo otro XDXDXD
Soy el profesor de Metodos Numericos, me llamo Angel Santos, pero no soy ni lo uno ni lo otro XDXDXD
Fixed.
Yo también lo tuve :)
-----Actualizado-----
Supongo que habrá de todo en la viña del Señor.
Por supuesto.
Pero tengo la teoría aún sin demostrar de que, cuanto mejor sea una persona en su campo, peor es enseñando. Algunos por soberbia (y eso está a la orden del día en cuestiones de programación), otros porque dan por sentadas bases que los novatos no tienen, y otros porque se olvidan lo que se siente en esos primeros momentos y que no son capaces de ver esas estructuras que con los años parecen obvias.
Una cosa no va reñida con la otra. Un profe de la UMA que es bueno enseñando y en lo suyo es un crack: Manuel Ujaldón.
Y también tengo la teoría sin demostrar de que la mayoría de los profesores que acaban en academias privadas, son gente que va por el sueldo y les importan tres pepinos si los estudiantes aprenden o no. Ojo, que hay quien les importa que aprueben, porque les va el sueldo en ello, pero de aprobar a aprender va un trecho. Anda que no he visto pocos anuncios de "te ayudamos a aprobar", o de gente que yendo a una academia, los sacas del examen tipo, y se pierden.
No estoy de acuerdo con eso. He trabajado en publica, privada y concertada (ahora mismo estoy en privada) y no he visto eso en formación reglada (Academias no son formación reglada). En la privada se cobra menos (mucho menos) que en la pública o en la concertada por lo que lo del "cheque" no tiene mucho sentido.
A ver, todo se resume en la primera frase que has dicho: hay de todo (como en cualquier trabajo)
¿UMA? ¿De Málaga? Entonces hemos estado en la misma facultad... pero en módulos opuestos (o sea, como si no estuviéramos en el mismo sitio :D).
Ya digo que a los de Informática no los conozco, pero en Teleco hay de todo, hasta alguno que, si no fuera por la seriedad que se les impone, serían unos frikis de cuidado :D
Creo que fue en 2006 cuando acabó ardiendo el laboratorio de robótica :awesome:
Drumpi, cuando nos conocimos estuvimos hablando casi una hora en la puerta de la facultad de teleco-informática de la UMA y te conté todo esto ¿no te cuerdas? xDD
Por ejemplo: Métodos Numéricos siempre me dijeron que era la asignatura hueso. De hecho, es la única asignatura de la carrera que te permiten llevarte todos los apuntes que quieras (bueno, en física te permitían un formulario, pero sin palabras). Los tres primeros años que fui, en clase éramos 6 personas, y el profesor se jactaba (en broma) de tener el mayor porcentaje de alumnos aprobados. Yo no entendía nada de sus clases. Mis apuntes eran "aptdo 1.5.4.3, aptdo 1.5.4.5, aptdo 1.5.4.23".
El cuarto año me cambié de grupo, teníamos otro profesor, el aula llena, los apuntes pasaron de un tocho de 200 páginas a 5 temas de 4 a 8 páginas cada uno, y me enteraba de todo, incluso fue una asignatura que me encantó... muy surrealista, pero me encantó.
El problema en ese caso era del profesor (El señor Angel Santos que ya está jubilado y ahora se pasea por mi barrio con sus nietas). Ahí tienes un caso de una persona que manejaba muy bien su campo pero que luego usaba una metodología didáctica de la era de Franco.
Yo me la saqué tras pasar por una academia de esas de apoyo (Gauss o Unitec) y dejarme la pasta.
-----Actualizado-----
Yo he pasado por los dos perfiles en universidad pública y en privada. Ahora solo hago docencia. En ambas te pagan solo por la horas efectivas de docencia, el tiempo de preparación es cosa tuya. En mi caso: 4 horas a la semana (dos universidades, así que 2+2, asignaturas y lenguas diferentes en cada universidad) Así que ya tienes tú que pensar si el precio/hora de docencia te compensa también las horas de preparación. Ya os avanzo: esto se hace por vocación.
Dos verdades como dos templos.
Todavía no he encontrado ningún sitio donde tengan en cuenta el tiempo que gasta un profesor en su casa para preparar cosas de sus clases (mejorar temarios obsoletos, crear ejercicios, exámenes, corregir practicas ...) a lo largo del año. Y repito he pasado por publica y privada, tanto en Institutos de FP como en Universidades (UMA y EADE)
Por supuesto, si tienes un contrato por horas, entonces es que la docencia no es tu actividad principal. Así que las horas de preparación son en vacaciones de tu actividad principal no relacionada con la universidad. Por ejemplo, en mi caso, las preparaciones y correcciones de ejercicios las haré esta semana santa, y si se acumulan mucho, a las 21 horas de un día entre semana.
Llevo toda la semana corrigiendo una practica larga de programación. Me tiro unos 30 min por alumno usando pruebas unitarias y, por supuesto, mirando el código. Tengo unos 73 alumnos. Hagan sus cálculos. Por supuesto me queda preparar clases para el siguiente mes (yo soy de los "tontos" que grabo videos programando para que los chicos/as puedan repasar en casa)... con suerte, el fin de semana me pongo. Vocacion or nothing.
Sí que estoy de acuerdo en una cosa: hay profesores que no sabemos enseñar. En general, no hay "clases de profesor de universidad". Un día apareces en medio de una clase y, ale, a enseñar. Mis primeras clases debieron ser horribles. No digo que las actuales ya no lo sean, seguro que tengo mil vicios, pero ya tengo algo de experiencia y quiero pensar que a veces acierto. La única manera que ofrecen muchas universidades a los profesores para aprender a dar clases es la propia práctica de dar clases.
Pues a mi se me da muy bien. De echo dejé mi trabajo de programador en "super" empresas como Indra, Avannade o Accenture para dedicarme a esto. Al principio lo compaginaba, pero llega un momento en que no puedes llevar bien dos trabajos como esos (o al menos yo no supe hacerlo).
Y como ya he dicho, se gana MUCHO menos de profesor que de programador... pero oye, estoy haciendo lo que me gusta y me llena :) Suerte la mía que he podido (y puedo) elegir.
En ambas te pagan solo por la horas efectivas de docencia, el tiempo de preparación es cosa tuya.
¿Hay alguna rama de la docencia en la que te paguen por el tiempo de preparación? ¿O por el tiempo que pasas en casa corrigiendo ejercicios o exámenes? :D
No estoy de acuerdo con eso. He trabajado en publica, privada y concertada (ahora mismo estoy en privada) y no he visto eso en formación reglada (Academias no son formación reglada). En la privada se cobra menos (mucho menos) que en la pública o en la concertada por lo que lo del "cheque" no tiene mucho sentido.
Ojo que he dicho "academias privadas", tipo Gauss, Unitec y... no me acuerdo de más nombres ^^U De esas que te daban las carpetas de cartulina para guardar los apuntes :p
Drumpi, cuando nos conocimos estuvimos hablando casi una hora en la puerta de la facultad de teleco-informática de la UMA y te conté todo esto ¿no te cuerdas? xDD
Claro que me acuerdo de la conversación, y si no recuerdo mal aproveché para ir a por el título (que los de administración me mandaron un correo a una cuenta que ya no usaba :D).
Lo que pasa es que soy malísimo para recordar nombres, fechas y listas largas :D Seguro que me sé la secuencia completa de la mitad de los programas que he hecho en mi vida, pero no me preguntes por los nombres de algunos compañeros de la facultad :D
Espero que no te ofendas ^^U
El problema en ese caso era del profesor (El señor Angel Santos que ya está jubilado y ahora se pasea por mi barrio con sus nietas). Ahí tienes un caso de una persona que manejaba muy bien su campo pero que luego usaba una metodología didáctica de la era de Franco.
Yo me la saqué tras pasar por una academia de esas de apoyo (Gauss o Unitec) y dejarme la pasta.
No, el que yo tuve durante tres años fue el hermano de Carlos Guerrero (¿ves? ya ni me acuerdo de su nombre :D ¿Fernando?), que era el que me daba cálculo, y era "el hombre que hablaba a las funciones" (literalmente, todavía me acuerdo de él preguntando a la pizarra si la función es continua o no).
Ojalá me acordase de más nombres, pero entre mi inutilidad para aprendérmelos, y que esa época la pasé intentando meter toda la información de los temarios a marchas forzadas (y en sacar las prácticas de laboratorio, que eran 4'5 créditos a la semana, pero se llevaban horas y horas y horas...).
Yo no sé cómo lo hacéis los profesores para aprenderos los nombres de los alumnos... ¡y acordaros de ellos 10 años después!
Yo no sé cómo lo hacéis los profesores para aprenderos los nombres de los alumnos... ¡y acordaros de ellos 10 años después!
¿El qué?
En la RootedCon de este año (https://www.rootedcon.com/) se me acercaron varios ex-alumnos a saludar que yo juraría que no he visto en mi vida y parece que son del cuatrimestre pasado.
selecter25
13/04/2022, 17:25
Pues al final es oro puro el feedback que me está dejando el hilo, gracias a todos por participar con vuestras experiencias.
Yo también he sido y soy profesor (lengua extranjera) en centros públicos, privados, academias, particulares, orientadas a sectores muy específicos (actualmente trabajo con deportistas de alto rendimiento) y siempre he considerado que la docencia debe de ser un trabajo vocacional, al igual que un sanitario o alguien perteneciente a las fuerzas de seguridad del Estado.
Al final veo por vuestras experiencias, que la enseñanza en IT no es tan diferente a la de cualquier otro ámbito, hay profesores buenos, hay profesores malos, hay profesores currantes y los hay acomodados. Curiosamente no tuve estos problemas en la facultad o durante mi formación académica, tuve siempre la suerte de encontrarme con un elenco de profesores excelente.
En mi caso, el volver a sentarme en la silla de alumno me ha hecho ver que a día de hoy, la proporción profesores buenos/malos es cuanto menos desalentadora.
Por otra parte, los testimonios de Karkayu y de juanvvc me reconfortan, me alivia saber que no todo el mundo sigue las prácticas de mi profesor de programación, de hecho la metodología que describe Karkayu es la que yo esperaba seguir en las clases desde un principio.
No sabría decir si soy buen o mal profesor, pero sí sé que siempre he ejercido con vocación y responsabilidad. Aún ligado a un plan de estudios, siempre he renovado mis temarios anualmente (cada verano), y siempre los he adaptado a un contexto, pese a que los modal verbs siguen siendo modal verbs, no es lo mismo enseñárselos a Jonathan, alumno de 14 años de un instituto público, que a Manoli, de 72 años y alumna de un centro FPA. Y es en esta contextualización y renovación del contenido en donde yo aprecio el amor de un profesor a su profesión.
No quiero que Manoli abra una actividad, y vea un ejercicio de Hannah Montana. No quiero llegar a clase con un RadioCD Aiwa y encasquetar el "listening" de los juegos olímpicos de Atenas 2004. No quiero meter links de un blog o de Wikipedia como apuntes, ni tomar ejercicios prestados. No quiero que mis temarios sean un collage apolillado de profesores jubilados o incluso muertos.
Y desgraciadamente es todo lo que percibo en este DAM Semipresencial que estoy cursando, una dejadez y un desdén impresionante. Temarios obsoletos, llenos de paja y "superpuestos" (por ejemplo, el tema 1 de Sistemas Informáticos es exactamente el mismo que el tema 5 de Entornos de Desarrollo), links constantes a Wikipedia como apuntes, profesores que no corrigen, que no contestan, que los sacas del temario que llevan y no saben responder a nada.
Te hacen memorizar temas absurdos como estándares wifi, para que los recites como las preposiciones en los años 70, y te dan una lista de estándares de 2013 :lol2:. De qué sirve memorizar algo irrelevante que encuentras en 30 segundos en Google? En qué supuesto caso te resulta útil saber de memoria que el IEEE 802.11g llegó en 2003 y funciona sobre banda de 2.4Ghz???
En examen de primera evaluación de Sistemas Informáticos, el profesor puso el típico ejercicio de "detectar componentes, puertos y conectores de una placa base dado el nombre de placa" como parte del examen, pero para complicar artificialmente el asunto, no usó la imagen de una placa real, sino que puso un dibujo de esta en el que no se incluía ninguna leyenda. Pedía la leyenda exacta de este, si el conector era un RGB Aura Sync 2.0, no bastaba con indicar que era un conector RGB, tenías que conocer el nombre propietario que la marca le da a su iluminación RGB, y la versión utilizada dependiendo de la placa que fuese. Demencial :lol2: a la par que inútil en la vida real, como el 90% del temario que estamos viendo.
Como soy un tipo curioso, no convalidé Inglés Técnico solo para ver el temario que utilizaban. Pues bien, me encuentro con el típico temario de inglés A2/B1 adaptado a IT. No pinta mal, alguien se ha molestado en hacer lo que yo habría hecho, pensé. Hasta que te pones al asunto y ves que hablan de unidades Jaz (estándar de Iomega de finales de los 90), líneas RDSI, tarjetas gráficas AGP y demás lindezas. El bendito que lo adaptase, en paz descanse.
Por suerte o desgracia, conozco a la profesora de inglés, coincidí en un centro educativo para adultos y ella llevaba a otros grupos, una mujer muy maja de pueblecito. Por x o por y coincidimos en el centro, me reconoció y me dijo de tomar un café. Nos pusimos al día y llegó el momento, me preguntó que qué tal me parecía el temario. Le contesté que era una buena iniciativa el haberlo adaptado, muy correcto en cuanto a enseñanza de la lengua pero que me parecía obsoleto en cuanto al contenido de IT, que no vendría mal adaptarlo. Su respuesta fue que "ni siquiera ella entendía qué era una red LAN o WAN", como para ponerse a adaptarlo a algo más actual. También me dijo que otro profesor le llevaba el moodle (plataforma online) de su asignatura, porque ella no sabía ni loguearse.
Como estas, decenas de anécdotas en solo 6 meses. Como dice Karkayu, se gana más de programador que de profesor, pero es relativo, hay profesores que ganan mucho más de lo que merecen.
¿El qué?
En la RootedCon de este año (https://www.rootedcon.com/) se me acercaron varios ex-alumnos a saludar que yo juraría que no he visto en mi vida y parece que son del cuatrimestre pasado.
XDXDXD
A mi me pasa igual, el servicio de reconocimiento de caras lo suelo tener desactivado y no me doy cuenta cuando me cruzo con gente que "conozco"
Ja! No me había fijado en que hay fotos de menda presentando: https://www.flickr.com/photos/_rooted/51683208474/
¿El qué?
En la RootedCon de este año (https://www.rootedcon.com/) se me acercaron varios ex-alumnos a saludar que yo juraría que no he visto en mi vida y parece que son del cuatrimestre pasado.
Pues mira que pasa gente por mi facultad (clases de casi 100 alumnos cada año, espacios tan enormes que es raro el profesor que no usa micrófono), pero al ir a por el título, 10 años más tarde, me encontré a mi profesor de Sistemas Electrónicos ¡y me preguntó por cómo me iba! Me reconoció aun con el cambio de look de estos años.
Pues al final es oro puro el feedback que me está dejando el hilo, gracias a todos por participar con vuestras experiencias.
Es cierto, estamos desvirtuando el hilo. ¡Que alguien borre los mensajes offtopic y volvamos a lo que estábamos al principio! :awesome:
Aquí, traumas con los profesores, lo que más :D
Y desgraciadamente es todo lo que percibo en este DAM Semipresencial que estoy cursando, una dejadez y un desdén impresionante. Temarios obsoletos, llenos de paja y "superpuestos" (por ejemplo, el tema 1 de Sistemas Informáticos es exactamente el mismo que el tema 5 de Entornos de Desarrollo), links constantes a Wikipedia como apuntes, profesores que no corrigen, que no contestan, que los sacas del temario que llevan y no saben responder a nada.
Yo di un curso de Analista Programador, orientado a ingenieros en paro. Si al temario de esos dos meses, le quito lo que se aprende en un curso de programación básica, y lo que aprendí por mi cuenta de un "curso" online de Java, sólo aproveché tres semanas, que fue la parte de OOP. Del tema "análisis" ni rastro.
También dí un curso de fibra óptica, y cuando llegó la hora de "buscar el hilo" que había que conectar (van numerados según un estándar), nos empezó a hablar sobre contar los de fuera, restar uno, sumar los de... Total cuando yo le pregunto por una forma de hacerlo según un sencillo cálculo matemático que se hace en tres segundos, me dice que no da lo mismo (sí que lo daba), y que lo hiciéramos a su manera ¬¬U
En resumen, que en mi experiencia, la enseñanza reglada pública me ha dado mejores resultados, de lejos, respecto a cursos, academias y clases privadas... Pero también es verdad que esos cursos están orientados a gente que no sabe nada del tema, y partimos desde muy abajo, cosa que es MUY frustrante cuando ya tienes una base.
Por suerte o desgracia, conozco a la profesora de inglés, coincidí en un centro educativo para adultos y ella llevaba a otros grupos, una mujer muy maja de pueblecito. Por x o por y coincidimos en el centro, me reconoció y me dijo de tomar un café. Nos pusimos al día y llegó el momento, me preguntó que qué tal me parecía el temario. Le contesté que era una buena iniciativa el haberlo adaptado, muy correcto en cuanto a enseñanza de la lengua pero que me parecía obsoleto en cuanto al contenido de IT, que no vendría mal adaptarlo. Su respuesta fue que "ni siquiera ella entendía qué era una red LAN o WAN", como para ponerse a adaptarlo a algo más actual. También me dijo que otro profesor le llevaba el moodle (plataforma online) de su asignatura, porque ella no sabía ni loguearse.
Juer, es que yo me compadezco de la pobrecita, vaya COMBO que le has hecho: profesora, en inglés, y de informática :lol:
Entre que hay "profesores" que no saben del tema que están impartiendo, que hay gente que el inglés que se sabe es el que hay en el libro, y la cantidad de gente que de informática sabe lo justo para mandarle el vídeo de los gatitos a "todo el mundo"... :quepalmo:
Se supone que donde aprendes a enseñar es en la carrera de magisterio ¿no? No tengo que contar otra vez las anécdotas de mis compis de residencia de magisterio :D
selecter25
13/04/2022, 22:23
Es cierto, estamos desvirtuando el hilo. ¡Que alguien borre los mensajes offtopic y volvamos a lo que estábamos al principio! :awesome:
Aquí, traumas con los profesores, lo que más :D
Juer, es que yo me compadezco de la pobrecita, vaya COMBO que le has hecho: profesora, en inglés, y de informática :lol:
Entre que hay "profesores" que no saben del tema que están impartiendo, que hay gente que el inglés que se sabe es el que hay en el libro, y la cantidad de gente que de informática sabe lo justo para mandarle el vídeo de los gatitos a "todo el mundo"... :quepalmo:
Se supone que donde aprendes a enseñar es en la carrera de magisterio ¿no? No tengo que contar otra vez las anécdotas de mis compis de residencia de magisterio :D
Para nada, el primero que insertó aquí sus traumas y desventuras fui yo, todo lo que contáis es interesante. Si me atasco en alguna entrega ya os volveré a llorar :D.
Más que dar informática en inglés, está dando inglés "tematizado" con cosas aleatorias de informática, es súper sencillo. Es la misma gramática simple de la ESO, pero en los ejercicios de vocabulario, los audios y demás se introducen elementos muy simples relacionados con la informática. Vamos, que si te tienen que enseñar a escribir un mail, lo tendrás que enviar a un servicio técnico explicando que tienes X problema con X dispositivo.
A mí pena 0, la asignatura es Inglés Técnico, y consiste en eso. De hecho, hay centros en los que sí se imparte una asignatura de segundo en inglés, y se convalida. Si no te ves capaz, no la impartas. Sin ir más lejos mi trabajo ahora consiste en enseñar inglés enfocado a segmentos muy específicos (ahora estoy con médicos deportivos de alto rendimiento), por lo que me toca empollar desde mecánica de fluidos, hasta microbiología de los alimentos y no me quejo.
Además, un FP a nivel semipresencial implica que debes manejarte con la plataforma online que se facilita (en la Comunidad Valenciana es moodle, y ahora migran a Teams). La plataforma viene "preconfigurada" para que el curso que viene, el profesor de turno le dé a un botón y se vuelvan a abrir temarios, entregas y demás automáticamente. Pues bien, más de la mitad no sabe ni cambiar un plazo de entrega de un ejercicio, ni borrar siquiera entradas de otros años. Aquí un ejemplo de lo que veo cuando abro la asignatura de Lenguajes de marcas (enlaces a exámenes de 2020 ):
https://i.imgur.com/t7iKhZV.jpg
Con esto es normal que se acomoden, el que no sabe porque no sabe, y el que sabe no quiere porque el que no sabe no hace nada. Este supuestamente es el año de transición de moodle a Teams, y la Generalitat les ha dado un plazo para migrar todo el contenido a la nueva plataforma. Adivinad cuántos profesores lo han hecho... Solo 1.
Ja! No me había fijado en que hay fotos de menda presentando: https://www.flickr.com/photos/_rooted/51683208474/
Casi sales poniendo morritos XD
Yo no me considero del todo tonto en tecnología...
Moodle es la cosa más incómoda y antiusable de configurar que te puedes encontrar. Decenas de clicks y diálogos para crear un nuevo tema en un curso. Si le dedicas tiempo te acabas apañando, pero es tiempo que le quitas a todo lo demás y da mucha rabia perderlo para pelearse con algo que no tendría ni que notarse que está.
selecter25
14/04/2022, 01:20
Yo no me considero del todo tonto en tecnología...
Moodle es la cosa más incómoda y antiusable de configurar que te puedes encontrar. Decenas de clicks y diálogos para crear un nuevo tema en un curso. Si le dedicas tiempo te acabas apañando, pero es tiempo que le quitas a todo lo demás y da mucha rabia perderlo para pelearse con algo que no tendría ni que notarse que está.
En eso tienes toda la razón, la plataforma es un desastre, aunque estoy seguro de que pese a las dificultades, como te importa tu trabajo has acabado haciéndolo. En el peor de los casos, no cuesta nada pedir ayuda. No digo que sean tontos, pero hay gente muy vaga.
En mi centro sé de primera mano que el 90% de los profesores no ha tocado absolutamente nada del temario en varios años, la mayoría usa el temario de Miguel Orrico, profesor que ya no está en el centro. Muchos de ellos me lo han contado sin pudor alguno, lo asumen como algo normal, en otras asignaturas lo sé porque hace muuuchos años hice SMR semipresencial en el mismo centro, y a día de hoy se reciclan temarios y vídeos (tengo un familiar haciendo SMR ahora allí) para Sistemas Informáticos. No es casualidad que nos obliguen a utilizar máquinas virtuales con Ubuntu 16 o Windows 7, conservan todos los tutoriales desde 2016 y no quieren actualizar, pese a que todos tenemos licencia Azure.
Y lo realmente importante no es que se lleven el sueldo muerto, ni que tuviese grandes expectativas puestas en el curso, por encima de todo me entristece mucho ver que la gente no aprende y se desmotiva.
Y desgraciadamente es todo lo que percibo en este DAM Semipresencial que estoy cursando, una dejadez y un desdén impresionante. Temarios obsoletos, llenos de paja y "superpuestos" (por ejemplo, el tema 1 de Sistemas Informáticos es exactamente el mismo que el tema 5 de Entornos de Desarrollo), links constantes a Wikipedia como apuntes, profesores que no corrigen, que no contestan, que los sacas del temario que llevan y no saben responder a nada.
Te hacen memorizar temas absurdos como estándares wifi, para que los recites como las preposiciones en los años 70, y te dan una lista de estándares de 2013 :lol2:. De qué sirve memorizar algo irrelevante que encuentras en 30 segundos en Google? En qué supuesto caso te resulta útil saber de memoria que el IEEE 802.11g llegó en 2003 y funciona sobre banda de 2.4Ghz???
En examen de primera evaluación de Sistemas Informáticos, el profesor puso el típico ejercicio de "detectar componentes, puertos y conectores de una placa base dado el nombre de placa" como parte del examen, pero para complicar artificialmente el asunto, no usó la imagen de una placa real, sino que puso un dibujo de esta en el que no se incluía ninguna leyenda. Pedía la leyenda exacta de este, si el conector era un RGB Aura Sync 2.0, no bastaba con indicar que era un conector RGB, tenías que conocer el nombre propietario que la marca le da a su iluminación RGB, y la versión utilizada dependiendo de la placa que fuese. Demencial :lol2: a la par que inútil en la vida real, como el 90% del temario que estamos viendo.
Como soy un tipo curioso, no convalidé Inglés Técnico solo para ver el temario que utilizaban. Pues bien, me encuentro con el típico temario de inglés A2/B1 adaptado a IT. No pinta mal, alguien se ha molestado en hacer lo que yo habría hecho, pensé. Hasta que te pones al asunto y ves que hablan de unidades Jaz (estándar de Iomega de finales de los 90), líneas RDSI, tarjetas gráficas AGP y demás lindezas. El bendito que lo adaptase, en paz descanse.
Por suerte o desgracia, conozco a la profesora de inglés, coincidí en un centro educativo para adultos y ella llevaba a otros grupos, una mujer muy maja de pueblecito. Por x o por y coincidimos en el centro, me reconoció y me dijo de tomar un café. Nos pusimos al día y llegó el momento, me preguntó que qué tal me parecía el temario. Le contesté que era una buena iniciativa el haberlo adaptado, muy correcto en cuanto a enseñanza de la lengua pero que me parecía obsoleto en cuanto al contenido de IT, que no vendría mal adaptarlo. Su respuesta fue que "ni siquiera ella entendía qué era una red LAN o WAN", como para ponerse a adaptarlo a algo más actual. También me dijo que otro profesor le llevaba el moodle (plataforma online) de su asignatura, porque ella no sabía ni loguearse.
Los temarios de los ciclos DAM/DAW son de 2010. Se pueden ver en el BOE.
Como todos sabemos, 12 años son una barbaridad en informática, así que parte de culpa también la tiene nuestros políticos (del color que sean). Pero como bien dices, es labor del profesor adaptar temario y ejercicios a los grupos de cada año. Solo "los tontos" hacemos eso (lo de "tontos" es porque me lo han dicho ya en varios sitios. Compañeros. Sobre todo en la pública. "tonto" o "novato").
Por otro lado, yo aún no he encontrado ningún curso online o semiprecencial que de correctamente los ciclos superiores de informática de FP. OJO, no digo que no exista, digo que en todo lo que llevo de profe, todos los que conozco son parecidos a lo que describe selecter25.
-----Actualizado-----
En mi centro sé de primera mano que el 90% de los profesores no ha tocado absolutamente nada del temario en varios años, la mayoría usa el temario de Miguel Orrico, profesor que ya no está en el centro. Muchos de ellos me lo han contado sin pudor alguno, lo asumen como algo normal, en otras asignaturas lo sé porque hace muuuchos años hice SMR semipresencial en el mismo centro, y a día de hoy se reciclan temarios y vídeos (tengo un familiar haciendo SMR ahora allí) para Sistemas Informáticos. No es casualidad que nos obliguen a utilizar máquinas virtuales con Ubuntu 16 o Windows 7, conservan todos los tutoriales desde 2016 y no quieren actualizar, pese a que todos tenemos licencia Azure.
Si no cambian el temario ¿por qué van a cambiar ellos? Hacen lo que dice la ley, no?? (lease con sarcasmo, of course)
Es lo que tiene la pública: salvo que agreda a un alumno o algo similar, es muy difícil echar a un profesor/a. Aunque se rasque los wevos/el higo.
En eso gana la privada: no rindes, a tu casa.
Todo tiene sus cosas buenas y malas, por eso me hace gracia cuando unos dicen Publica Win!! o Privada Win!! Salvo por temas de sueldo, a día de hoy yo no sabría por cual decantarme, la verdad.
Es que no tiene mucho sentido que para un puesto publico tengas que sacarte unas oposiciones y una vez que lo has conseguido no miren tu rendimiento cada cierto tiempo, dependiendo de la persona que seas, una vez asegurado tu puesto te dedicaras a rascarte los eggs.
Tal vez una solución sea ponerles un sueldo bajo (rozando el mínimo?) pero si rinden bien, cobrar mas. Aunque para eso habría que contratar a mas gente que mida el rendimiento y eso seria aun mas gastos, ademas que quien te dice que esa persona no hace trampas...
Eso funciona exactamente así, se llaman "sexenios" y la agencia que los evalúa es la ANECA. No se hacen trampas, pero sí que se priorizan las acciones que te dan puntos de cara a la ANECA y se deja para más tarde las cosas que no dan puntos (aunque sean necesarias)
También es la razón por la que los temarios no pueden variar mucho, al menos sobre el papel: si la ANECA en su infinita sabiduría decide que has cambiado tanto el temario que es una asignatura diferente a la que ellos han aprobado, le pueden retirar a la universidad la capacidad de ofrecer el título.
selecter25
14/04/2022, 18:24
Los temarios de los ciclos DAM/DAW son de 2010. Se pueden ver en el BOE.
Como todos sabemos, 12 años son una barbaridad en informática, así que parte de culpa también la tiene nuestros políticos (del color que sean). Pero como bien dices, es labor del profesor adaptar temario y ejercicios a los grupos de cada año. Solo "los tontos" hacemos eso (lo de "tontos" es porque me lo han dicho ya en varios sitios. Compañeros. Sobre todo en la pública. "tonto" o "novato").
Por otro lado, yo aún no he encontrado ningún curso online o semiprecencial que de correctamente los ciclos superiores de informática de FP. OJO, no digo que no exista, digo que en todo lo que llevo de profe, todos los que conozco son parecidos a lo que describe selecter25.
-----Actualizado-----
Si no cambian el temario ¿por qué van a cambiar ellos? Hacen lo que dice la ley, no?? (lease con sarcasmo, of course)
Es lo que tiene la pública: salvo que agreda a un alumno o algo similar, es muy difícil echar a un profesor/a. Aunque se rasque los wevos/el higo.
En eso gana la privada: no rindes, a tu casa.
Todo tiene sus cosas buenas y malas, por eso me hace gracia cuando unos dicen Publica Win!! o Privada Win!! Salvo por temas de sueldo, a día de hoy yo no sabría por cual decantarme, la verdad.
Es que es un problema gordo, no estamos hablando de asignaturas como Historia o Física, es un sector en el que prácticamente en 1 año, si no te actualizas estás obsoleto. Y cuando digo modificar o revisar, no me refiero a cambiar drásticamente la asignatura hasta el punto de que el temario no sea reconocible, me refiero a eso, a mantener el temario pero con conceptos y software actualizados.
Recuerdo ya que en SMR (2018) estas cosas pasaban mucha factura. En la asignatura de Aplicaciones Ofimáticas, estábamos obligados a usar Libreoffice. Pues bien, cada tema incluía videotutoriales con versiones totalmente diferentes de este, algunas de más de 5 años de antigüedad. El resultado era siempre el mismo: Costaba más localizar dónde estaba "X" opción en la versión actual (si es que no se había suprimido o modificado) que hacer el ejercicio en sí. A veces el caos era tal, que el profesor se veía obligado a rehacer el ejercicio, muchas veces modificando o suprimiendo apartados.
En el resto de asignaturas, no era diferente.
En Sistemas Operativos en Red, funcionando con Windows Server 2008 la mitad del curso, todo por no actualizar las clases a una versión más reciente. La siguiente mitad, alternamos entre 2008 y 2016 porque algunos tutoriales no los encontraba en la versión 2008. Lo mismo en Sistemas Operativos Monopuesto, Windows 7 y Ubuntu 16.
En Seguridad Informática, las aplicaciones que tratábamos eran para Windows XP, muchas ya difuntas y sin soporte. En Linux, tirando con una OVA de Kali Linux de 2014.
Lo mismo en Montaje y Mantenimiento de Equipos, piezas de museo (esto es más entendible, educación pública). Recuerdo que la gente más inexperta analizaba las placas y anotaba las ranuras ISA y muchos compañeros me preguntaban: "Esto qué es? Para qué se usa ahora" Yo no sabía si pincharles el globo o no. Lo grave venía cuando abrías los temarios y veías que se estaba estudiando hardware y estándares de 2008 como los más actuales.
Pasamos a Xarxes Locals. Sí, habéis leído bien, Xarxes Locals. El profesor era (es, aún ejerce en el centro) un señor rancio e independentista valenciano que impuso el dialecto en la asignatura. Podías hablarle en castellano, pero él siempre te contestaba en "valencià", un valenciano petardero de pueblo de la comarca lleno de castellanismos y que me hacía pitar los oídos. Los ejercicios, todos resueltos en valenciano, por supuesto. Apuntes de la uni de Barcelona y "Viquipèdia". Tant se me'n dòna, vaig pensar des de la tranquil·litat de tenir a les meues mans el títol de C2. Pero algunos compañeros (que venían de otras CCAA) ese hándicap les hizo abandonar directamente la asignatura. Que no fue el único hándicap, el profesor no sabía hacer la mitad de sus ejercicios y prácticas, así que tenías ejercicios de subnetting VLSM mal resueltos, o prácticas en las que no era capaz de crimpar un cable de red y lo achacaba al material que le había proporcionado el centro.
Recuerdo que en esta última asignatura, un compañero (un valiente) granaíno que ahora está picando en NTT Data, se quedó a pesar de no conocer ni papa de valenciano. Lo gracioso fue que al final de curso, confesó que el valenciano había sido el menor de sus problemas.
Y así podría seguir con el 90% de asignaturas, en todas ocurría lo mismo excepto en un par, curiosamente las que llevaba el señor que mencioné, Miguel Orrico. El tipo volvía a repetir todos y cada uno de sus vídeos año tras año, asegurándose de que todo funcionaba bien en las últimas versiones de todo lo que usaba. Las tutorías las hacía todas desde 0, el tipo volaba manejando el servidor Apache o cualquiera que fuese el tema a tratar sin traer nada hecho de casa, resolvía cualquier tipo de duda al instante, improvisaba nuevos supuestos, se le veía muy implicado y sobre todo disfrutar con su trabajo.
Curiosamente todos estos episodios los he vivido en formación profesional y en el mismo centro, tanto en la facultad como en mis estudios primarios nunca he tenido queja de ningún profesor@.
Evidentemente no se puede pedir a todos los profesores un nivel de erudición y de amor a la docencia como los de Miguel Orrico (ni siquiera yo los tengo, como para pedirlos), pero al mismo tiempo considero que tampoco se puede estar en las antípodas, que es lo más común que me he encontrado desde que volví a la silla del alumno en 2016.
Recuerdo ya que en SMR (2018) estas cosas pasaban mucha factura. En la asignatura de Aplicaciones Ofimáticas, estábamos obligados a usar Libreoffice. Pues bien, cada tema incluía videotutoriales con versiones totalmente diferentes de este, algunas de más de 5 años de antigüedad. El resultado era siempre el mismo: Costaba más localizar dónde estaba "X" opción en la versión actual (si es que no se había suprimido o modificado) que hacer el ejercicio en sí. A veces el caos era tal, que el profesor se veía obligado a rehacer el ejercicio, muchas veces modificando o suprimiendo apartados.
La Junta de Andalucía trabaja con LibreOffice/OpenOffice de forma oficial, por lo que el problema que comentas se da también en esta comunidad.
Lo mismo en Montaje y Mantenimiento de Equipos, piezas de museo (esto es más entendible, educación pública). Recuerdo que la gente más inexperta analizaba las placas y anotaba las ranuras ISA y muchos compañeros me preguntaban: "Esto qué es? Para qué se usa ahora" Yo no sabía si pincharles el globo o no. Lo grave venía cuando abrías los temarios y veías que se estaba estudiando hardware y estándares de 2008 como los más actuales.
Por mi experiencia te diré que eso no va a cambiar a corto plazo. Al menos en la pública de Andalucía.
Lo más moderno que he visto en esas clases han sido placas de Core-i de 1º generación. ISA la verdad que poquitos. Mucho Core2Duo y Pentium 4, eso sí.
El problema es que no dan presupuesto para gastarlo en piezas y hay que confiar en las donaciones de profesores o alumnos.
En el instituto privado en el que estoy este año han re-comprado PC usados de oficinas con i3-i5 de 7a generación y han llenado el taller. Antes estaban igual, tirando de cosas que los profesores frikis del cacharreo nos llevábamos a clase.
Hasta donde yo sé, a los funcionarios se les suele dar un plus por productividad, pero el caso que yo conozco se lo dan al equipo de la provincia que más carnets produce.
Y algo de eso también hay en la enseñanza, pero ¿cómo mides la productividad del profesorado? ¿examinas el temario? ¿las horas de clase y tutorías que dan? ¿el tiempo que dedican en casa a corregir ejercicios y exámenes, o a preparar la clase del día siguiente? No, lo hacen por las notas de los alumnos: a mejores notas, mejores recompensas, y he visto en muchos casos cómo han rebajado la dificultad de algunas asignaturas "complicadas" para llegar al mínimo. Pero supongo que tiene que ver más con otra cosa que con medir el rendimiento.
Pero que los profesores no se adapten a nuevas tecnologías no es algo nuevo. Conozco muchísimos profesores que no se meten de cabeza con un programa nuevo hasta que no les queda más remedio (o sea, que les obligan), y luego pasa lo que pasa, que al no haber ido usando la herramienta durante el "tiempo de adaptación", todo son dudas "de última hora".
Tampoco soy el más indicado para criticar esta forma de pensar, al fin y al cabo, yo también tiro de SW obsoleto y nunca uso la última versión "por si los bugs" :D Pero hay gente que, si por ella fuera, seguirían mandando notas a los padres escritas a mano.
También es cierto que hay un problema de adopción tecnológica: hay padres/alumnos que no se pueden permitir el acceso a determinados dispositivos, léase un portátil con potencia suficiente, un móvil que ejecute la última versión de la APP, o acceso a la red (yo, cuando estudiaba en Málaga: había pisos que no tenían ni línea telefónica, o caseros que se negaban a contratar un ISP... Hubo cursos enteros que dependía enteramente de los ordenadores de la biblioteca, y cuanto más se informatizaba la escuela, a menos contenido tenía yo acceso). Luego hay centros que no tienen dinero para ello: mi instituto puso un ordenador en la biblioteca, y sólo estaba libre cuando algún alumno le metía un virus (el 85% del tiempo)... o aquel año que dijeron que iban a poner un ordenador por alumno en los talleres para hacer simulación de circuitos electrónicos... y pusieron un único ordenador entre los 8 talleres, y la única práctica que lo usaba se tenía que hacer por turnos (una práctica muy sencilla de puertas lógicas en Step5, que sólo completamos los tres alumnos que nos dio tiempo a llegar a ella).
El año que dejé de ir a la facultad (terminé el año siguiente en casa con el TFC) acababan de cambiar los entrenadores de 68K por otros que ya se programaban en C, lo cual era una lástima porque era la única asignatura que se usaba ASM de forma práctica (y te comía todo el cuatrimestre entero, porque era ASM y un circuito conectado a sendos puertos GPIO de 32 bits, una pasada :D). Pero los alumnos de primer año seguían teniendo ordenadores 486 (y algún Pentium suelto) en el laboratorio para hacer simulaciones y eso sí que era un número: el editor de circuitos tenía una versión, y el simulador otra diferente, y había que hacer una cabriola para poder usar el fichero del primero en el del segundo, y luego imprimir pantalla para copiar los resultados del osciloscopio en el paint y guardarlos en BMP en disquetes de 3 1/2 (yo tuve que hacerlo en 2004, pero alguno tuvo que hacerlo en 2007).
El resto de laboratorios ya tenían equipos más modernos, pero no dejaba de ser un contraste interesante, cuando en el mismo laboratorio tenían osciloscopios con medidores en pantalla, fuentes de alimentación de 50V con precisión de mV, generadores de onda con protección de cortocircuito (al menos, comparados con los equipos de la FP, eran un lujo de equipos... pero no tenían cables, los tenías que traer tú... en la FP al menos dedicabas la primera clase a arreglar los cables que te dejaba el alumno del año anterior, y los materiales los pagaba el centro).
Respecto a LibreOffice, yo estuve un tiempo trabajando con OpenOffice... pero a nivel de XML, porque teníamos que hacer verificación de documentos. Creo que se adoptó ese formato porque era fácil de leer, no dependía de librerías licenciadas de formatos privativos, etc. Además, que se ahorraban tener que comprar licencias. Incluso se hablaba de cambiar todos los equipos a Linux. De hecho, estuve testeando una de las primeras versiones de Guadalinex (creo que era la 3.algo, allá por... ¿2012?), una versión muy rara que venía en dos versiones: la de administrador y la de terminal... se suponía que la de administrador podía instalar aplicaciones y drivers en las terminales, pero aquello no funcionó hasta que me pasaron la segunda o tercera versión... una semana después de empezar las pruebas (como novato que era, me llevé yo las culpas de que aquello no funcionara, claro... Si lo hubiera sabido hubiera puesto un negativo en el informe y el marrón se lo llevaban los desarrolladores, pero como soy tan cabezota y a mi un ordenador no me decía que no funcionaba... :P).
Bueno, corto el rollo que me extiendo demasiado :D
...a menos que no os importe :p
selecter25
23/05/2022, 10:38
Vuelve míster patoso, esta vez problemas gordos. No comenté nada, pero en la anterior práctica (Java Swing) al profesor le gustó mi propuesta de hacer una calculadora, con máquina de estados, tropecientos elementos y perrerías varias. Contra todo pronóstico salió bien.
Pero no todo va a ser gloria. Ahora llega la última práctica antes del examen, y se me ha hecho bola. Le he dado miles de vueltas, he pagado a una amiga con Ingeniería y experiencia de más de 25 años para que me oriente, y no ha sabido ayudarme, se ha limitado a ponerse nerviosa y mandarme enlaces de stackoverflow que nada tenían que ver con el caso :D. Quedamos 4 personas en el ciclo formativo, estoy bastante agobiado, la gente cae como moscas. El problema es que si no entrego la práctica antes de que acabe el día 25, pierdo el derecho a examen, aunque tenga aprobadas las dos primeras evaluaciones con 9 y 10, y aunque el resto de prácticas estén perfectas. No encuentro a nadie que pueda hacer o explicarme el ejercicio, ni pagando, es muy triste.
No he recurrido a la sabiduría de los gurús geperos antes porque me siento un pesado y un inútil a partes iguales, pero si alguien me echa una mano y acabo la maldita práctica, le compensaré con unas birras virtuales, un juego, una almohada waifu, le pago sus horas como profesional o lo que sea.
La práctica es una app que sigue el modelo MVC. Básicamente se conecta a una base de datos local (en Xampp) y muestra las diferentes tablas de esta. El funcionamiento es este:
https://www.youtube.com/watch?v=zkIhv33VLBI
- Las vistas las tengo hechas (de aquella manera).
- Entiendo que el siguiente paso es generar el modelo con los métodos para conectar, desconectar, sentencias SQL y luego los controladores.
- El problema principal es que no sé manejar los listeners desde sus respectivos controladores, sé manejarlos desde la propia vista, sé poner las fuentes en escucha para el controlador, pero no sé manejarlos desde estos. He intentado ya tropecientasmil cosas y estoy frito.
Esto es todo lo que el profesor me ha proporcionado para hacer el ejercicio (ejercicio resuelto "similar", es el ejercicio 4):
https://drive.google.com/file/d/1Tr4CejxkKuUDrUCE5omNdUTgeoByJgD_/view?usp=sharing
Si alguien quiere echarme una mano y consigo acabarla, le pago sus horas religiosa y generosamente. Os dejo mi basura, para que veáis lo que llevo hecho:
https://github.com/Suarking/BDDApp
Si por lo que sea no tenéis tiempo o ganas, y conocéis a alguien que sepa manejar el tema y que pueda echarme un hantebraso previo pago, mandadme privado.
¿Donde tienes problemas al hacer que funcione con un interfaz gráfico en vez de algo por linea de comandos?
Los listeners supongo que serán un observador que se llamara cuando se hace algo, o sea le pasas una función para que el código llame cuando pase algo (botón pulsado por ejemplo).
Yo suelo hacer la parte del interfaz "tonta", o sea le paso parámetros tipo string, int o float y esta los muestra, en caso de devolver algo tambien se devuelven usando esos tipos, así no hay dependencias entre la aplicación y la parte gráfica (no le pasas estructuras dependientes de la aplicación).
¿Con que podría ejecutar el codigo? ¿Eclipse + Java? Es que soy de C++ XD
selecter25
23/05/2022, 11:49
¿Donde tienes problemas al hacer que funcione con un interfaz gráfico en vez de algo por linea de comandos?
Los listeners supongo que serán un observador que se llamara cuando se hace algo, o sea le pasas una función para que el código llame cuando pase algo (botón pulsado por ejemplo).
Yo suelo hacer la parte del interfaz "tonta", o sea le paso parámetros tipo string, int o float y esta los muestra, en caso de devolver algo tambien se devuelven usando esos tipos, así no hay dependencias entre la aplicación y la parte gráfica (no le pasas estructuras dependientes de la aplicación).
¿Con que podría ejecutar el codigo? ¿Eclipse + Java? Es que soy de C++ XD
Sí, basicamente el actionlistener pone a un objeto en escucha de un controlador, y este le dice lo que tiene que hacer al ser pulsado. Haciendo la calculadora no tuve problemas, lo metí el actionlistener en la misma clase de la vista a lo bestia y listo. El problema principal es que no sé cómo controlar cada ventana desde su respectivo controlador en un paquete y clase distintos.
En el código, le paso el control del siguiente botón al controlador correspondiente (MainWindowControl):
optionConectar.addActionListener(new MainWindowControl(this));
A partir de ahí me cago encima, no sé cómo gestionarlo en el controlador. Anteriormente lo he gestionado desde la misma vista (en la calculadora), por ejemplo en este caso sería:
optionConectar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
SubwindowConnection subSPL = new SubwindowConnection();
}
});
Y el botón optionConectar abriría la subventana de conexión, peeero no estoy respetando el diseño MVC, eso tiene que gestionarlo el controlador.
Está hecho en Netbeans, imagino que con cualquier IDE Java chutará. Para que chute la conexión con el servidor en Xampp hace falta meterle el driver pertinente en las librerías (mysql-connector-java-8.0.29.jar). Lo adjuntaría pero asumo que nadie utiliza Güindous aquí. La BDD que uso es esta:
https://drive.google.com/file/d/1KtfFEuGTzBFHtlmspLOwusc5JU4Ir7te/view?usp=sharing
El problema viene en gestionar todo con el MVC. Más o menos sé qué hacer pero no cómo.
La parte de las vistas no hay problema, más o menos chapucera salieron bien. Están ambas en el código del Github, un Jframe principal (hecho a mano, no nos deja usar la herramienta GUI) trampeando layouts :D con varios paneles en donde se gestionan X cosas, y una subventana (otro JFrame, aunque está desaconsejado) donde se maneja la conexión al servidor MySQL.
En el Modelo se hacen los métodos estáticos que se utilizan para conectar al servidor, para desconectar, para usar X tabla y para realizar X consulta (solo se muestran tablas).
La parte del controlador es la más problemática, es la que se encarga de escuchar a las ventanas y realizar las acciones pertinentes en cada una de ellas (en la principal básicamente las opciones del menú superior (instanciar una subventana de conexión, desconectar, abrir la BDD que introduzcamos en el jtextfield pertinente, lo mismo con la tabla...). Una vez accede a la bdd, carga las tablas existentes y mediante el combobox o introduciendo el nombre de tabla en el Jtextfield, muestra la tabla.
El controlador de la subventana se encarga de realizar la conexión, muestra un estado en la parte central si se puede conectar o no, y si lo hace pasa la información de credenciales a las etiquetas del panel de la ventana principal. Las credenciales de la conexión las pilla de los JTextfield pertinentes de la subventana de conexión. El password es indiferente, no lo vamos a usar. El puerto lo he cambiado en mi ejemplo porque tengo rulando otro servidor en el que utiliza el MySQL de Xampp por defecto (3306).
Paralelamente, hay que gestionar que los elementos y paneles de la ventana principal se activen o desactiven dependiendo del estado en el que nos encontremos (una pequeña máquina de estados).
El vídeo lo explica más o menos bien para lo poco que explica siempre, y el ejercicio resuelto 4 es similar, solo que mucho más simplificado.
Bajando el netbeans, me ha dicho que necesito la versión de java 8.. que es la que tengo instalada :P Creo que es porque no tengo el JDK pero si que tengo el JRE.
Que peñazo de java.
selecter25
23/05/2022, 12:51
Bajando el netbeans, me ha dicho que necesito la versión de java 8.. que es la que tengo instalada :P Creo que es porque no tengo el JDK pero si que tengo el JRE.
Que peñazo de java.
Exacto, será por el JDK. Coincido, yo empecé el curso con bastantes ganas, y Java me ha hundido en la más absoluta miseria. Y eso que lo poco que sabía era C# orientado a Unity y lo disfrutaba, pero esto es una tortura constante.
Lo siento, no me he enterado de nada y eso que fui profesor de Java hace unos años.
Por si te vale, has probado lanzar un evento desde dentro de tu listener? El controlador debería capturar ese evento y gestionarlo con otro listener.
Imagino que sabes siempre puedes crear tus propios eventos con el nombre que quieras y lanzarlos cuando lo consideres
Ufff, una cosa es echarte una mano con un algoritmo que en 15 o 20 minutos se puede resolver, y otra muy distinta es meternos en Swing y BBDD ^^U
Tengo el Java tremendamente oxidado, y recuerdo que la interfaz de Java (Swing) era la muerte a pelizcos, cuestión de prueba y error. He tenido menos problemas en adaptarme a HTML que a eso, con eso lo digo todo :D
No sé si te podré echar un cable esta vez, pero al menos intentaré darte ánimos :D Java, si no fuera porque es multiplataforma, hace años que habría desaparecido. A mi incluso me decían que no me pelease demasiado con la interfaz porque los proyectos que hacíamos, al final, implementarían formularios HTML, así que si has llegado hasta aquí es para sentirse orgulloso.
Y lo de que hayais quedado 4... bueno, es normal. Ya comenté que para programar hay que tener el cerebro configurado de una forma rara, y tener ese punto de friki-locura, y no todo el mundo lo tiene. Si en Teleco suspendían un 40% de los estudiantes, ni te cuento en un curso de varias semanas. Pero no te despistes, que muchas veces la gente deja de ir a clase para trabajar desde casa.
Ve paso por paso. Si es un MVC, empieza obteniendo los datos de la tabla. No importa cómo llames a la función ni los parámetros, sólo obtén los datos de la tabla en una List, y luego le aplicas filtrado de datos. Luego pásaselo al controlador, y por último haz que la vista lo llame, y luego muestra los datos. Hacerlo todo de golpe te va a saturar. Precisamente el usar MVC es para que cada una de las partes (interfaz, control, llamadas a BBDD) sean totalmente independientes unas de otras, y se puedan testear una a una, sin usar las otras. Céntrate en eso.
Incluso, si he entendido bien tu problema, intenta que tu botón o tu control llame al controller, y que este devuelva una lista que hayas creado tu por código, o una string, o lo que sea, pero sin llamar a la BBDD, y usa tu programa de calculadora como ejemplo, no te compliques.
Si veo que en casa tengo un rato para ayudarte, le echaré un vistazo, pero no prometo nada con tan poco tiempo :S
selecter25
23/05/2022, 15:47
Lo siento, no me he enterado de nada y eso que fui profesor de Java hace unos años.
Por si te vale, has probado lanzar un evento desde dentro de tu listener? El controlador debería capturar ese evento y gestionarlo con otro listener.
Imagino que sabes siempre puedes crear tus propios eventos con el nombre que quieras y lanzarlos cuando lo consideres
Ufff, una cosa es echarte una mano con un algoritmo que en 15 o 20 minutos se puede resolver, y otra muy distinta es meternos en Swing y BBDD ^^U
Tengo el Java tremendamente oxidado, y recuerdo que la interfaz de Java (Swing) era la muerte a pelizcos, cuestión de prueba y error. He tenido menos problemas en adaptarme a HTML que a eso, con eso lo digo todo :D
No sé si te podré echar un cable esta vez, pero al menos intentaré darte ánimos :D Java, si no fuera porque es multiplataforma, hace años que habría desaparecido. A mi incluso me decían que no me pelease demasiado con la interfaz porque los proyectos que hacíamos, al final, implementarían formularios HTML, así que si has llegado hasta aquí es para sentirse orgulloso.
Y lo de que hayais quedado 4... bueno, es normal. Ya comenté que para programar hay que tener el cerebro configurado de una forma rara, y tener ese punto de friki-locura, y no todo el mundo lo tiene. Si en Teleco suspendían un 40% de los estudiantes, ni te cuento en un curso de varias semanas. Pero no te despistes, que muchas veces la gente deja de ir a clase para trabajar desde casa.
Ve paso por paso. Si es un MVC, empieza obteniendo los datos de la tabla. No importa cómo llames a la función ni los parámetros, sólo obtén los datos de la tabla en una List, y luego le aplicas filtrado de datos. Luego pásaselo al controlador, y por último haz que la vista lo llame, y luego muestra los datos. Hacerlo todo de golpe te va a saturar. Precisamente el usar MVC es para que cada una de las partes (interfaz, control, llamadas a BBDD) sean totalmente independientes unas de otras, y se puedan testear una a una, sin usar las otras. Céntrate en eso.
Incluso, si he entendido bien tu problema, intenta que tu botón o tu control llame al controller, y que este devuelva una lista que hayas creado tu por código, o una string, o lo que sea, pero sin llamar a la BBDD, y usa tu programa de calculadora como ejemplo, no te compliques.
Si veo que en casa tengo un rato para ayudarte, le echaré un vistazo, pero no prometo nada con tan poco tiempo :S
No me extraña Juan, ya os digo que mi compañera me dijo "bah, tráemelo y te lo hago en una tarde", y se ha quedado ojiplática.
De momento he avanzado algo con la primera idea que tenía, pensaba que ponía en escucha al objeto en sí, pero no, le paso el control completo de la vista al controlador.
En la clase del controlador se crea un constructor que recibe un objeto de tipo "Ventana principal" que instancio, y sobre ese constructor se determinan las acciones de los botones que se quieran. Desde aquí también puedo lanzar todos los métodos estáticos del Modelo, así que no estamos tan mal.
Imagino que haciendo lo mismo con la subventana funcionará. Voy a darle un arreón más, si alguien quiere dotorear, estoy haciendo push al Github constantemente, mil gracias por las sugerencias y la ayuda siempre.
He hecho que se muestre la ventana al seleccionar el menu, como no tengo instalado el sql no se conecta pero podrás arreglarlo. Te dará idea de como hacer las cosas, los comentarios míos están con tres / (///), aunque no hay muchos, mis variables y métodos estan en ingles y los atributos de las clases empiezan por _
Unas cosas, revisa los nombres de los ficheros y clases, tienes SubwindowConecctionControl y SubwindowConnection. Yo usaría MainWindowController y ConnectionWindowController para los controladores y MainWindow, ConnectionWindow para las vistas.
Para rehabilitar los menus debería de haber un método o un listener que se llame antes de mostrar el menu, en esa función miras el objeto conexión para saber lo que debes de habilitar y deshabilitar.
Porras, debi de ir escribiendo esto ahora me he quedado en blanco XD
La parte del controlador es la más problemática, es la que se encarga de escuchar a las ventanas y realizar las acciones pertinentes en cada una de ellas (en la principal básicamente las opciones del menú superior (instanciar una subventana de conexión, desconectar, abrir la BDD que introduzcamos en el jtextfield pertinente, lo mismo con la tabla...). Una vez accede a la bdd, carga las tablas existentes y mediante el combobox o introduciendo el nombre de tabla en el Jtextfield, muestra la tabla.
El controlador de la subventana se encarga de realizar la conexión, muestra un estado en la parte central si se puede conectar o no, y si lo hace pasa la información de credenciales a las etiquetas del panel de la ventana principal. Las credenciales de la conexión las pilla de los JTextfield pertinentes de la subventana de conexión. El password es indiferente, no lo vamos a usar. El puerto lo he cambiado en mi ejemplo porque tengo rulando otro servidor en el que utiliza el MySQL de Xampp por defecto (3306).
Paralelamente, hay que gestionar que los elementos y paneles de la ventana principal se activen o desactiven dependiendo del estado en el que nos encontremos (una pequeña máquina de estados).
Yo suelo hacer la parte del modelo como si fuera una aplicacion para la linea de comandos, sin que dependa de nada, las vistas son de codigo "tonto", me pasan algo lo muestro y tengo algun metido para ver lo que ha cambiado.
La parte del controlador es la que une todo, aunque en el modelo MVC estan en forma de triangulo que cada uno puede enviar datos a los demás no me gusta hacerlo asi, creo que se generan mas dependencias y queda menos reutilizaba.
Mas o menos he hecho que en el BDApp (se llamaba asi?), se crea un objeto conexión y el controlador de la ventana principal, este se encargara de crear la ventana. El mensaje del menu de conexión se podria recibir en esta ventana (la principal) o en BDApp, que funcionaria como un objeto aplicacion (mas o menos como en OS-X), el que lo reciba deberá crear el controlador de la ventana de conexión (se le pasaría el objeto conexión), y este crearía su ventana. No se, es cuestión de encapsular cada ventana "dentro" de su controlador, y es el controlador el que recibe los mensajes al pulsar los botones o menús.
selecter25
23/05/2022, 17:10
Le echo un ojo, mil gracias!
Lo mismo digo una obviedad y ya lo habéis discutido (lo siento, pero ahora mismo me estoy peleando con mi propio código ^^U) pero deberías poder tratar cada ventana como un ente individual: cada ventana tiene su vista y su controlador, de forma que la vista sólo se puede comunicar con su controlador y sólo con su controlador, es decir, la sub-vista NUNCA llama a funciones del controlador de la vista padre. La única forma de conectar una ventana con la otra es que la ventana2 haga una llamada a controlador2, el controlador2 envíe la información a controlador1, y el controlador1 se la mande a la ventana1. Parece un lío y una chorrada ineficiente, pero es como se hace en MVC, y te permite tener las cosas independientes y ordenadas.
De esta forma, no pienses que es un ejercicio con dos ventanas, sino dos ejercicios de una ventana... que interactúan entre sí, y verás que se simplifican las cosas en tu cabeza.
Yo ahora mismo me estoy peleando con Xamarin, que es MVVM (concepto similar al MVC, con una capa aparte para llamar a la WebApi) y su correspondiente WebApi2 que es un MVC, pero sin vistas. Para obtener un dato de la BBDD, debo bajar 5 capas, y luego recorrerlas en sentido inverso... pero luego puedo cambiar la vista de xaml por html, en lugar de comunicarme con una WebApi podría ser con otra web o con una BBDD, y en la WebApi es común cambiar de una BBDD Transact-SQL por Hana.
Si esa es la idea, pero cuando le das al menu para mostrar la ventana de conexión, donde "capturas ese evento", en la ventana principal o en el "objeto aplicacion". En OS-X como existe ese objeto aplicacion (AppDelegate) yo lo haría alli, en este caso... no se. Se podria hacer en la ventana principal.
Ya puestos hasta se podria separar los menus y añadirle su propio controlador.
selecter25
23/05/2022, 19:52
Lo mismo digo una obviedad y ya lo habéis discutido (lo siento, pero ahora mismo me estoy peleando con mi propio código ^^U) pero deberías poder tratar cada ventana como un ente individual: cada ventana tiene su vista y su controlador, de forma que la vista sólo se puede comunicar con su controlador y sólo con su controlador, es decir, la sub-vista NUNCA llama a funciones del controlador de la vista padre. La única forma de conectar una ventana con la otra es que la ventana2 haga una llamada a controlador2, el controlador2 envíe la información a controlador1, y el controlador1 se la mande a la ventana1. Parece un lío y una chorrada ineficiente, pero es como se hace en MVC, y te permite tener las cosas independientes y ordenadas.
De esta forma, no pienses que es un ejercicio con dos ventanas, sino dos ejercicios de una ventana... que interactúan entre sí, y verás que se simplifican las cosas en tu cabeza.
Yo ahora mismo me estoy peleando con Xamarin, que es MVVM (concepto similar al MVC, con una capa aparte para llamar a la WebApi) y su correspondiente WebApi2 que es un MVC, pero sin vistas. Para obtener un dato de la BBDD, debo bajar 5 capas, y luego recorrerlas en sentido inverso... pero luego puedo cambiar la vista de xaml por html, en lugar de comunicarme con una WebApi podría ser con otra web o con una BBDD, y en la WebApi es común cambiar de una BBDD Transact-SQL por Hana.
Precisamente es el foco del ejercicio, el profesor quiere que la subventana maneje elementos de la ventana principal, por ejemplo cuando haces login, debes meter el valor de las credenciales de los Jtextfield de la subventana en el usuario /contraseña /puerto de la ventana principal, de ahí la movida.
Creo que estoy consiguiendo un apaño haciendo un mix de todo en plan matanza de texas (estoy en el curro y lo engancho a ratos libres), lo importante es que he conseguido que el controlador de la subventana maneje ambas vistas, haciendo un nuevo constructor del controlador de la subventana al que se le pasan las vistas como parámetro.
Seguiremos informando, como siempre, gracias a las hordas geperas de programadores, somos pocos en el foro pero sigue siendo buen ganado el que ha quedado.
Precisamente es el foco del ejercicio, el profesor quiere que la subventana maneje elementos de la ventana principal, por ejemplo cuando haces login, debes meter el valor de las credenciales de los Jtextfield de la subventana en el usuario /contraseña /puerto de la ventana principal, de ahí la movida.
Yo prefiero hacer que la ventana principal se entere de que has metido los datos y los lea de la ventana secundaria, hay muchas formas de hacer eso. Asi tienes una ventana genérica de login que la puedes usar en cualquier parte.
Yo creo que lo que te están pidiendo es que desarrolles una Store / State Management, pero sin llamarlo así. Eso significa que, en paradigma MVC, es que el Modelo gestiona los datos globales, que no se consideran cambiados hasta que los cambie el modelo, y cuando cambian es el propio modelo quien envía eventos a quien quiera escucharlos. Algo así:
//////////////////////////////////////////////////////////////////////
Interface ModelListener {
public void onUsernameChanged(String username);
}
class Model(){
ModelListener listener;
void addListener(ModelListener listener) {
this.listener = listener
}
void setUsername(String username) {
this.username = username; // o guardarlo en la base de datos, o en el archivo de configuracion, o lo que necesites
listener.onUsernameChanged(username);
}
}
//////////////////////////////////////////////////////////////////////
class MainWindow implements ModelListener {
MainWindow() {
/* muchas otras cosas */
model.addListener(this);
}
public void onUsernameChanged(String username) {
// haz lo que necesites
}
}
//////////////////////////////////////////////////////////////////////
class SecondaryWindows {
/** Muchas otras cosas */
public void onCuandoLoNecesitesPorEjemploOnSaveButtonClicked() {
model.setUsername(username);
}
}
Si tienes una state manager, el modelo además de guardar datos se encarga de avisar a los demás cuándo los datos han cambiado. Los state manager se usan mucho en programación de páginas web. Cada framework web apoya su propia librería de modelo: con frameworks Vue, el model / state manager es Pinia ó Vuex; con framework React el model / state manager usual es Recoil ó Redux
En el ejemplo solo he puesto que cambiar el username, pero tú puedes considerar más interesante que sean varios a la vez username/password/URL/port o algo así : model.setConnectionParameters(username, password, url, port) y onConnectionParametersChanged(username, password...). También, ese modelo tiene un solo listener, pero lo normal es gestionar un vector de listeners.
Ese mismo paradigma se usa también cuando tienes que comunicar componentes que están en sistemas diferentes. Entonces se usan colas de mensajes, pero siguen el mismo paradigma.
Igual me equivoco, pero creo que hay algo que no cuadra en todo esto. Si te piden implementar un patrón MVC, en java, es más o menos así:
- Modelo: Una representación del estado de cada una de las partes de la aplicación en cada momento, los modelos son clases/entidades con cada una de las partes funcionales (es decir, las ideas fundacionales) de tu aplicación: Database, User, Table, Connection.... Cada vez que una de estas partes cambia, le devuelve al controler un evento, parametro, valor de retorno con lo que ha pasado para que el controler decida luego qué hacer.
- Vista: Una implementacion visual del modelo en un framework/ librería dada, en este caso, DatabaseForm, TableView, ConnectionForm, etc.. es donde debe estar todo lo de swing y donde registrarás los listener del controller.
- Controlador: Se encarga de recibir el input del usuario en las vistas, y actualiza el modelo, esperando que el modelo le diga qué hacer a continuación por si tiene que actualizar la vista. Es decir, LoginController, DatabaseFormController, etc. Es la parte que se encarga de despachar eventos a vistas y modelos en base a lo que le dicen éstos.
MVC no es lo mejor, y dependiendo de a quien le preguntes, modelo significa una cosa u otra. Pero basicamente lo más importante es entender este flujo de llamadas donde el controller es el centro de todo, para poder hacer un MVC más o menos by the book.
Lo que dice amkam: el modelo guarda el estado, todos cambian SOLO el modelo, y el modelo avisa a los controladores que le quieran escuchar cuando algún dato ha cambiado.
-----Actualizado-----
Bola extra:
¿Dónde consiguen todas las ventanas el mismo objeto model?
Ahí ya te las apañas tú: o bien lo crea la ventana principal y se lo pasa a las ventanas secundarias en sus constructores, o bien te programas el pattern Singleton: https://en.wikipedia.org/wiki/Singleton_pattern Como tú veas.
selecter25
23/05/2022, 22:52
Gracias a todos de nuevo, resulta mucho más gratificante pasar un rato por aquí que escuchar al profesor. Revisando el tema anterior, esta es la interpretación que le da al patrón MVC (imagino que contextualizado en una aplicación gráfica que realiza consultas u operaciones):
https://drive.google.com/file/d/1VoQccZ3TLop_ZrBDh8lpPS92KzSVU4TL/view?usp=sharing
Por suerte es la última práctica que espero hacer con este buen hombre, me da miedo pensar que me estoy acostumbrando a su inflexibilidad y paso ratos de verdadera frustración.
Por suerte también con toda la info que me habéis dado y tras buscarme un poco la vida, parece que estoy viendo la luz. Ya tengo más de la mitad de los controladores hechos, el modelo realiza la conexión con el servidor perfectamente, y utiliza la base de datos. El control de estados, el desbloqueo progresivo de paneles, captura de errores y la información en los frames también está casi al completo, solo me queda la parte relacionada con la consulta de tablas.
Imagino que no será muy complicado, consultar de alguna manera el nombre de las tablas, meterlo en un array y rellenar el combobox. Después programar el controlador para que cuando seleccione una de las opciones, haga un SELECT * FROM Opcion y buscar lo necesario para mostrarlo en la tabla de mi panel. O eso espero. Así va de momento:
https://youtu.be/Nusd50VdMQI
Igual me equivoco, pero creo que hay algo que no cuadra en todo esto. Si te piden implementar un patrón MVC, en java, es más o menos así:
- Modelo: Una representación del estado de cada una de las partes de la aplicación en cada momento, los modelos son clases/entidades con cada una de las partes funcionales (es decir, las ideas fundacionales) de tu aplicación: Database, User, Table, Connection.... Cada vez que una de estas partes cambia, le devuelve al controler un evento, parametro, valor de retorno con lo que ha pasado para que el controler decida luego qué hacer.
- Vista: Una implementacion visual del modelo en un framework/ librería dada, en este caso, DatabaseForm, TableView, ConnectionForm, etc.. es donde debe estar todo lo de swing y donde registrarás los listener del controller.
- Controlador: Se encarga de recibir el input del usuario en las vistas, y actualiza el modelo, esperando que el modelo le diga qué hacer a continuación por si tiene que actualizar la vista. Es decir, LoginController, DatabaseFormController, etc. Es la parte que se encarga de despachar eventos a vistas y modelos en base a lo que le dicen éstos.
MVC no es lo mejor, y dependiendo de a quien le preguntes, modelo significa una cosa u otra. Pero basicamente lo más importante es entender este flujo de llamadas donde el controller es el centro de todo, para poder hacer un MVC más o menos by the book.
Hasta donde yo aprendí, es exactamente eso.
Lo que parece es que le hayan pedido tener dos controladores "controlando" un mismo modelo de datos. No digo que no se pueda (si se tiene buen control de eventos) pero yo no lo recomendaría porque podría desencadenar conflictos, y entrar en bucles infinitos (al ponerse el valor a false, el controlador 1 lo pone a true, pero el controlador 2 lo vuelve a poner a false, y el controlador 1 lo pone a true...) o en estado de interbloqueo (la respuesta del c1 depende de la respuesta de c2, que está esperando respuesta de c1). En ese caso, mi recomendación, por simplificar, sería que sólo uno de los controllers manejase el modelo (por ejemplo, controller1), y que cualquier modificación del mismo se haga siempre mediante él (si controller2 quiere cambiar algo, le manda la información a c1, y este al modelo).
De todas formas, Selecter, cuando termine el curso serás libre de hacer lo que te de la gana, y te pondrás a hacer programas a tu estilo, y cuando lleves dos o tres programas grandes, te darás cuenta de que tu profesor, en parte (sólo en parte, recordemos que son ejercicios para practicar casos concretos) tenía razón.
En mi caso, fue el Tilemap Editor. La primera versión la hice un poco como los juegos, mezclando gráficos con funciones, y cada cosa que añadía, hacía que el programa fuera más y más complejo. En la segunda versión, usé algo parecido a MVC (BennuGD no es POO, y mantener modelos es complicado), y aunque el código se triplicó, e hice las mismas funciones de manejos de listas una y otra vez (es un lenguaje fuertemente tipado sin herencia) y por duplicado (una para el modelo, otra para mostrar una parte de esta en la vista), está mucho más ordenado y es mil veces más escalable.
Cuando te vuelvas a sentir abrumado con el código, para un par de minutos, toma aire, divide el problema en trozos más pequeños (obtener un dato, mandarlo de A a B, mostrarlo, crear un evento...) y ve resolviéndolos uno a uno. Te quitará el estrés, te facilitará el trabajo, solucionarás errores más fácilmente y te ayudará a mantener trozos de código aislados para futuras correcciones o ampliaciones.
selecter25
24/05/2022, 16:45
Buen consejo, es lo que intento Drumpi, pero soy muy noob, a mi cerebrito aún le cuesta mucho determinar qué trocitos desarrollar y qué hacer antes o después, ten en cuenta que prácticamente me he sentado a programar algo con cierto sentido 2/3 veces, quitando algún ejercicio de POO con herencia o polimorfismo usando interfaces, el resto han sido cosas sencillitas, aprendiendo lo típico desde 0. Imagino que poco a poco lo haré de forma más natural.
Con respecto a la práctica, tras otro rato puesto al asunto tenemos final feliz, ya tengo la birria que el profesor quería funcionando. [wei2]
Si la semana que viene tengo suerte y apruebo el examen, será la última vez que me cruce con él y con Java hasta nueva obligación, ya que por mi parte no será, como mucho puede que por gusto le eche un vistazo a Kotlin más adelante.
No sé qué tal serán las asignaturas de segundo, pero ya vendré a llorar por el hilo, eso dadlo por hecho :D.
Me alegra que ya lo hayas podido resolver, enhorabuena :)
Si te quedan fuerzas, haz una copia del proyecto, y revísalo, que seguro que empiezas a encontrar fallos, y a lo tonto, das con soluciones más elegantes a ciertas partes del código.
Respecto a lo demás, sí, bueno, el dividir las tareas, ordenarlas en la cabeza y demás, viene con el tiempo y la práctica (y con papel y lápiz, que eso no lo suele decir nadie). No te puedo decir cómo es la curva de dificultad porque ya no recuerdo lo que fue aquello hace más de 15 años... o no me di cuenta, después del hartón de programar que me metí después de aquel primer año, entre prácticas y videojuegos :D
Si el programa está bien estructurado, da igual por dónde lo cojas. Tienes que probar todas las partes de forma independiente, así que... Sí que es cierto que cuando estamos generando datos, lo más fácil es empezar por la creación, luego la consulta, el borrado y la modificación en ese orden (porque la operación anterior te sirve en la siguiente). Pero en MVC puedes empezar por la vista o por la BBDD, y así hacer diseños top-down o bottom-up, según cómo tengas ordenadas las neuronas.
De todas formas, no lo dejes, especialmente ahora que estás empezando, un parón puede ser catastrófico. Hazte un proyecto sencillo, o muchos de ellos, repite código hasta que se te grabe a fuego en la cabeza, porque como se te olvide la sintaxis o los "trucos" para enlazar elementos (léase ventanas, herramientas, conexiones a BBDD...) luego te va a costar recordarlo, y a menos que tengas un 50% de comentarios en el código (porcentaje recomendado por... alguien más listo que cualquiera de nosotros) ni releyendo tus propios comandos te vas a acordar.
Por ejemplo, hazte un programita para tener una BBDD de las pelis o videojuegos que tienes: un apartado para introducir o editar datos, ver datos de las películas, ver datos de actrices/actores y las pelis en las que aparecen, distribuidoras de videojuegos... cosas así.
...Aunque luego te darás cuenta de que no merece la pena ponerse con Java, y aprenderás C# para trabajar, o para Unity, o algún otro lenguaje multiplataforma para hacer cosillas de escritorio :D
No se, Android se programa en Java...
selecter25
24/05/2022, 19:20
Me alegra que ya lo hayas podido resolver, enhorabuena :)
Si te quedan fuerzas, haz una copia del proyecto, y revísalo, que seguro que empiezas a encontrar fallos, y a lo tonto, das con soluciones más elegantes a ciertas partes del código.
Respecto a lo demás, sí, bueno, el dividir las tareas, ordenarlas en la cabeza y demás, viene con el tiempo y la práctica (y con papel y lápiz, que eso no lo suele decir nadie). No te puedo decir cómo es la curva de dificultad porque ya no recuerdo lo que fue aquello hace más de 15 años... o no me di cuenta, después del hartón de programar que me metí después de aquel primer año, entre prácticas y videojuegos :D
Si el programa está bien estructurado, da igual por dónde lo cojas. Tienes que probar todas las partes de forma independiente, así que... Sí que es cierto que cuando estamos generando datos, lo más fácil es empezar por la creación, luego la consulta, el borrado y la modificación en ese orden (porque la operación anterior te sirve en la siguiente). Pero en MVC puedes empezar por la vista o por la BBDD, y así hacer diseños top-down o bottom-up, según cómo tengas ordenadas las neuronas.
De todas formas, no lo dejes, especialmente ahora que estás empezando, un parón puede ser catastrófico. Hazte un proyecto sencillo, o muchos de ellos, repite código hasta que se te grabe a fuego en la cabeza, porque como se te olvide la sintaxis o los "trucos" para enlazar elementos (léase ventanas, herramientas, conexiones a BBDD...) luego te va a costar recordarlo, y a menos que tengas un 50% de comentarios en el código (porcentaje recomendado por... alguien más listo que cualquiera de nosotros) ni releyendo tus propios comandos te vas a acordar.
Por ejemplo, hazte un programita para tener una BBDD de las pelis o videojuegos que tienes: un apartado para introducir o editar datos, ver datos de las películas, ver datos de actrices/actores y las pelis en las que aparecen, distribuidoras de videojuegos... cosas así.
...Aunque luego te darás cuenta de que no merece la pena ponerse con Java, y aprenderás C# para trabajar, o para Unity, o algún otro lenguaje multiplataforma para hacer cosillas de escritorio :D
Exacto, el papel y lápiz me ha ayudado ya varias veces, con la máquina de estados fue crucial.
Para nada lo voy a dejar, seguramente en alguna asignatura de segundo sigamos con la turra de Java, no deja de ser "Diseño de Aplicaciones Multiplataforma", pero por mi cuenta prefiero seguir explorando otros lenguajes más naturales, "divertidos" como Python, con un tipado no tan fuerte o que al menos me sirvan para programar algo que me guste (como empecé con Ruby en RPG Maker o C# en Unity).
Si fuese a vivir de ello, pues seguramente le metería horas a algún Framework de Javascript y a hacer de albañil en front.
No se, Android se programa en Java...
Sí, pero para Android por ejemplo puedo probar Kotlin, que parece mucho más sencillo, funciona sobre máquina virtual Java , es incluso hasta interoperable con Java y tiene cosas chulas como Kotlin JS /React para el front. También para algunas cosillas podría tirar de React Native, pero ya me tendría que meter en Javascript.
La gente subestima el papel a la hora de programar. Que sí, que tienes el notepad(++), dos o tres monitores y todo lo que quieras, pero una nota a boli, un boceto rápido o un esquema que no te ocupa sitio en pantalla y que puedes consultar en cualquier momento es mano de santo.
No se, Android se programa en Java...
Sí, pero para Android por ejemplo puedo probar Kotlin, que parece mucho más sencillo, funciona sobre máquina virtual Java , es incluso hasta interoperable con Java y tiene cosas chulas como Kotlin JS /React para el front. También para algunas cosillas podría tirar de React Native, pero ya me tendría que meter en Javascript.
Solo diré una palabra: Xamarin.
Usando C#, y si quieres, XAML (un lenguaje de marcas, tipo XML, usado para crear las vistas, aunque también se puede hacer en C# en "code behind"), puedes hacer APPs de Android... e iOS y WCF (código universal de Windows o algo así). Y para cosas más específicas, tiene sub-proyectos concretos para cada plataforma. Es a lo que dedico la mayor parte del tiempo en trabajo.
Bueno, de momento, las APPs son de consulta de datos y de rellenar formularios (como el 90% de las aplicaciones Java en entornos de escritorio), aún no me he tenido que pelear con multimedia, ni OpenGL ni cosas así, pero prefiero el lenguaje C# al de Java, y VS a Eclipse (sigue siendo un devorador de recursos... pero es mucho más estable).
Creo que no genera APPs tan optimizadas y rápidas como Java, pero de momento, con una tablet Android 4.1 no he tenido problemas para gestionar listas de 300 artículos en memoria, y he hecho auténticas salvajadas hasta que aprendí a pedir los datos en "páginas" :D
De vez en cuando me toda algo chulo, como usar un escáner de códigos de barra por BT, o usar la propia cámara del móvil (y haciendo unos truquitos aquí y allá, usar dicha librería para que, en lugar de capturar un solo código, pueda irlos acumulando y... no me han dejado investigar más, pero quería dividir la pantalla y que se viera la lista). Si dan luz verde al proyecto, lo mismo tengo que conectarme al GPS del móvil o incluso a Gugle maps.
A mi eso de usar otro lenguaje, metiendo otra capa de abstracción por medio nunca me ha gustado. Después que si para hacer el hola mundo te va lento... Ademas de que puede que la abstracción no te permita hacer las mismas cosas que el API nativo, o que saquen un API nuevo y hasta que no saquen el equivalente en Xamarin te quedas a dos velas.
Paso.
Solo diré una palabra: Xamarin.
55055
A mi eso de usar otro lenguaje, metiendo otra capa de abstracción por medio nunca me ha gustado. Después que si para hacer el hola mundo te va lento... Ademas de que puede que la abstracción no te permita hacer las mismas cosas que el API nativo, o que saquen un API nuevo y hasta que no saquen el equivalente en Xamarin te quedas a dos velas.
Paso.
No sé cómo funcionará por debajo, si luego compila al bytecode que usa Android en su intérprete o lo que lleve por debajo, o si realmente mete un intérprete .Net por encima. Lo que sé es que en el trabajo es lo que usamos, y que para las APP que hacemos, funciona. Es más el tiempo de respuesta del servidor que el de ejecución... normalmente.
Luego, lo de la API... hasta el momento hemos tenido un único problema de compatibilidad: Xamarin requiere una versión mínima de Android 4.4, y un cliente nos dio un aparato con la 4.0.1. Curiosamente, mi tablet de desarrollo va con 4.1 y cero problemas. No sé cómo irá con las últimas versiones, pero yo estoy usando Xamarin 3.x, y ya van por la 5.0.x (aún no he usado ni la mitad de la potencia que tiene).
Luego, las ventajas propias del lenguaje: LinQ es una bendición que permite rescatar uno o varios elementos de listas, diccionarios y demás colecciones, como si ejecutase una SQL, en la décima parte de tiempo que se tardaría en recorrer con un bucle (comprobado, igual que un bucle FOR es casi el doble de rápido que un FOREACH), el binding de valores (la vista se refresca sola en cuanto se modifica el valor del ViewModel, y/o al revés), el async/await para trabajar con hilos (aunque aún no termino de pillarlo)...
Y yo no sé si alguna vez habéis hecho traza de lo que ejecuta Java para escribir un único carácter en un campo de texto... pero yo me aburrí de contar capas cuando llegué a la séptima llamada a una función. Con que C# haga la mitad de las operaciones, ya se gana mucho en rendimiento :D
55055
Decir dije una... escribir ya es otro tema :quepalmo:
Además, por si no quedaba claro, por si queríais saber mi opinión, o porque en este foro hay que explicarlo todo, ahí va el resto :P
Y porque soy malvado.
selecter25
03/06/2022, 12:05
Bueno pamicos, se acerca el final, en 4 horitas los dos últimos exámenes y vengo a llorar un poco para cerrar ciclo.
Exámenes de BDD (SQL- consultas avanzadas y PL/SQL - Procedimientos, cursores y Triggers), y a continuación el de programación (Herencia, polimorfismo, interfaces, creación/lectura de archivos/directorios, serialización y un ejercicio MVC similar al último de marras). Todo a papel y 2 horas y media por examen (cuando la práctica de MVC me llevó 4 días a base de porrazos en el IDE:lol2:).
Lo flipante es que dejan los dos exámenes más complicados para el mismo día, los dos seguidos y los dos en papel (solo tienes una bala, o está bien o está mal), con un tiempo (teniendo en cuenta lo que pide al menos el de programación) más bien escaso.
El martes hice los finales de Entornos de desarrollo, Lenguajes de marcas y Sistemas informáticos, ayer el de Inglés técnico, todos un paseo (entre 9 y 10 anda la cosa).
Hoy me llevo el popper por si las moscas, puede llegar mi primer fisting, rezad por mí.
Tranquilo y mucho ánimo.
Por mi experiencia, suelen ser bastante permisivos en los exámenes escritos. Los programas no suelen ser demasiado complicados (no creo que te pongan nada similar a este último ejercicio) y suelen quitar pocos puntos por errores de sintaxis o que se te olvide algún detalle como inicializar una variable o no tener en cuenta un caso concreto al añadir un elemento al modelo. Se centran más en la estructura, los cuatro o cinco puntos básicos del MVC y cuánto del programa eres capaz de escribir en tan poco tiempo. Prima más la agilidad mental que la precisión.
A modo de ejemplo, el práctico de programación en mi primer año duraba 4 horas, y consistía en un programa que gestionase la alineación de la Selección Española en el mundial. Debía tener un menú (en ASCII), y debía poder implementar la visualización de la alineación, añadir jugadores, quitarlo, hacer cambios de jugadores, y escribirlo en un fichero. Para aprobar, te exigían que el programa se ejecutase, y que la lista de jugadores estuviera bien implementada (una lista enlazada simple con punteros), así como su interfaz. Después era 1 punto por cada apartado del menú que terminaras, 2 por el último, o algo así.
Siendo escrito y con 2 horas, no creo que te exijan tener un dual core implementado en el cerebro :D (aunque facilitaría las cosas).
Relájate, sigue tus pautas de programación, recuerda todos esos errores de novato que te has ido autocorrigiendo en el ordenador, y todo irá bien ;)
josepzin
03/06/2022, 15:14
Lucky Luke!
selecter25
03/06/2022, 21:18
Ya estoy por casa. Finalmente el examen de BDD ha sido mucho más fácil de lo esperado, algunas consultas con subconsultas, JOIN de todos los colores, alguna función, lo típico, un repasito variado de SQL.
El segundo ejercicio era un trigger muy sencillo, básicamente auditar en una tabla las operaciones de modificación o eliminación sobre unos campos en concreto de otra tabla, metiendo usuario que realizó el cambio, fecha y tipo de operación. También pedía la creación de la tabla auxiliar y el cambio necesario en la tabla para que saltase el trigger. Nada complejo, sorprendentemente fácil para todo lo que había empollado en cunto a cursores, procedimientos y triggers más chungos.
En programación no fue tan bien. El ambiente y el poco número de asistentes (10 de 45 matriculados) hacía presagiar lo peor. Y se cumplió la profecía, 2 ejercicios de 5 puntos, y los dos ejercicios de MVC como el de la última práctica:lol2:. A tomar por saco las horas tiradas en POO/herencia/polimorfismo y en manejo de archivos, un trimestre con 5 temas y el psicópata pone 2 ejercicios de uno solo de ellos. Dos de los compañeros se levantaron nada más girar el examen y se piraron, aquello minó la moral entre los 8 que quedamos.
Tiré un poco de épica y por vergüenza torera entregué una basura que puede que apruebe pero de la que no estoy nada contento. Paneles llenos de radiobuttons, menús, botones, comboboxes y todo lo que se le habría pasado en mente a este psicópata para solamente calcular el área de un rectángulo y de un triángulo.
El otro iba de generar una lista de música tipo Los 40, en donde se metía un timer simulando el paso del tiempo y se generaban reproducciones de canciones con el método random, y al acabar la semana ficticia el número 1 se almacenaba en otro panel.
Todo ello en 1:45 que se me ha antojado muy escasa (yo creo que haciéndolo del tirón no me daría tiempo de escribir todo el código). He hablado con el psicópata y seguramente me presente a la ordinaria para subir esa nota, ya que el resto de asignaturas tengo todo 10 o 9, quitando BDD que se queda en 8 y el esperpento que me he marcado en programación. No quiero aprobar por la mínima, aunque por otro lado igual le dan por ahí y a otra cosa.
Bueno, siento leer lo del examen de programación, aunque no me sorprende demasiado la afluencia al mismo. Ya te comenté que no es fácil encontrar gente que le guste la programación (y eso incluye las carreras de Teleco e informática, y empresas que se dedican al desarrollo y/o la consultoría), y por eso mismo es más fácil agachar la cabeza y centrarse en las preguntas, y no mirar cuánta gente se sale de la clase, es algo que se aprende en Teleco :D
Sólo resta esperar a ver qué dice el profesor. Como ya te comenté, los exámenes de programación son más de velocidad y agilidad mental que de estilo: cuenta más cuánto haces del problema (y lo bien que esté resuelto) que las formas (siendo un novato, no te van a exigir que pienses 5 formas de resolverlo, y que hagas la más idónea)... aunque luego eso es lo que te encuentras en muchos trabajos ^^U
Ahora descansa, despéjate la cabeza, no le des más vueltas, y espera lo mejor. Si de los 8 eres de los 3 o 4 que ha terminado los dos ejercicios, ya estás aprobado (seguramente con un 6), y si eres de los dos mejores, pues tu nota subirá mucho, probablemente hasta el 8... a menos que hayas hecho un muy buen programa.
Pero claro, todo esto está calculado con el troncoPC, así que tú sabrás si te quieres fiar de las "conjeturizaciones" que hace o no :D
selecter25
06/06/2022, 17:32
Ajaja :lol2:no seas rencoroso y no descontextualices, de estos temas no conjeturizas porque eres un fenómeno, demostrado en el hilo queda que vuestra ayuda ha sido súper útil :brindis:, otra cosa es cuando pisamos en charcos que no son de nuestro barrio.
Hoy me ha contactado el profesor y el resultado global de la clase ha sido malo. A mí me ha ofrecido la posibilidad de aprobarme la evaluación (nota de examen muy cercana al 5, imaginad la debacle) o de presentarme a la recuperación. Aceptar la recuperación supone que si subo nota, esa será la nota que tendré, y si palmo, palmaré la evaluación.
Por una parte preferiría olvidarme del tema y dedicar mi escaso tiempo libre a otras cosas más productivas, como a inventar historias troll para chafar spammers del foro, pero soy muy caborro, tengo un fuerte sentido del orgullo y del amor propio (vamos, que soy idiota). El caso es que de quedar así, la global de programación será un 7, y desentonará con el resto de calificaciones, así que he decidido hacer un doble o nada y presentarme el viernes.
Es cierto que ya con el resto de asignaturas aprobadas, y solo centrándome en estos ejercicios, he conseguido hacerlos en casa de una forma relativamente fácil, así que espero que esta penúltima bala (habemus extraordinaria) pegue en el centro. Seguimos en la brecha!
Ajaja :lol2:no seas rencoroso y no descontextualices, de estos temas no conjeturizas porque eres un fenómeno, demostrado en el hilo queda que vuestra ayuda ha sido súper útil :brindis:, otra cosa es cuando pisamos en charcos que no son de nuestro barrio.
Tranquilo, porque era una coña cuyo objetivo era arrancarte una sonrisa pensando en otra cosa, y viendo los emoticonos, objetivo conseguido :lol:
Hoy me ha contactado el profesor y el resultado global de la clase ha sido malo. A mí me ha ofrecido la posibilidad de aprobarme la evaluación (nota de examen muy cercana al 5, imaginad la debacle) o de presentarme a la recuperación. Aceptar la recuperación supone que si subo nota, esa será la nota que tendré, y si palmo, palmaré la evaluación.
Por una parte preferiría olvidarme del tema y dedicar mi escaso tiempo libre a otras cosas más productivas, como a inventar historias troll para chafar spammers del foro, pero soy muy caborro, tengo un fuerte sentido del orgullo y del amor propio (vamos, que soy idiota). El caso es que de quedar así, la global de programación será un 7, y desentonará con el resto de calificaciones, así que he decidido hacer un doble o nada y presentarme el viernes.
Es cierto que ya con el resto de asignaturas aprobadas, y solo centrándome en estos ejercicios, he conseguido hacerlos en casa de una forma relativamente fácil, así que espero que esta penúltima bala (habemus extraordinaria) pegue en el centro. Seguimos en la brecha!
Bueno, pues el único consejo que te puedo dar, viendo que te has enmarronado tú solo (:quepalmo:) es que para este caso concreto, tu mejor opción es practicar, practicar y practicar. La informática con teclado entra, y ya que sabes el tipo de ejercicios que te van a pedir, te diría que te hicieras, como mínimo, tres programas de ese mismo estilo. Puedes intentar repetir el ejercicio que nos preguntaste hace unos días pero sin mirar el código original, el ejercicio del examen, repetir alguno de los dos varias veces (siempre, sin mirar el código anterior, a ver qué diferencias te salen), o incluso inventarte tú mismo un ejercicio con algo que necesites en tu día a día.
Te lo digo porque las listas enlazadas con punteros, hasta el tercer o cuarto programa, no me aprendí las pautas (generar los métodos de crear, editar, borrar y consultar, que el primer elemento, el último y el de en medio hay que tratarlos de forma diferente...), y una vez que las tenía, aunque el código en sí era distinto, sí que sabía cuales eran los cuatro o cinco bloques a desarrollar, sí o sí, y ese esqueleto es una ayuda fundamental cuando te meten prisa con el código.
Eso sí, procura que no haya pasado demasiado tiempo entre el último ejercicio y el examen, que los detalles se olvidan demasiado rápido. Y cuidado con los bugs, que muchas veces se tarda más en depurar que en escribir el código (a veces es mejor aprender a depurar los fallos antes que aprender nuevos algoritmos :D).
Es un rollo, es aburrido y tedioso, y muy frustrante... pero eso se alivia con la experiencia (dijo aquel que se tiró una semana atascado, en un hilo en privado, por culpa de una puñetera barra inanimada de carbono :lol:).
selecter25
06/06/2022, 21:39
See, en los ratos libres me he dedicado a literalmente aprender de memoria toda la estructura del ejercicio, a replicar vistas con JFrame en cerocoma y a meterle caña a los layouts, en realidad no es algo extremadamente complejo, y más ahora que controlo cómo asignar bien los controladores. Fue más saturación a la hora de memorizar sintaxis de Java Swing, ya que tenía en mi troncocerebro todo lo referente al examen de Base de Datos y no tenía espacio suficiente.
Otro palo fue el ver que solo puso ejercicios de un tema, y yo estudié básicamente lo contrario, esperando que no apareciese un ejercicio de este tipo en tan poco tiempo.
Lo gracioso (que no descarto, es un psicópata) sería que ahora no metiese nada de modelo MVC y nos pegase la trolleada padre. Para evitar que me pille en bolas, los estoy combinando metiendo herencia y polimorfismo en las clases del modelo, y también haciendo diseños de programas que permiten crear/leer/serializar archivos.
Esta vez no me pilla [chuck3]
El caso es que de quedar así, la global de programación será un 7, y desentonará con el resto de calificaciones, así que he decidido hacer un doble o nada y presentarme el viernes.
¿Por qué? ¿Qué ganas? Te arriesgas y como poco pierdes tiempo. Nadie se mirará esa nota jamás en la vida ni le va a importar a nadie.
Sí me dijeses que te va a abrir alguna puerta, que te hace media para entrar en otros curso, o que te darán becas... Bueno. Pero... ¿Por cabezonería?
Sí aún estás a tiempo... ¡acepta la nota que te hayan dado y pasa página para la siguiente aventura!
See, en los ratos libres me he dedicado a literalmente aprender de memoria toda la estructura del ejercicio, a replicar vistas con JFrame en cerocoma y a meterle caña a los layouts, en realidad no es algo extremadamente complejo, y más ahora que controlo cómo asignar bien los controladores. Fue más saturación a la hora de memorizar sintaxis de Java Swing, ya que tenía en mi troncocerebro todo lo referente al examen de Base de Datos y no tenía espacio suficiente.
Otro palo fue el ver que solo puso ejercicios de un tema, y yo estudié básicamente lo contrario, esperando que no apareciese un ejercicio de este tipo en tan poco tiempo.
Lo gracioso (que no descarto, es un psicópata) sería que ahora no metiese nada de modelo MVC y nos pegase la trolleada padre. Para evitar que me pille en bolas, los estoy combinando metiendo herencia y polimorfismo en las clases del modelo, y también haciendo diseños de programas que permiten crear/leer/serializar archivos.
Esta vez no me pilla [chuck3]
Y haces bien. Yo no entendía cómo en el instituto había quien se la jugaba todo a una carta y se estudiaba uno o dos temas, con la esperanza de que fueran los que contaban para el 60% de la nota. En la uni sí era más habitual, dada la gran cantidad de temas, trabajos y laboratorios que había que hacer (sólo tenías tiempo si le dedicabas todo el tiempo del día a los estudios, eras rápido y/o eras un superdotado).
En programación, un simple problema de punteros podía contener todo el temario, camuflado entre los subapartados, así que, aunque el ejercicio sea de MVC, lo mismo te pide que para el controlador tengas un modelo de datos, pero que para la vista tengas que crear un modelo derivado con dos o tres campos extra, bien calculados o bien para que el usuario meta otras cosas.
¿Por qué? ¿Qué ganas? Te arriesgas y como poco pierdes tiempo. Nadie se mirará esa nota jamás en la vida ni le va a importar a nadie.
Sí me dijeses que te va a abrir alguna puerta, que te hace media para entrar en otros curso, o que te darán becas... Bueno. Pero... ¿Por cabezonería?
Sí aún estás a tiempo... ¡acepta la nota que te hayan dado y pasa página para la siguiente aventura!
No te creas. Yo he hecho un par de cursos de programación que son los que me han servido para entrar a trabajar. No voy a decir que fuera de los mejores de la clase (porque sinceramente, no lo sé ni me importaba), pero o bien fue eso o mis conocimientos previos los que me sirvieron para conseguir el puesto. Quién sabe.
De todas formas, Selecter está entrando en la secta de la programación, y por eso ya empieza a crecer su ego. Pronto empezará a decir que es el mejor programador, que no le toquen SU código, y que nadie más está capacitado para llevar a cabo el proyecto que se le ha encomendado, y si no le gusta a alguien, ajo y agua o se cancela el proyecto, mwahahahahaaaaa :quepalmo:
selecter25
07/06/2022, 11:59
¿Por qué? ¿Qué ganas? Te arriesgas y como poco pierdes tiempo. Nadie se mirará esa nota jamás en la vida ni le va a importar a nadie.
Sí me dijeses que te va a abrir alguna puerta, que te hace media para entrar en otros curso, o que te darán becas... Bueno. Pero... ¿Por cabezonería?
Sí aún estás a tiempo... ¡acepta la nota que te hayan dado y pasa página para la siguiente aventura!
Sé que es absurdo (hasta a mí me lo parece) y es hasta difícil de explicar, pero estoy haciendo el ciclo formativo por mero enriquecimiento personal, no me planteo una salida laboral al sector IT, solo pillar una serie de conocimientos básicos que me sirvan para entender cómo funcionan ciertas cosas y que me permitan crecer y realizar otras a un nivel "doméstico".
Digamos que no necesito competir contra nadie, solo contra mí mismo, y aceptando ese 5 siento que he fallado en mi objetivo y que tengo el deber moral de volver a presentarme. Vamos, que soy idiota.
Y haces bien. Yo no entendía cómo en el instituto había quien se la jugaba todo a una carta y se estudiaba uno o dos temas, con la esperanza de que fueran los que contaban para el 60% de la nota. En la uni sí era más habitual, dada la gran cantidad de temas, trabajos y laboratorios que había que hacer (sólo tenías tiempo si le dedicabas todo el tiempo del día a los estudios, eras rápido y/o eras un superdotado).
En programación, un simple problema de punteros podía contener todo el temario, camuflado entre los subapartados, así que, aunque el ejercicio sea de MVC, lo mismo te pide que para el controlador tengas un modelo de datos, pero que para la vista tengas que crear un modelo derivado con dos o tres campos extra, bien calculados o bien para que el usuario meta otras cosas.
No te creas. Yo he hecho un par de cursos de programación que son los que me han servido para entrar a trabajar. No voy a decir que fuera de los mejores de la clase (porque sinceramente, no lo sé ni me importaba), pero o bien fue eso o mis conocimientos previos los que me sirvieron para conseguir el puesto. Quién sabe.
De todas formas, Selecter está entrando en la secta de la programación, y por eso ya empieza a crecer su ego. Pronto empezará a decir que es el mejor programador, que no le toquen SU código, y que nadie más está capacitado para llevar a cabo el proyecto que se le ha encomendado, y si no le gusta a alguien, ajo y agua o se cancela el proyecto, mwahahahahaaaaa :quepalmo:
Eso es extrapolable a cualquier ámbito, ya lo hago en mi trabajo y hasta cuando hago un buen arroz, mi sofrito es el mejor, mi salmorreta es épica, que no sabes qué es salmorreta? Por Dios!, si no sellas el arroz para evitar que desprenda almidón ni me hables :lol2:...
Si he huido del sector IT durante todos estos años es precisamente por eso, por la sensación que se percibe (ojo, esto es opinión propia, que igual patino) en cuanto a la dificultad de encontrar un ambiente de trabajo agradable, oficinas llenas de gente con una inteligencia racional enorme y con una inteligencia emocional inversamente proporcional, luchas de egos, lameculismo (estas dos últimas se dan en cualquier sector), imposibilidad de desconectar del curro...
No sé si es algo propio del sector o simplemente de cárnicas o consultoría en general, pero todos los testimonios que tengo de primera mano son así.
josepzin
07/06/2022, 16:08
¿Por qué? ¿Qué ganas? Te arriesgas y como poco pierdes tiempo. Nadie se mirará esa nota jamás en la vida ni le va a importar a nadie.
Jajajjaa si si, yo pienso exactamente igual. Lo importante es aprobar y pasar, a menos que esa nota implique una beca o algo asi.
En este caso parece ser por motivos personales, asi que las locuras de cada uno ya es difícil juzgarlas :D :D
Hace un par de semanas mi cría tuvo su primer examen con nota y sacó un "Bueno+", que viene a ser un 7.5, o un "aprobado y poquito mas", yo felicitandola y la madre medio reprendiendola por sacar una nota tan baja... aydios... Le pasó lo que a Selecter, unos cuantos errores tontos que le bajaron el puntaje, pero vamos, que ya está: aprender para el próximo examen cuales fueron los errores de este y pasar página.
Si he huido del sector IT durante todos estos años es precisamente por eso, por la sensación que se percibe (ojo, esto es opinión propia, que igual patino) en cuanto a la dificultad de encontrar un ambiente de trabajo agradable, oficinas llenas de gente con una inteligencia racional enorme y con una inteligencia emocional inversamente proporcional, luchas de egos, lameculismo (estas dos últimas se dan en cualquier sector), imposibilidad de desconectar del curro...
No sé si es algo propio del sector o simplemente de cárnicas o consultoría en general, pero todos los testimonios que tengo de primera mano son así.
Hay de todo, como siempre.
Pero en el sector de la programación sí que he notado que el nivel de ego es más alto de lo normal. Ya el primer año, un tío de informática me decía que "hacer videojuegos en DIV no era programar" (cantinela que me han repetido con Java y con Unity).
También he percibido mucha aversión entre la comunidad hacia los telecos, pero no al revés. Entiendo que se cabréen cuando contratan a alguien con un "curso" de 2 semanas, o cuando meten a un físico a desarrollar formularios web, pero un teleco, que combina electrónica e informática a partes iguales (casi por necesidad)...
Y no hablemos de proyectos personales, en los que se cierra código o se ofusca para que otros no puedan tocarlo, o incluso que les sienta mal que se lo modifiquen. Como un ejemplo no demasiado fuerte, Fenix, que se dividió en tres o cuatro proyectos (Bennu, CDiv, Gemix...). Y como otro ejemplo muy fuerte, Sonic 2HD, por el que por culpa del primer programador casi se cancela del todo.
Como empecemos entre las comunidades de Linux, del lenguaje tal, o del programa pascual, ríete tu de "Juego de Tronos"
"El lado oscuro" es muy fuerte, y a veces me he dejado llevar por él (y lo habéis sufrido, sobre todo cuando he dormido poco), pero por suerte tiene cura: humildad, reconocer la limitaciones, y sobre todo, no centrarse en un único lenguaje :D
-----Actualizado-----
A ver, quiero matizar una cosa, que me ha quedado el mensaje como si los informáticos fueran todos así. No tiene por qué.
Yo he trabajado en consultorías, y con varios programadores, y siempre me han tratado bien. No he chocado nunca con un tipo de estos, no sé si por suerte o porque no me veían como una amenaza (quizás para la seguridad del propio programa, pero no para ellos :D ). El más orgulloso que he conocido ha sido SplinterGU, y doy fe de que es un buen tipo (aunque en su momento no le gustaba que le tocasen las clases :D), así que no tengo absolutamente nada en contra de ellos.
Pero lo dicho, hay un ambiente en general que indica eso, que hay algunos top que llegan a ser tóxicos, según mi experiencia personal (también podría hablar de grafistas y músicos, pero quiero seguir pudiendo desarrollar juegos en mi tiempo libre :D).
selecter25
07/06/2022, 20:45
Jajajjaa si si, yo pienso exactamente igual. Lo importante es aprobar y pasar, a menos que esa nota implique una beca o algo asi.
En este caso parece ser por motivos personales, asi que las locuras de cada uno ya es difícil juzgarlas :D :D
Hace un par de semanas mi cría tuvo su primer examen con nota y sacó un "Bueno+", que viene a ser un 7.5, o un "aprobado y poquito mas", yo felicitandola y la madre medio reprendiendola por sacar una nota tan baja... aydios... Le pasó lo que a Selecter, unos cuantos errores tontos que le bajaron el puntaje, pero vamos, que ya está: aprender para el próximo examen cuales fueron los errores de este y pasar página.
Os entiendo perfectamente, si tuviese que aconsejar a alguien, le diría justo lo mismo, que aprobado y a otra cosa. Pero cuando me aplico el cuento a mí mismo, soy una persona enferma, autoexigente, autodestructiva e incluso autoboicoteadora (un tarado con miedo al éxito, vamos).
Si tuviese 19 añitos y la finalidad fuese acabar el ciclo formativo, pillar mi título de técnico y acceder al mercado laboral, seguramente habría pasado de todo, pero aquí el fin es el camino, y si he hecho parte del camino mal, o tengo oportunidad de hacerlo mejor, mi mente enferma no va a parar hasta que lo haga. Sería el equivalente a pasarte un videojuego vs pasártelo con todos los logros.
Hay de todo, como siempre.
Pero en el sector de la programación sí que he notado que el nivel de ego es más alto de lo normal. Ya el primer año, un tío de informática me decía que "hacer videojuegos en DIV no era programar" (cantinela que me han repetido con Java y con Unity).
También he percibido mucha aversión entre la comunidad hacia los telecos, pero no al revés. Entiendo que se cabréen cuando contratan a alguien con un "curso" de 2 semanas, o cuando meten a un físico a desarrollar formularios web, pero un teleco, que combina electrónica e informática a partes iguales (casi por necesidad)...
Y no hablemos de proyectos personales, en los que se cierra código o se ofusca para que otros no puedan tocarlo, o incluso que les sienta mal que se lo modifiquen. Como un ejemplo no demasiado fuerte, Fenix, que se dividió en tres o cuatro proyectos (Bennu, CDiv, Gemix...). Y como otro ejemplo muy fuerte, Sonic 2HD, por el que por culpa del primer programador casi se cancela del todo.
Como empecemos entre las comunidades de Linux, del lenguaje tal, o del programa pascual, ríete tu de "Juego de Tronos"
"El lado oscuro" es muy fuerte, y a veces me he dejado llevar por él (y lo habéis sufrido, sobre todo cuando he dormido poco), pero por suerte tiene cura: humildad, reconocer la limitaciones, y sobre todo, no centrarse en un único lenguaje :D
-----Actualizado-----
A ver, quiero matizar una cosa, que me ha quedado el mensaje como si los informáticos fueran todos así. No tiene por qué.
Yo he trabajado en consultorías, y con varios programadores, y siempre me han tratado bien. No he chocado nunca con un tipo de estos, no sé si por suerte o porque no me veían como una amenaza (quizás para la seguridad del propio programa, pero no para ellos :D ). El más orgulloso que he conocido ha sido SplinterGU, y doy fe de que es un buen tipo (aunque en su momento no le gustaba que le tocasen las clases :D), así que no tengo absolutamente nada en contra de ellos.
Pero lo dicho, hay un ambiente en general que indica eso, que hay algunos top que llegan a ser tóxicos, según mi experiencia personal (también podría hablar de grafistas y músicos, pero quiero seguir pudiendo desarrollar juegos en mi tiempo libre :D).
Buenos cotilleos :D. Splinter tiene sello propio en el foro, y así le queremos.
Ya te digo que igual es una percepción externa, o igual he topado con feedback gente currando en cárnicas o proyectos malos, pero pese a parecerme un trabajo súper interesante el de programador, siempre me ha tirado para atrás ese tufillo a explotación (esto pasa en todos los curros), lucha de egos e imposibilidad de desconexión en casa o conciliación con la vida familiar.
Que te cuenten los demás. Mi experiencia ha sido relativamente buena: los compañeros siempre nos ayudábamos unos a otros, porque siempre había uno que sabía más de una cosa o de otra, y nunca he tenido problemas con el ego de nadie, en parte porque los que estábamos teníamos más o menos la misma experiencia (con el lenguaje usado en la empresa), así que no estábamos "contaminados", y en parte, porque hay una jerarquía, y si el jefe dice que se hace una cosa de determinada forma, tienes que tragar (si tu jefe dice que la BBDD sólo tiene dos tablas, y que en ellas va la configuración de la APP, los textos en distintos idiomas, los datos de los documentos, los datos de la entrega, los datos de... pues tú trabajas con dos tablas y SQLs del tamaño de la Biblia).
De la explotación no te libras. Siempre van a ser todo prisas, cosas a medio hacer, parches y aberraciones para llegar a tiempo (con los problemas que eso trae a la hora de arreglar un bug o ampliar).
Cuanto más pequeña sea la empresa, menos presión te van a meter (aunque tu sueldo depende de que hagas bien tu trabajo).
Y yo siempre fuerzo un poco más el tiempo. Prefiero entregar un poco más tarde y hacer las cosas un poco mejor, porque después vienen las prisas y los lloros (como ha pasado esta semana) y ese ahorro de tiempo es maná del cielo :D
Ya lo de desconectar depende mucho de la persona. Yo he dejado de programar videojuegos porque llego saturado a casa, y estoy notando el cansancio acumulado (por eso me he pasado al modelado 3D... aunque ya casi ni eso). Y para tener unas auténticas vacaciones necesito dos semanas, una para desconectar y otra para saber qué quiero hacer con mi tiempo libre. Lo peor que puedes hacer es sentarte delante de una consola :D (al menos yo, que soy de los que necesitan estar inventando cosas constantemente, y al engancharme a un videojuego termino pensando que no he aprovechado el tiempo).
Pero hay momentos que lo compensan: proyectos en los que haces cosas raras, cuando te dan algo para cacharrear, cuando te dicen que tienes un mes para enfrentarte a un proyecto en un lenguaje diferente... y sobre todo, cuando la cosa funciona y tus clientes están contentos :D
PD: nunca tengas un puesto de cara al cliente, y si lo tienes, escúdate en tu jefe cuando haya problemas (de algo sirve ser el último mono :lol: además, mientras lo llaman, se calman, y el jefe sabe mejor que tú cómo lidiar con ellos)... y ser honesto hará que, en algunos casos, se reduzca la presión con ellos cuando algo falle, aunque no es la política más recomendable según todos los empresarios.
selecter25
10/06/2022, 21:19
Haktualisasión de rigor, acabo de llegar del examen ordinario... y lo he clavado pamicos :fieston: . Habemus nota de entre 9 y 10.
Ha puesto 2 ejercicios de patrón MVC similares, cambiando diseño (una minicalculadora pocha y un expositor de vehículos con herencia) pero con una dificultad similar a los del primer examen. Lo creía tan psicópata como para cambiar por completo la estructura del examen, pero finalmente ha defraudado y se ha ablandado, imagino que demasiado soldado caído en batalla.
Ahora a recuperar todas las horas que he pedido en el curro y a olvidarme de lo poco que he aprendido :lol2: en estos 3 meses de relax.
josepzin
10/06/2022, 22:55
Vaya maniático... felicidades! :D
Ahora a recuperar todas las horas que he pedido en el curro y a olvidarme de lo poco que he aprendido :lol2: en estos 3 meses de relax.
Usa esto para practicar de vez en cuando: ACEPTA EL RETO (https://www.aceptaelreto.com/)
Ponen uno cada semana y, aunque no lo saques, te obliga a pensar en como afrontarlo y, por supuesto, a practicar código.
selecter25
11/06/2022, 12:34
Usa esto para practicar de vez en cuando: ACEPTA EL RETO (https://www.aceptaelreto.com/)
Ponen uno cada semana y, aunque no lo saques, te obliga a pensar en como afrontarlo y, por supuesto, a practicar código.
Gracias! :brindis:Nah, era coña, ahora en este tiempo "libre" intentaré aprender todo lo que pueda para afrontar el siguiente a tope. Lo meto en marcadores y me lo intentaré hacer cada finde.
Actualmente estoy con katas de codewars, y aunque en un principio pensaba desconectar unos días, anoche empecé un curso online de Kotlin y mamma mia, la simplicidad y el bajo tipado me ha hecho odiar aún más a JAVA.
Para este verano me haré un mini roadmap e intentaré meterle caña a Kotlin, y de ahí me iré a JS para usar algún framework como React/React Native, aunque también me llaman mucho Flutter(Dart) y Svelte.
Haktualisasión de rigor, acabo de llegar del examen ordinario... y lo he clavado pamicos :fieston: . Habemus nota de entre 9 y 10.
Ha puesto 2 ejercicios de patrón MVC similares, cambiando diseño (una minicalculadora pocha y un expositor de vehículos con herencia) pero con una dificultad similar a los del primer examen. Lo creía tan psicópata como para cambiar por completo la estructura del examen, pero finalmente ha defraudado y se ha ablandado, imagino que demasiado soldado caído en batalla.
Ahora a recuperar todas las horas que he pedido en el curro y a olvidarme de lo poco que he aprendido :lol2: en estos 3 meses de relax.
Mi enhorabuena, Selecter... pero no eches las campanas al vuelo :D Puede que hayas clavado el MVC y la sintaxis, pero si no has cumplido los objetivos no escritos, te puede bajar la nota. No a un 6 o a un 7, pero si algo me enseñó mi carrera es que por tonterías, un examen donde "lo clavas", es susceptible de caer, por despistes, por debajo del aprobado... O a lo mejor es cosa particularmente mía, quién sabe :D
No espero que suspendas (por [deity], NO), pero no te confíes. Ojalá sea como dices ;)
Ya te avisé de que repitieras los ejercicios :D En el instituto decían que tenía una habilidad especial para saber qué preguntas iban a caer en el examen (aunque acertaba un 60% nada más :P ) pero nada que ver con la habilidad de algunos de conocer el examen al 100% (había un tráfico de información en las sombras, que siempre se filtraba el examen unos días antes de la fecha). Era muy difícil evitar los spoilers :lol:
Gracias! :brindis:Nah, era coña, ahora en este tiempo "libre" intentaré aprender todo lo que pueda para afrontar el siguiente a tope. Lo meto en marcadores y me lo intentaré hacer cada finde.
Actualmente estoy con katas de codewars, y aunque en un principio pensaba desconectar unos días, anoche empecé un curso online de Kotlin y mamma mia, la simplicidad y el bajo tipado me ha hecho odiar aún más a JAVA.
Para este verano me haré un mini roadmap e intentaré meterle caña a Kotlin, y de ahí me iré a JS para usar algún framework como React/React Native, aunque también me llaman mucho Flutter(Dart) y Svelte.
Pfffs, Java. Con VB6 te querría yo ver :D
Ya de Kotlin, JS y demás me pillas fuera de juego, demasiado alto nivel para mis conocimientos. Elijas la ruta que elijas, ya sabes que siempre te querremos tal y como eres :D
Lo bueno de los lenguajes es que, de alguna forma, puedes llegar a entenderlos sin tener que aprenderlos, así que, si tienes problemas, alguien te podrá echar una mano.
selecter25
13/06/2022, 15:17
Mi enhorabuena, Selecter... pero no eches las campanas al vuelo :D Puede que hayas clavado el MVC y la sintaxis, pero si no has cumplido los objetivos no escritos, te puede bajar la nota. No a un 6 o a un 7, pero si algo me enseñó mi carrera es que por tonterías, un examen donde "lo clavas", es susceptible de caer, por despistes, por debajo del aprobado... O a lo mejor es cosa particularmente mía, quién sabe :D
No espero que suspendas (por [deity], NO), pero no te confíes. Ojalá sea como dices ;)
Ya te avisé de que repitieras los ejercicios :D En el instituto decían que tenía una habilidad especial para saber qué preguntas iban a caer en el examen (aunque acertaba un 60% nada más :P ) pero nada que ver con la habilidad de algunos de conocer el examen al 100% (había un tráfico de información en las sombras, que siempre se filtraba el examen unos días antes de la fecha). Era muy difícil evitar los spoilers :lol:
Pfffs, Java. Con VB6 te querría yo ver :D
Ya de Kotlin, JS y demás me pillas fuera de juego, demasiado alto nivel para mis conocimientos. Elijas la ruta que elijas, ya sabes que siempre te querremos tal y como eres :D
Lo bueno de los lenguajes es que, de alguna forma, puedes llegar a entenderlos sin tener que aprenderlos, así que, si tienes problemas, alguien te podrá echar una mano.
Gracias :brindis: Saldremos de dudas en breves, debería de corregirlo hoy.
Ajajaj no tengo miedo, ya descorché el champagne este finde, si algo me gusta de mi profesor psicópata es que su inflexibilidad hace que pida cosas extremadamente concretas, por lo que ajustándote a lo que pide lo tienes hecho. Cada ejercicio consta de subapartados tipo: Realiza esta vista, con un JFrame de tamaño x, y y con los siguientes elementos (pantallazo de cómo quedaría), 1 punto. Apartado b: Realiza un modelo que incluya una clase vehículo con atributos marca y modelo, y "x" métodos abstractos. Realiza una clase hija moto con el atributo privado cilindrada al que se acceda con un método "x", 0,5 puntos. Realiza un controlador que al seleccionar x opción en el JComboBox cree un objeto del tipo correspondiente y muestre lo siguiente dependiendo del tipo de vehículo escogido: Tipo de vehículo: Autobús Marca: MAN Modelo: loquesea Pasajeros: 54...
Estoy 200% seguro de que memoricé de manera tan enfermiza la lógica de programación y toda la sintáxis relacionada con swing y awt, que si transcribe el código a un IDE le compilaría.
De lo que me interesa mejorar, Kotlin para desarrollo en Android porque ya tengo una pequeña base de JAVA, y Javascript porque básicamente todos los frameworks de front digamos nuevos o punteros se basan en JS y PHP no me atrae lo más mínimo. También React Native tira de JS, por lo que creo que invertiré mi limitado tiempo libre en estos lenguajes.
selecter25
13/06/2022, 16:43
Update: Finalmente, me ha puesto un 9.9 el muy psicópata :lol2:
Ni tan mal, de aprobar de rodillas a 10 en la evaluación, valió la pena pamicos!!
https://i.imgur.com/memiuiF.png
+1 por el photoshop de la nota XDXDXD
josepzin
13/06/2022, 19:46
Otro 10 en Edición con PS :P
selecter25
13/06/2022, 20:32
Gracias pamicos, he descubierto mi verdadera pasión, la edición :lol2:
fbustamante
13/06/2022, 22:07
En el cole de mi niño apuran hasta la centésima. :lol:
Gracias pamicos, he descubierto mi verdadera pasión, la edición :lol2:
¿Cual? ¿La roja, la azul o la amarilla? :awesome:
En el cole de mi niño apuran hasta la centésima. :lol:
Jamás entendí eso ¿tan tan tan tan tan seguros están de la nota que merece el alumno? Entiendo que si no estás seguro de si merece un 7 o un 8, le pongas un 7,4. Que si hay 20 preguntas y algunas están medio bien le pongas un 8'25... Pero 3 decimales no lo usamos ni en los cálculos de corrientes de circuitos electrónicos :D
romeroca
14/06/2022, 19:04
Enhorabuena por la nota. Te lo mereces.
Lo del 9.9 tiene su explicación y es económica. Si te hubiese puesto 10 en todo tenías matrícula de honor, ergo gastos gratis para el siguiente curso/certificación en ese centro y eso no te lo dan tan así como así.
selecter25
14/06/2022, 19:19
Enhorabuena por la nota. Te lo mereces.
Lo del 9.9 tiene su explicación y es económica. Si te hubiese puesto 10 en todo tenías matrícula de honor, ergo gastos gratis para el siguiente curso/certificación en ese centro y eso no te lo dan tan así como así.
Gracias pamico!
En principio por factor económico no sé si será (que puede), el ciclo formativo es semipresencial y poco "gasto" hacemos, por no pedir no pedí ni la beca por no necesitarla (creo que el año pasado fueron unos 2000 pavos según me dicen compañeros que la recibieron). Que podría haberme comprado una buena GPU o pegarme unas buenas vacaciones? Seguramente, pero no me pareció ético.
Lo que sí me cuadra es la MH y el dolor que supondría para el pobre profesor tener que ponerme esa nota, cuando en el primer examen salí escopeteado :D.
Carlos24
15/06/2022, 07:25
Gracias pamico!
En principio por factor económico no sé si será (que puede), el ciclo formativo es semipresencial y poco "gasto" hacemos, por no pedir no pedí ni la beca por no necesitarla (creo que el año pasado fueron unos 2000 pavos según me dicen compañeros que la recibieron). Que podría haberme comprado una buena GPU o pegarme unas buenas vacaciones? Seguramente, pero no me pareció ético.
Lo que sí me cuadra es la MH y el dolor que supondría para el pobre profesor tener que ponerme esa nota, cuando en el primer examen salí escopeteado :D.
Si la beca si es de un FP puede ir hasta los 3000 y pico si donde estudias no es la misma provincia .
Esta dividida en tres partes la beca :
1 - Hasta 1700€ está atado la renta familiar va según los ingresos familiares de la misma vivienda si solo vive uno no puede pasar los 8000€ anuales , si son 2 sobre los 12000€ y se va aumentando un margen de unos 4000-5000€ de promedio por persona familiar si pasas de esos ingresos estipulados por renta solo te dan 300€ que es la beca básica .
2- La segunda parte de la beca va atado a los km de distancia del centro a tu vivienda aquí casi siempre es resolución parcial salvo que vivas fuera de la provincia y tenga más de 100km un promedio de unos 20km de distancia te lo resuelven en unos 400€ de promedio puede llegarte a pagar hasta los 1600€ según la distancia y fuera de la provincia y si necesitas pedir sitio para estudiantes
3 - La última parte va atado a la nota que saques final desde 50-125€ un promedio de 8 de nota te pagan unos 110€ .
Las dos últimas partes son denegadas si la renta familiar pasa del lindar 2 estipulado y si ingresas más de 155.500€ te deniegan hasta la más básica de 300€ y cada año se recalcula los límites .
También pueden denegarte la solicitud de la beca si no te matriculas para el 85% de las horas del curso en el caso de que sea el segundo año del FP y como es lógico si repites curso no se puede pedir beca (es más te pueden reclamarte el dinero si no apruebas) :D
Lo que sí me cuadra es la MH y el dolor que supondría para el pobre profesor tener que ponerme esa nota, cuando en el primer examen salí escopeteado :D.
Vergüenza por eso ninguna. Si tu examen está perfecto, no importa cuántas veces lo hayas intentado ni las notas de exámenes anteriores. Has salido escaldado, has estudiado, has practicado y has sabido hacerlo. No hay más que hablar ;)
Otra cosa es que hayas decidido ceder la beca a alguien que la necesita más que tú, pero no es el caso. Es más, sólo pueden dar X becas por MdH, y ya se encargan ellos de poner las notas acorde para no pasarse (te lo digo como víctima confesa de una denegación de matrícula :P).
Puede que romeroca tenga razón y no quieran darte el dinero (siendo un curso, especialmente privado, les cuesta mucho soltar dinero), o puede que ya haya otro con matrícula, o incluso que el profesor no sea capaz de darte el 10 porque no lo hiciste demasiado bien en el anterior examen y no se fía. Salvo en el segundo caso, puedes reclamar, pero sólo si realmente necesitas la MdH, porque es meterse en reclamaciones, revisiones de exámenes... y por lo poco que te conozco, entiendo que arriesgues tu nota cuando depende de tu esfuerzo, pero no para que los mismos que te las ponen te la puedan subir o bajar(y más alegando una falta de profesionalidad, anda que no se han enfadado profesores porque he ido a la revisión pensando que quería subir nota, cuando lo que quería era revisar los fallos), sería hacer lo mismos que esos que se van a quejar al profesor para que le suban la nota de un 4'5 a un 5 porque bananas.
selecter25
15/06/2022, 14:27
Si la beca si es de un FP puede ir hasta los 3000 y pico si donde estudias no es la misma provincia .
Esta dividida en tres partes la beca :
1 - Hasta 1700€ está atado la renta familiar va según los ingresos familiares de la misma vivienda si solo vive uno no puede pasar los 8000€ anuales , si son 2 sobre los 12000€ y se va aumentando un margen de unos 4000-5000€ de promedio por persona familiar si pasas de esos ingresos estipulados por renta solo te dan 300€ que es la beca básica .
2- La segunda parte de la beca va atado a los km de distancia del centro a tu vivienda aquí casi siempre es resolución parcial salvo que vivas fuera de la provincia y tenga más de 100km un promedio de unos 20km de distancia te lo resuelven en unos 400€ de promedio puede llegarte a pagar hasta los 1600€ según la distancia y fuera de la provincia y si necesitas pedir sitio para estudiantes
3 - La última parte va atado a la nota que saques final desde 50-125€ un promedio de 8 de nota te pagan unos 110€ .
Las dos últimas partes son denegadas si la renta familiar pasa del lindar 2 estipulado y si ingresas más de 155.500€ te deniegan hasta la más básica de 300€ y cada año se recalcula los límites .
También pueden denegarte la solicitud de la beca si no te matriculas para el 85% de las horas del curso en el caso de que sea el segundo año del FP y como es lógico si repites curso no se puede pedir beca (es más te pueden reclamarte el dinero si no apruebas) :D
Pues no está nada mal, gracias por la info. Hablando de ello el otro día con un compañero, me comentó que le hicieron 3 pagos, uno "gordo" de 1750€ al principio, y luego un par más pequeños (500 y 150 aprox) ya bien entrado el curso. Cuanto menos tentador.
Vergüenza por eso ninguna. Si tu examen está perfecto, no importa cuántas veces lo hayas intentado ni las notas de exámenes anteriores. Has salido escaldado, has estudiado, has practicado y has sabido hacerlo. No hay más que hablar ;)
Otra cosa es que hayas decidido ceder la beca a alguien que la necesita más que tú, pero no es el caso. Es más, sólo pueden dar X becas por MdH, y ya se encargan ellos de poner las notas acorde para no pasarse (te lo digo como víctima confesa de una denegación de matrícula :P).
Puede que romeroca tenga razón y no quieran darte el dinero (siendo un curso, especialmente privado, les cuesta mucho soltar dinero), o puede que ya haya otro con matrícula, o incluso que el profesor no sea capaz de darte el 10 porque no lo hiciste demasiado bien en el anterior examen y no se fía. Salvo en el segundo caso, puedes reclamar, pero sólo si realmente necesitas la MdH, porque es meterse en reclamaciones, revisiones de exámenes... y por lo poco que te conozco, entiendo que arriesgues tu nota cuando depende de tu esfuerzo, pero no para que los mismos que te las ponen te la puedan subir o bajar(y más alegando una falta de profesionalidad, anda que no se han enfadado profesores porque he ido a la revisión pensando que quería subir nota, cuando lo que quería era revisar los fallos), sería hacer lo mismos que esos que se van a quejar al profesor para que le suban la nota de un 4'5 a un 5 porque bananas.
Imagino que será un pseudocastigo en plan "podías haberlo hecho igual de bien la primera vez, pero no estudiaste lo suficiente". Y en parte tiene razón (aunque yo habiendo ejercido como profesor varios años no comparto su praxis), pero lo que no sabrá es que hay una razón de peso, y es el calendario de exámenes.
En semipresencial somos la última escoria y nos dejan las horas sobrantes para realizar nuestros exámenes. Esto hace que se den casos tan absurdos como tener que hacer 4 exámenes seguidos el mismo día, al día diguiente el más fácil (inglés) y luego a los 2 días ponen los 2 más difíciles (BDD y programación) seguidos, ambos en papel.
A todo esto súmale que el 90% de los que estamos cursando esto estamos trabajando, por lo que muchos no podemos ni conectarnos a las tutorías (semanales), cuesta mucho conciliar el horario laboral/académico/social...
Así que me doy con un canto en los dientes, me dolió tener que conformarme con un 5, pero no me duele el 9.9, mi etapa de estudiante ya pasó hace casi 20 años, solo me matriculé por tener la obligación de hacer algo más allá del trabajo y el gym y sacar algo de conocimiento básico de programación.
Carlos24
17/06/2022, 03:14
Pues no está nada mal, gracias por la info. Hablando de ello el otro día con un compañero, me comentó que le hicieron 3 pagos, uno "gordo" de 1750€ al principio, y luego un par más pequeños (500 y 150 aprox) ya bien entrado el curso. Cuanto menos tentador.
Sí así es
Depende de lo concedido te lo pagan mensualmente en vez de tres pagas , sobre todo si necesitas Sitio de estudiantes para dormir en vez de pagártelo de cara a final de curso ya que entienden que necesitas dinero a día a día para costearte todo, solo en este caso lo hacen así.
Sino es ese el caso te lo suelen ingresar a final de curso a 2-3 meses de finalizar el curso.
Primero te ingresan el de la renta , luego el de la distancia a los 15-20 días de recibir la parte de la renta coincidida y a falta de un mes te pagan el de las notas cuando ya ven que lo que te quede por finalizar no variara mucho tu nota final
Las fechas de cobro pueden variar según la comunidad Autónoma por el tema de principio y fin de estos pueden no ser iguales para todas .
Y tanto que no lo son. Yo recuerdo que hice en su día un módulo de Analista Programador en Java, allá por 2010 o 2011, creo. Me concedieron una beca por desplazamiento, poco, unos 300€ o así... Creo que la recibí en 2016, porque en 2014 se dieron cuenta que no habían comprobado mis datos. Había terminado el curso, había estado trabajando en un par de sitios, incluso terminé el Máster... :lol:
Pero claro, lo mío era un curso subvencionado orientado a gente en paro de aquella época. Las cosas han cambiado bastante desde entonces.
selecter25
17/06/2022, 16:50
Hoy me han entregado las notas finales!!
Ha ido todo bien, el de Programación me ha cascado un 10 en la global finalmente, 10 en Inglés Técnico, 10 en FOL (convalidada de SMR) y 10 en Sistemas Informáticos. En Entornos de Desarrollo me ha puesto Matrícula de Honor!!!(que ahora se le llama Mención Honorífica) pese a que en las dos primeras evaluaciones solo saqué un 9 (creo que se puede dar por encima de 9). Por debajo tenemos 8 en Lenguajes de Marcas (no me redondeó con un 8,7, meh) y un 8 también en Bases de datos .
Ocurrió algo muy meme en el examen de EDD, el profesor puso un diagrama de estados hecho a mano y expuso unas condiciones que el modelo debía cumplir. Había que indicar solamente verdadero o falso (las cumple o no), y me di cuenta que uno de los cambios de estado no se cumplía.
Era un ciclo de vida de un gusano, que se convierte en crisálida dependiendo de una serie de factores (alimentación, estación del año...), luego en mariposa etc... El gusano moría si no comía 1000gr. de comida y esa opción nunca se contemplaba en su diagrama (solo había un cambio de estado de gusano a crisálida, no moría directamente). El caso es que tuve la intuición de que el profesor quería que el diagrama fuese correcto, por lo que le pregunté. Y acerté, la respuesta "correcta" era verdadero, y lo corrigió en tiempo real durante el examen para que cualquiera de las dos fuese válida. Ahí creo que me gané la MH :D.
Nos vemos en el segundo curso con más problemas noobs!
que asco, al menos me queda el consuelo de que has engordado XDXDXD
selecter25
28/10/2022, 22:49
De momento no vengo a dar el tostón (no tardaré), solo a comentar impresiones del segundo curso (2ºDAM semipresencial). No ando muy agobiado, no me han mandado cosas extremadamente difíciles ni tampoco muy sencillas, me da para procrastinar todo y hacerlo el último día.
A grandes rasgos, estamos con:
* Acceso a Datos: Conectando JAVA a MySQL, repasillo previo de algunos conceptos de JAVA (sobre todo manejo de archivos), práctica de app simple conectando con JDBC a BDD, autenticación, querys, transacciones, blablabla, y ahora algo similar pero con Hibernate haciendo mapeo objeto-relacional. Ni tan mal, las prácticas tienen bastante curro pero es entretenido.
* Diseño de Interfaces: Basura, de momento prácticas guiadas con Visual Studio y C#, haciendo formularios y apps de los 90, un tostón.
* Programación de Servicios y procesos: Seguimos con JAVA, manejando procesos y programación multihilo de momento, tostonazo v2.
* Programación Multimedia y dispositivos móviles: De momento la más interesante, fundamentos de Kotlin y luego de lleno con Android Studio, el profesor dice que puede que toquemos algo de Flutter.
* Sistemas de Gestión Empresarial: Típica asignatura de relleno que te obliga a memorizar, de las de buscar en Google, que una IA te haga resumen y entregar. ERPs, MCR, IA, blockchain... todo a nivel conceptual, tostonazo.
El resto pues Inglés Técnico (que no la convalido porque no me ponen 10, prefiero hacerla porque es un juego de niños) y Empresa e iniciativa Emprendedora que la convalido de otro ciclo.
De lo que llevo visto, me ha gustado bastante Kotlin después de sufrir JAVA, el menor tipado, algo más natural, ha sido como quitarle las polillas a JAVA. Ahora odio aún más a JAVA. El resto ni fu ni fa, si acaso Acceso a datos, pero no deja de ser conectar lo que aprendí de SQL/PLSQL/MongoDB con JAVA usando librerías.
De lo que me queda, creo que disfrutaré bastante Flutter, aunque a nivel personal siempre me ha atraído más la idea de algo más versátil como un framework JS que se pueda trabajar también en nativo, como React o el propio FlutterJS, así me abriría un poco más a JS y al desarrollo web.
MasterGame
28/10/2022, 23:09
Yo es que despues de tocar mil lenguajes el c# me tiene ganao
selecter25
28/10/2022, 23:46
En qué ámbito programas?
C# lo he tocado básicamente para Unity (ahí sí es la *****) y me parece muy similar a JAVA, orientado a objetos, fuertemente tipado, se me hace algo pesado. Encima todo lo que estamos viendo de momento en C# son diseños bajo Forms, por lo que estamos limitados a Windows, ni siquiera hemos tocado multiplataforma. Imagino que para soft embebido y demás irá bastante bien, pero tampoco es un lenguaje que me enamore.
Pues a mi el C# no me gusta :P
selecter25
29/10/2022, 20:20
Nono, a mí tampoco, me parece la misma pozoña que JAVA, pero como necesitaba meterle mano sí o sí para Unity, es de las cosas que más he tocado. Digamos que lo que me gusta es Unity en sí como IDE, se pueden hacer bastantes cosas siendo un paquetazo.
Sin embargo haciendo cosillas multiplataforma/móvil con Kotlin/Dart y otras con Python, me entretengo mucho más que con el tostonazo que estoy viendo en clase.
A ver, no quiero parecer fanboy, pero sigo pensando que C# es un lenguaje... no perfecto, pero bastante apañado. Es muy similar a Java, desde luego, pero la sintaxis es más sencilla de entender (y mucho más que lo que he llegado a ver en C++, que la sintaxis de POO tiene tela con tanto símbolo... o al menos, cuando yo lo vi).
Lo que más me gusta es que parece que su rendimiento es mejor que Java 6, y que el IDE (y no me puedo creer que esté diciendo esto) en mucho mejor: VS es más rápido (salvo en ocasiones con el intellisense) y más estable que Eclipse. No he probado Android Studio aún.
Ya por lo que veo has avanzado más lejos de lo que yo he llegado en cuanto a webs y BBDD. Lo de formularios estilo años 90 no sé qué decirte, ya que yo uso las librerías de Windows para eso y tienen esa estética (o al menos, eso me ha parecido). No te quieras meter en moderneces porque yo, con Xamarin, la interfaz la hago en XAML, que es una derivación de XML, y ya he entrevisto las capacidades de usar hojas de estilo CSS, y tras hacer alguna página web en .NET Core con Razor (HTML y trocitos de código .NET) me quiero morir ^^U
Y del multihilo no te puedo decir nada. En C# aún me estoy peleando con async-await y la sincronización de hilos, que en teoría es sencillo de entender (y por suerte, aún no he necesitado semáforos), y doy gracias por años programando en Fenix y BennuGD, porque tengo el cerebro adaptado a la ejecución concurrente.
Sólo espero que el año que viene no hayas olvidado ya la mitad de lo que has aprendido :D :D :D
selecter25
02/11/2022, 18:15
Desde mi inexperiencia, con C# me sucede lo mismo que con la mayoría de lenguajes multiparadigma "clásicos", apañados para todo, pero cómodos para casi nada. Imagino que es como tener una relación de pareja, al cabo de los años das todo por bueno o por malo al no poder comparar, y te acostumbras (o malacostumbras) a todo.
A mí me ha abierto un poco los ojos el hecho de ser un noob y probar cosas "modernas" con la mente casi virgen, como Kotlin, Flutter/Dart, Python... aunque imagino que de cara al mundo laboral, abarcar mucho no es lo normal, te "estancas" en lo mismo según el proyecto que pilles y te "especializas", con sus pros y contras.
En Android Studio hemos pasado por diseño de layouts y ya viene la "chicha", ciclos de vida de Activity, patrón MVVM, Livedata, aprendiendo a conservar datos, me parece lo más entretenido que hemos hecho hasta ahora.
En Desarrollo de Interfaces seguimos viendo más cosillas en forms, listas/menús, arrastrar, bastante similar (aunque más sencillo) al diseño de Layouts en Android Studio.
De momento no me he atascado en mucha cosa, que no es poco, si lo hago me veréis por aquí llorando.
Yo es que, de experiencia laboral, no tengo mucha, ya que he tenido la "suerte" de ir aguantando largos periodos en las pocas empresas en las que he estado, cuando lo normal es estar en un proyecto o dos, antes de que te sustituyan por el siguiente becario que les salga más barato (o que esté menos quemado que tú).
Lo que sí veo es que piden mucha especialización, a niveles casi enfermizos. Por un lado, porque el de RRHH no sabe de qué leches está hablando, y por otro porque los programadores somos muy maniáticos. Pero a la hora de la verdad, o te acaban pidiendo que hagas de todo (como ejemplo, yo mismo, que he pasado de C# a programar en XAML, VB6, SQL, el susodicho Razor, y algún día me tendré que pelear con JS), o acabas usando tu formación en los distintos lenguajes para solucionar tus problemas del día a día (como digo, años de BennuGD me han venido de miedo para hilos y Unity). Cuantos más lenguajes y paradigmas conozcas, más herramientas tienes para programar, aunque eso no siempre funciona a tu favor en el mundo laboral.
Por eso no me atrevo a dar consejos. A mi me funciona el saber de todo un poquito, y me considero aún un novato en muchos aspectos (incluso sigo cometiendo errores de novato, tanto en código como en planificación ^^U). Te permite usar la herramienta adecuada para el problema concreto, pero jamás lo haces a la velocidad de alguien que domina el asunto.
Además, cada vez que leo listas de lenguajes, frameworks y utilidades varias, me abruman tantas posibilidades y me es imposible elegir un camino... porque no los conozco, no te los explican, y no sabes si te gusta hasta que no te has metido de cabeza en ello. Por eso me cuesta tanto salir de mi zona de confort (me han dicho que aún tengo mentalidad de programador de principios de siglo ^^U Por ejemplo, porque no uso excepciones para devolver errores, cuando de siempre me han enseñado que una excepción es un error que el programador no ha previsto, y eso es un pecado).
Lo bueno de Java es que es muy cohesionado y coherente, sin embargo el problema de Java es que es muy cohesionado y coherente.
Tengo cierta envidia por los que empiezan a aprender programación con Kotlin, Typescript o Python >3.8 porque sé que van a aprender y asimilar mejores técnicas de programación que yo, que ahora tengo mucho que desaprender :(
selecter25
03/11/2022, 14:29
Lo bueno de Java es que es muy cohesionado y coherente, sin embargo el problema de Java es que es muy cohesionado y coherente.
Tengo cierta envidia por lo que empiezan a aprender programación con Kotlin, Typescript o Python >3.8 por que sé que van a aprender y asimilar mejores técnicas de programación que yo, que ahora tengo mucho que desaprender :(
100% de acuerdo, además el salto de Java a Kotlin es muy natural (al ser interoperable) y con una curva de aprendidaje muy suave, si ya se tiene una base mínima en Java.
Al final acabas haciendo el mismo programa con la mitad de código, declaración genérica de variables, expresiones Lambda, delegaciones, ausencia de NPE... Son todo comodidades que hacen que no quiera tocar Java nunca mais.
Pero yo creo que eso de no declarar los tipos de variables es una práctica peligrosísima. Un lenguaje fuertemente tipado te previene de provocar conflicto entre tipos de datos, y provocar desbordamientos de pila porque el compilador interpreta las cosas de forma diferente a lo que tú quieres. No niego que usar algún "var" para obtener un dato del que no estás seguro 100% de su tipo, o para debug es muy útil, pero cuando en VB6 añado una cadena a una variable y luego le puedo sumar 1, algo por dentro se me muere.
Sí, es un peñazo gordo el andar buscando tipos de dato, haciendo conversiones e implementando interfaces de "IsCloneable" y demás... pero te queda un código robusto a prueba de novatos.
Pero claro, yo me "crié" con C en su día, y Fenix después, usando 5 tipos de variables nada más, y escribiendo con el notepad++. En cuanto me pusieron Eclipse y VS con intellisense y autocompletar, volaba escribiendo código :D
Va un poco por modas. Los lenguajes sin tipados tuvieron su momento (Python, JavaScript) y ahora hay versiones "hardcore" de esos mismos lenguajes con tipado (Python con la librería typing y TypeScript)
Por mi parte, uso el tipado no para ahorrar bugs porque no creo que haya tantos bugs creados por un tipado incorrecto en programas modernos, sino para documentar el código: esta función devuelve un entero "-> int", este parámetro es de tipo "parametro: Item | None". Así creas rápidamente documentación y aparece en el intellisense ése, y una buena documentación sí que ahorra bugs.
selecter25
03/11/2022, 19:14
Pero yo creo que eso de no declarar los tipos de variables es una práctica peligrosísima. Un lenguaje fuertemente tipado te previene de provocar conflicto entre tipos de datos, y provocar desbordamientos de pila porque el compilador interpreta las cosas de forma diferente a lo que tú quieres. No niego que usar algún "var" para obtener un dato del que no estás seguro 100% de su tipo, o para debug es muy útil, pero cuando en VB6 añado una cadena a una variable y luego le puedo sumar 1, algo por dentro se me muere.
Sí, es un peñazo gordo el andar buscando tipos de dato, haciendo conversiones e implementando interfaces de "IsCloneable" y demás... pero te queda un código robusto a prueba de novatos.
Pero claro, yo me "crié" con C en su día, y Fenix después, usando 5 tipos de variables nada más, y escribiendo con el notepad++. En cuanto me pusieron Eclipse y VS con intellisense y autocompletar, volaba escribiendo código :D
No funciona del todo así, solo se permite obvbiar el tipo de dato cuando el IDE determina 100% que no hay otra opción posible, en ese caso aparece como una anotación a la derecha, de modo que queda siempre documentado, y el compilador te hace el casting. En todo momento sabes de qué se trata lo que declaras.
Del mismo modo, te autocompleta identificadores si los omites:
https://i.imgur.com/Cjhdnzq.png
Aún así puedes declarar explícitamente el tipo de variable con "var loquesea: String", el uso de var/val en Kotlin es simplemente indicar que la variable es mutable o inmutable.
Va un poco por modas. Los lenguajes sin tipados tuvieron su momento (Python, JavaScript) y ahora hay versiones "hardcore" de esos mismos lenguajes con tipado (Python con la librería typing y TypeScript)
Por mi parte, uso el tipado no para ahorrar bugs porque no creo que haya tantos bugs creados por un tipado incorrecto en programas modernos, sino para documentar el código: esta función devuelve un entero "-> int", este parámetro es de tipo "parametro: Item | None". Así creas rápidamente documentación y aparece en el intellisense ése, y una buena documentación sí que ahorra bugs.
En este caso la sintaxis es tan simple y obvia, sobre todo por el uso de Lambdas, que las funciones quedan reducidas al absurdo y son fácilmente legibles:
https://i.imgur.com/aShIJJU.png
Sí, a eso me refiero. Usando los hint de tipado incluso en lenguajes donde el tipado no es obligatorio (Javascript, Python), hace que el propósito de la función, qué espera y qué devuelve, sea más obvio y en las más sencillas incluso te ahorras escribir la documentación.
selecter25
07/11/2022, 00:04
Entregada sobre la bocina la práctica de JAVA, hacer CRUD en un proyecto MAVEN por consola, con ORM Hibernate desde MySQL, en MVC, anotaciones, mapeos, validaciones, exportación a XML, importado desde JSON... todo simulando una aplicación usable en el mundo real (un videoclú). Qué dolor!!!!!
Dos tardes solo para conseguir conectar con la BDD :D, ejemplos del temario que usan librerías del pleistoceno con 123978562587926598 cosas "deprecated", básicamente aprendiendo desde 0 mirando documentación de la API, proyectos de GitHub y StackOverflow.
Una vez conectado, tras hacer la BDD, prepara un entramado de switch/case que ni el laberinto de Tom Cruise, POJOs por doquier, clases DAO con 239857289756 métodos iguales que implementar en las opciones del menú. Captura 238965734896723048967308957 excepciones de manera "no genérica", hemos venido a jugar, si salta una la práctica no es válida.
Una vez dominas las transacciones y realizas operaciones CRUD más o menos decentemente, prepárate para las consultas.
Oh mira! Un método para crear consultas nativas en SQL, es mi día de suerte. Ah no, hay que hacerlas en HQL o la práctica no es válida. Y no te olvides de hacerme el readme.mb bien bonito, pruebas unitarias, funcionamiento del programa en vídeo y aparte un pdf explicando el funcionamiento interno.
Me ha faltado sacarle al perro y lavarle el coche. A tomar porc**o el finde. P*****to JAVA!!!!!!!!!!!!
O sea, el día a día de un programador :D
Nah, no suele ser tan duro. Sí que te encuentras problemas, y seguro que la mitad del trabajo te lo podrías haber ahorrado con un poco más de conocimientos, pero claro, es lo que tiene aprender sobre la marcha (y como siempre están saliendo cosas nuevas, nunca terminas de aprender).
Al menos no tienes un jefe que, cuando te pregunta la estimación de tiempos, y tu le dices que vas a tardar dos semanas (incluyendo una jornada extra por "posibles problemas"), este te mira mal y te dice que reduzcas el tiempo, para que cuando estés en mitad del desarrollo te encuentres que faltan cosas por implementar, o no se pueden hacer como habías previsto, y esas dos semanas se convierten en tres, pero tú te has comprometido por una y media.
O sea, que sí, que los tiempos que te dan es para que te vayas acostumbrando :D
selecter25
07/11/2022, 13:42
O sea, el día a día de un programador :D
Nah, no suele ser tan duro. Sí que te encuentras problemas, y seguro que la mitad del trabajo te lo podrías haber ahorrado con un poco más de conocimientos, pero claro, es lo que tiene aprender sobre la marcha (y como siempre están saliendo cosas nuevas, nunca terminas de aprender).
Al menos no tienes un jefe que, cuando te pregunta la estimación de tiempos, y tu le dices que vas a tardar dos semanas (incluyendo una jornada extra por "posibles problemas"), este te mira mal y te dice que reduzcas el tiempo, para que cuando estés en mitad del desarrollo te encuentres que faltan cosas por implementar, o no se pueden hacer como habías previsto, y esas dos semanas se convierten en tres, pero tú te has comprometido por una y media.
O sea, que sí, que los tiempos que te dan es para que te vayas acostumbrando :D
Doy por hecho que la mayoría de programadores viven así en el día a día, pero joé, es un CFGS semipresencial, hemos venido a aprender, se supone que no tenemos experiencia, ni tiempo, lo compaginamos con otras asignaturas, con el trabajo y con la familia (la media de edad en semipresencial es bastante elevada).
Esto es como intentar aprender a pilotar un avión y que te suelten en un Albatros D.III al lado del Barón Rojo.
Pues a mi el C# no me gusta :P
Coincido contigo, no aporta mucho y sigue teniendo los problemas de los runtimes en windows, aparte de que no es multiplataforma aunque exista mono.
-----Actualizado-----
Hoy me han entregado las notas finales!!
Ha ido todo bien, el de Programación me ha cascado un 10 en la global finalmente, 10 en Inglés Técnico, 10 en FOL (convalidada de SMR) y 10 en Sistemas Informáticos. En Entornos de Desarrollo me ha puesto Matrícula de Honor!!!(que ahora se le llama Mención Honorífica) pese a que en las dos primeras evaluaciones solo saqué un 9 (creo que se puede dar por encima de 9). Por debajo tenemos 8 en Lenguajes de Marcas (no me redondeó con un 8,7, meh) y un 8 también en Bases de datos .
Ocurrió algo muy meme en el examen de EDD, el profesor puso un diagrama de estados hecho a mano y expuso unas condiciones que el modelo debía cumplir. Había que indicar solamente verdadero o falso (las cumple o no), y me di cuenta que uno de los cambios de estado no se cumplía.
Era un ciclo de vida de un gusano, que se convierte en crisálida dependiendo de una serie de factores (alimentación, estación del año...), luego en mariposa etc... El gusano moría si no comía 1000gr. de comida y esa opción nunca se contemplaba en su diagrama (solo había un cambio de estado de gusano a crisálida, no moría directamente). El caso es que tuve la intuición de que el profesor quería que el diagrama fuese correcto, por lo que le pregunté. Y acerté, la respuesta "correcta" era verdadero, y lo corrigió en tiempo real durante el examen para que cualquiera de las dos fuese válida. Ahí creo que me gané la MH :D.
Nos vemos en el segundo curso con más problemas noobs!
¿Lenguaje de marcas?
selecter25
07/11/2022, 15:07
Coincido contigo, no aporta mucho y sigue teniendo los problemas de los runtimes en windows, aparte de que no es multiplataforma aunque exista mono.
-----Actualizado-----
¿Lenguaje de marcas?
En DAM vemos poca web, está orientado al desarrollo multiplataforma, solo hay Lenguaje de marcas en primero, en la que compartimos todas las asignaturas con DAW, que sí está centrado totalmente al desarrollo web y en el que las asignaturas de segundo están orientadas a ello (Desarrollo web cliente, Desarrollo web servidor, Diseño de interfaces web, despliegue...).
En lo poco que vimos de LDM en primero, tampoco hicimos nada especial, HTML/CSS, XML, XHTML, XSL/T, XSD... ni siquiera llegamos a tocar Javascript.
Doy por hecho que la mayoría de programadores viven así en el día a día, pero joé, es un CFGS semipresencial, hemos venido a aprender, se supone que no tenemos experiencia, ni tiempo, lo compaginamos con otras asignaturas, con el trabajo y con la familia (la media de edad en semipresencial es bastante elevada).
Esto es como intentar aprender a pilotar un avión y que te suelten en un Albatros D.III al lado del Barón Rojo.
Bueno, yo quiero creer que a los profesores les aqueja el mayor mal de todos los programadores: las estimaciones demasiado optimistas de tiempos :D Yo creo que, como nos pasa a todos, se piensan que el código se va a tardar la mitad en hacerse de lo que realmente se termina tardando, y aún así, a los novatos os (nos) dan el doble de lo que ellos han estimado. Seguramente, si dieran el tiempo real (el doble del doble de lo estimado) no tendrías tantos problemas de llegar a tiempo.
No obstante, sí que se programa más rápido dando clases que luego cuando trabajas. Yo he revisado los códigos que hacía en clase, y más concretamente del examen práctico, y aún hoy me asombra que aquello lo escribiera en 3 horas (¿o fueron 5? el examen más largo de la carrera), y sin fallos (o sea, con una depuración decente). Si lo intentase hoy día, incluso en BennuGD o C#, que es con lo que tengo más práctica, tardaría el doble o el triple, y seguro que le encuentro algún error :D :D :D
También te digo: ese código que has escrito, al final, vas a tener que copiarlo línea por línea cuando estés trabajando :D Mi examen era una lista enlazada y todas sus funciones y luego usarla para añadir, quitar, etc, etc... y de no ser por las List de C#, estaría copiando ese código unas tres veces al día. El Tilemap Editor que hice hace un porrón de años, tiene como 20 veces ese código, uno por tipo de dato.
En DAM vemos poca web, está orientado al desarrollo multiplataforma, solo hay Lenguaje de marcas en primero, en la que compartimos todas las asignaturas con DAW, que sí está centrado totalmente al desarrollo web y en el que las asignaturas de segundo están orientadas a ello (Desarrollo web cliente, Desarrollo web servidor, Diseño de interfaces web, despliegue...).
En lo poco que vimos de LDM en primero, tampoco hicimos nada especial, HTML/CSS, XML, XHTML, XSL/T, XSD... ni siquiera llegamos a tocar Javascript.
Ah, coñe que lenguaje de marcas es markup, lo habia oido como lenguaje de etiquetas o descriptivo pero nunca como lenguaje de marcas, me hago viejo :D
selecter25
21/11/2022, 19:48
Primer lloro del curso. Estamos viendo concurrencia en JAVA, trabajando en multihilo, sincronizando hilos... La teoría es escueta, ejemplos sencillos de uso de interfaz Runnable, Thread y clases sincronizadas.
Primeros ejercicios acordes a las explicaciones, simular una carrera de relevos, hacer un archivo txt en el que escriban 3 hilos distintos...
De repente una última tanda de ejercicios y... El salto de nivel es exponencial, buffers, punteros, monitores complejos, tanto que me toca tirar de buscador e intentar "sacar info" de otros proyectos "similares", algo de lo que solo tengo éxito en 2 de ellos. Consulto con el resto de compañeros y efectivamente, lloro colectivo, gente abrumada y nadie ha conseguido acabarlos.
Igual no son del todo difíciles, pero os aseguro que con la teoría que ha explicado, no hay por dónde cogerlos.
Me consuelo como los tontos, por el mal mayor, pero en 1 semana tengo examen y si pone algo así estoy fuera :lol2:, eso contando con que se apiade con la entrega de esta última práctica.
Os dejo un enunciado para que os hagáis una idea:
https://i.imgur.com/TeMYVxP.png
Elche, Alicante, seguro que si viviera la Rita pillaría alguna comisión.
¿Se puede implementar como quieras? Es que cada persona podria ser un proceso con un estado (estoy esperando, conduciendo) y sean "ellos" los que se encarguen de cambiarse de estado, o puedes tener un proceso que se encargue de ir despachando a la gente que va entrando (la entrada de gente se irian generando por otro proceso), no lo tengo claro.
selecter25
21/11/2022, 20:58
En principio la implementación es libre mientras se respete el modelo y funcione como es debido, en la práctica en estos casos hemos utilizado monitores que gestionan el resto de hilos, una baliza en un parking, el típico problema del puente de Duero... Por el enunciado interpreto que cada persona es un hilo y que el circuito controla el acceso de estos, la sala de espera será una cola con capacidad máxima. Lo más parecido que he hecho creo que es esto para el ejercicio del puente de Duero (que ya me parece un pooto milagro para el nivel que tenemos):
package ud4ejerProp3spl;
import java.util.Random;
/**
*
* @author SPL
*/
public class Coche extends Thread{
private final int IZQ = 0;
private final int DER = 1;
private int sentido;
private static int n = 0;
Monitor monitor;
private int id;
public Coche(Monitor monitor){
n++;
id = n;
this.monitor = monitor;
}
@Override
public void run(){
try {
sleep((long) ((new Random()).nextInt(80000)));
this.sentido = (new Random()).nextInt(2); //0 o 1
if (sentido==IZQ) {
puenteporlaIzq();
}else if (sentido==DER) {
puenteporlaDer();
}else{
System.out.println("Error, el coche se ha generado en un sentido no válido");
}
} catch (InterruptedException e) {
System.out.println("Error "+e);
}
}
private void puenteporlaIzq(){
try {
monitor.llegacocheIzq(id);
monitor.pasacocheIzq(id);
sleep(100);
monitor.salecocheIzq(id);
} catch (InterruptedException e) {
System.out.println("Error " + e);
}
}
private void puenteporlaDer(){
try {
monitor.llegacocheDer(id);
monitor.pasacocheDer(id);
sleep(100);
monitor.salecocheDer(id);
} catch (InterruptedException e) {
System.out.println("Error " + e);
}
}
}
package ud4ejerProp3spl;
import javax.imageio.IIOImage;
/**
*
* @author SPL
*/
public class Monitor {
private final int DER=1;
private final int IZQ=0;
private final int NONE=-1;
private final int MAXSEGUIDOS =1;
private final int CAPACIDAD = 1;
private int colaCochesIzq;
private int colaCochesDer;
private int cochesPuenteIzq;
private int cochesPuenteDer;
int turno;
int seguidos;
int ocupacion;
Monitor monIzq;
Monitor monDer;
public Monitor(){
colaCochesDer = colaCochesIzq = 0;
cochesPuenteDer = cochesPuenteIzq = 0;
turno = NONE;
seguidos = 0;
ocupacion = 0;
}
//constructor parametrizado II
public Monitor(Monitor izq,Monitor der){
this();
this.monDer = der;
this.monIzq = izq;
}
public synchronized void llegacocheIzq(int id){
System.out.println("El coche "+id+" llega a la cola (izquierda)");
colaCochesIzq++;
}
public synchronized void llegacocheDer(int id){
System.out.println("El coche "+id+" llega a la cola (derecha)");
colaCochesDer++;
}
public synchronized void salecocheIzq(int id){
System.out.println("El coche "+id+" sale del puente (izquierda)");
boolean ultimo = false;
cochesPuenteIzq--;
ocupacion--;
if (ocupacion==0) {
ultimo = true;
}
if (cochesPuenteIzq==0) {
if (cochesPuenteDer > 0) {
turno = DER;
}else{
turno= NONE;
}
if(seguidos==MAXSEGUIDOS){
seguidos=0;
}
}
if ((turno==IZQ || turno==NONE) && seguidos<MAXSEGUIDOS && !ultimo && ocupacion < CAPACIDAD){
despertarIzq();
}else if (ultimo && turno==DER) {
despertarDer();
}
}
public synchronized void salecocheDer(int id){
System.out.println("El coche "+id+" sale del puente (derecha)");
boolean ultimo = false;
cochesPuenteDer--;
ocupacion--;
if (ocupacion==0) {
ultimo = true;
}
if (cochesPuenteDer==0) {
if (cochesPuenteIzq > 0) {
turno = IZQ;
}else{
turno= NONE;
}
if(seguidos==MAXSEGUIDOS){
seguidos=0;
}
}
if ((turno==DER || turno==NONE) && seguidos<MAXSEGUIDOS && !ultimo && ocupacion < CAPACIDAD){
despertarDer();
}else if (ultimo && turno==IZQ) {
despertarIzq();
}
}
private synchronized void despertarDer(){
try {
this.monDer.notify();
} catch (Exception e) {
}
}
private synchronized void despertarIzq(){
try {
this.monIzq.notify();
} catch (Exception e) {
}
}
public synchronized void pasacocheIzq(int id){
try {
if (turno == DER || seguidos >= MAXSEGUIDOS || ocupacion >= CAPACIDAD) {
monIzq.wait();
}
turno = IZQ;
System.out.println("El coche " +id+ " está cruzando el puente (izquierda)");
cochesPuenteIzq++;
ocupacion++;
System.out.println("Ocupación del puente: " + ocupacion + "/" +CAPACIDAD);
colaCochesIzq--; //se quita de la cola
if (colaCochesDer>0) {
seguidos++;
}
System.out.println("Coches seguidos mientras en DERECHA esperan: " +seguidos+ "/" + MAXSEGUIDOS);
} catch (InterruptedException e) {
System.out.println("Error" + e);
}catch (IllegalMonitorStateException e){
}
}
public synchronized void pasacocheDer(int id){
try {
if (turno == IZQ || seguidos >= MAXSEGUIDOS || ocupacion >= CAPACIDAD) {
monDer.wait();
}
turno = DER;
System.out.println("El coche " +id+ " está cruzando el puente (derecha)");
cochesPuenteDer++;
ocupacion++;
System.out.println("Ocupación del puente: " + ocupacion + "/" +CAPACIDAD);
colaCochesDer--; //se quita de la cola
if (colaCochesIzq>0) {
seguidos++;
}
System.out.println("Coches seguidos mientras en IZQUIERDA esperan: " +seguidos+ "/" + MAXSEGUIDOS);
} catch (InterruptedException e) {
System.out.println("Error" + e);
}catch (IllegalMonitorStateException e){
}
}
}
package ud4ejerProp3spl;
/**
*
* @author SPL
*/
public class UD4EjerProp32SPL {
static int numcoches = 10;
public static void main(String[] args) {
Monitor auxIzq = new Monitor();
Monitor auxDer = new Monitor();
Monitor puente = new Monitor(auxIzq,auxDer);
Coche aux;
for (int i = 0; i < numcoches; i++) {
aux = new Coche(puente);
aux.start();
}
}
}
A la gente con experiencia, os parece algo sencillo para un (unos) estudiante/s novatillo/s? Sed sinceros, no va a doler.
Si, mas o menos estaba pensando eso, un proceso para cada persona. Ademas necesitaras de un proceso extra que se encargue de mirar de si hay suficientes clientes de un tipo (niño o adulto) y ahora los karts estan ocupados, "bloquear" a nuevos pilotos hasta que la pista quede libre y entonces metes a un cliente del otro grupo, para que niños o adultos no se queden esperando siempre. Vamos, un proceso para controlar quien accede a la pista.
Bue, es un ejercicio interesantísimo y también difícil hacerlo bien. ¡Mucho ánimo!
Para que veas lo interesante que es, lo que te piden es que implementes RabbitMQ o similar (kafka, redis, zeromq...), un broker de mensajes que está en el corazón de la computación distribuida. Es decir, en el futuro no programarás este sistema desde cero, sino que usarás RabbitMQ o similar.
selecter25
21/11/2022, 22:09
Exacto, de hecho la asignatura justo entra ahora en eso, cliente-servidor con sockets y luego veremos REST, parece que se pone interesante la asignatura, a la par que complicada.
El problema es que veremos todo en multihilo y si arrastramos carencias en lo que se supone que es la base de concurrencia, nos las vamos a ver canutas. A ver si saco algo de tiempo y le meto horas extras por otros lares, pero quedan prácticamente 3 meses de curso y esta asignatura la veo negra.
El resto va bien, en Acceso a Datos hemos vuelto a hacer CRUD pero en BDD orientadas a objetos (Oracle y ObjectDB), creo que lo que queda es pan comido. Diseño de Interfaces estamos haciendo editores de texto con Forms y C#(no hemos salido de ahí :(), Programación Multimedia y Dispositivos Móviles hemos pasado a usar Navigation y movernos entre Fragments, mucho más cómodo que andar usando Actitivies. SGE es básicamente buscar características de ERPs y CRMs en Google.
Creo que ya te lo comenté, pero tras años trabajando en Fenix y BennuGD, donde todo son procesos, aún hoy cometo errores con la programación concurrente en .NET, y hace cosa de un mes y pico tuve que lidiar con un error de diseño que me llevaba a un interbloqueo muy chungo (para los que no lo sepan, es cuando un proceso 1 ejecuta un código que necesita datos de un proceso 2, pero al ejecutar el proceso 2 necesita que antes le devuelva un dato el proceso 1: ambos quedan a la espera y ninguno se ejecuta).
Lo bueno de Fenix y BennuGD es que todos los procesos quedan perfectamente sincronizados, siempre, y que no tienes que trabajar con señales (bueno, esto es más una desventaja, pero te simplifica mucho los problemas, y en colaboración con el punto anterior, hay formas de suplir el envío de mensajes).
Pero lo dicho, todo el tema de concurrencia lo he visto a nivel teórico, y en Teleco no te enseñan los algoritmos típicos que se enseñan en informática (entre otras cosas, porque los procesos y señales que tratábamos nosotros no eran sólo para C o Java, sino también para HW puro y duro, microcontroladores enviando señales a otros microcontroladores, o partes de un CI mandando señales a otros bloques). Lo que vengo a decir es que sí, es un tema muy complicado, que requiere una disciplina mental muy fuerte, una abstracción de los objetos, y un cambio de la forma de pensar que, en mi experiencia (ya es cuestión de si te fías de ella o no), la mayoría no es capaz de hacer.
Por lo que sí, esos problemas es normal tenerlos. Sí, es muy complicado, a todos los niveles. Y sí, ese programa es muy complejo, y está hecho para ver quién ha conseguido asimilar a la perfección todos los conceptos y es capaz de llevarlos a la práctica. Si eres capaz de hacerlo, enhorabuena, has conseguido superar a muchos alumnos de 4º de carrera, y quizás de 5º (o al menos, yo he conocido gente de esos cursos a los que el tema de semáforos se les ha atragantado, o le han dado al reset tan pronto han aprobado la asignatura).
Y como ya he escrito un chorizo, y no me las quiero dar de entendido (porque en el tema de procesos soy autodidacta), no te voy a proponer ningún esquema concreto. Reconozco que prefiero el sistema de "un proceso para controlarlos a todos" al de un "sistema colaborativo" o de "competición" (son los propios procesos los que se autorregulan), y es en torno a lo que gira mi motor de scroll tileado... pero seguro que habrá unos sistemas mejores que otros según tu situación.
...Aunque no me puedo resistir a apoyar lo que dice Swapd0: un proceso controlador, y luego los procesos independientes que cambian de estado solos, y se lo notifican mediante señales al controlador para que actúe en consecuencia. Y como chapuza (por favor, no lo hagas :D), un proceso llamado "watchdog", que cuando detecta que el sistema se ha quedado estancado en un estado, interviene para desatascarlo (ocupando un sitio libre, o sacando de la pista a un niño que no se quiere salir pese a llevar 3 horas dando vueltas y que ya ha vomitado en tres de las protecciones del circuito).
selecter25
22/11/2022, 18:37
Para nada, biblias así son bienvenidas y cualquier aporte o feedback que reciba de gente como vosotros es oro, gracias a todos.
Tocará meterle algo de caña por mi cuenta entonces, no es que me queje de los ejercicios en sí, sino del poco contenido didáctico que hemos tenido para afrontarlos, prácticamente hemos visto clases que implementan Runnable/Thread, métodos sincronizados y poco más (a un nivel muy básico), de ahí hemos saltado a ejemplos de ejercicios resueltos con semáforos, buffers, monitores y luego este tipo de ejercicios más complejos que han acabado por estallarme la cabeza. A todo esto es un CFGS semipresencial, por lo que no recibo ningún tipo de clase (las tutorías son presenciales y el centro está a 20Km, tengo vida, trabajo, otras asignaturas...).
Y luego el caso es que no es este ejercicio solo, hay 5 más para resolver del mismo tipo, y de momento solo he logrado hacer 2. Seguiremos mejorando.
Nada nada Drumpi, no se nos permite utilizar ningún proceso "Watchdog", eso es como darle el golpe a la máquina de pinball :D. En uno de los problemas que hicimos (5 filósofos que comían en una mesa y compartían palillos) se podían producir interbloqueos si todos los filósofos cogían el palillo de la izquierda a la vez, y había que solucionarlo a mano, forzando que los filósofos con "id" par cogiesen el de la derecha.
¿Ves tú? el problema de los filósofos sí que nos lo plantearon en clase... pero jamás nos dieron una solución, o al menos LA solución. Nos comentaron por encima algunas posibles soluciones pero jamás llegamos a implementarlo. El caso es que me figuraba que no te dejarían "perrito guardián", por eso lo he planteado como una coña :D (si todo está bien sincronizado, no hace falta, claro)... pero en el contexto nuestro, los DSP, especialmente los dirigidos a sistemas en tiempo real, lo incorporan por HW (o al menos, lo incorporaban, no sé si ya han cambiado esos chips por Raspberri Pi Zero :D).
Lo único que puedo hacer ahora es darte apoyo moral, que creo que te hace falta, y plantear teóricamente alguna solución, porque como digo, el tema de semáforos y demás lo veíamos escrito en las diapositivas, jamás lo implementamos mediante teclado (y encima creo que era pseudo-código simulando C), y en C# no me han explicado más allá del async-await... y aún tengo problemas para entender por qué a veces sí que un proceso espera la respuesta del anterior y otras no.
De todas formas, lo dicho, BennuGD trabaja de esa forma, aunque mucho más simplificado, y entender el tema de procesos te ayudará a entender el sistema de Unity, y cómo programar los distintos objetos, teniendo en cuenta este comportamiento concurrente.
Es curioso, a la gente le cuesta entender el concepto de proceso y cómo trabajar con eso, y sin embargo, en Unity no tienen problemas y trabajan con procesos, señales, lo coordinan todo... La potencia de la percepción humana es fascinante :D
selecter25
29/11/2022, 15:20
Finalmente hay desenlace "semifeliz", pamicos. Ayer empecé los exámenes (Inglés Técnico, un trámite) y los compañeros de ciclo me comentaron que los ejercicios infernales que comenté de Programación de Procesos y Servicios los dejó como opcionales para subir nota, ya que el mismo profesor (sustituto) consideró que era una fumada supina.
Teniendo en cuenta que hay mucha gente que no entregó nada, al final conseguí hacer 3 de ellos, por lo que imagino que tendré alguna recompensa.
Del resto de asignaturas, Acceso a Datos no hace examen, la nota son las prácticas que ya hemos hecho, lo mismo Sistemas de Gestión Empresarial. Empresa e Iniciativa Emprendedora la convalido, así que me quedan 3 exámenes, Desarrollo de Interfaces (el único práctico) y las dos asignaturas de Programación, Multimedia/Móviles y Procesos/Servicios.
Ahora que quedan como 3 meses para acabar, me estoy planteando seriamente pedir excedencia en el curro y hacer las prácticas, aunque sea en cárnica cuencoarrocista, pillar título, seguir formándome y... quién sabe? Quizás salir de mi zona de confort a nivel laboral me venga bien.
¿No me digas que, después de tanto trabajo, vas a aprobar la de programación igual que yo "legislación" en el instituto, o "métodos numéricos" en la carrera: cambiando de profesor? :lol:
Pues me semi-alegro por ti. Espero que puedas aprobarlas todas con nota, así que no te descentres.
Respecto a dejar el trabajo para hacer las prácticas, eso ya depende de tí y de dónde te metan. Los cursos que yo hice, las prácticas eran obligatorias, y no llevaron mucho tiempo... y acabé trabajando en la empresa, aunque eso sí, no empecé con nada de lo que me habían enseñado (era testeo de manuales de despliegues). Seguramente te pase lo mismo, por una razón u otra, terminarás haciendo algo distinto y empezando de cero (bueno, nunca empiezas de cero, los conocimientos que tienes al final los aplicas de forma indirecta).
Lo de salir de la zona de confort... no lo veo. A ver, soy el primero que opina que, si trabajas haciendo tu hobby, tu hobby se convierte en trabajo (y para muestra, que llevo desde que saqué la última versión del Echo sin tocar código propio, ya por cansancio mental). Pero también que si no te gusta lo que haces, no tienes motivación para trabajar (ni para sacarte la carrera, así que nunca hagas una carrera "porque es donde hay trabajo").
Yo he preferido mantenerme en las empresas sobre seguro, porque se me da muy mal estar saltando de proyecto en proyecto y de empresa en empresa, y es en lo que se basan las "cárnicas", en la renovación continua de estudiantes por quemar. A partir de ahí, es tu decisión.
selecter25
29/11/2022, 21:38
¿No me digas que, después de tanto trabajo, vas a aprobar la de programación igual que yo "legislación" en el instituto, o "métodos numéricos" en la carrera: cambiando de profesor? :lol:
Pues me semi-alegro por ti. Espero que puedas aprobarlas todas con nota, así que no te descentres.
Respecto a dejar el trabajo para hacer las prácticas, eso ya depende de tí y de dónde te metan. Los cursos que yo hice, las prácticas eran obligatorias, y no llevaron mucho tiempo... y acabé trabajando en la empresa, aunque eso sí, no empecé con nada de lo que me habían enseñado (era testeo de manuales de despliegues). Seguramente te pase lo mismo, por una razón u otra, terminarás haciendo algo distinto y empezando de cero (bueno, nunca empiezas de cero, los conocimientos que tienes al final los aplicas de forma indirecta).
Lo de salir de la zona de confort... no lo veo. A ver, soy el primero que opina que, si trabajas haciendo tu hobby, tu hobby se convierte en trabajo (y para muestra, que llevo desde que saqué la última versión del Echo sin tocar código propio, ya por cansancio mental). Pero también que si no te gusta lo que haces, no tienes motivación para trabajar (ni para sacarte la carrera, así que nunca hagas una carrera "porque es donde hay trabajo").
Yo he preferido mantenerme en las empresas sobre seguro, porque se me da muy mal estar saltando de proyecto en proyecto y de empresa en empresa, y es en lo que se basan las "cárnicas", en la renovación continua de estudiantes por quemar. A partir de ahí, es tu decisión.
No me expliqué bien del todo. El profesor que tenemos desde un principio es sustituto, y el material que maneja es de la profesora ausente. No se apaña muy bien con la plataforma, por lo que iba un poco perdido y digamos que puso el piloto automático. Imagino que varios compañeros le comentarían en las tutorías la dificultad de la última práctica, la revisó y vio lo que os comenté, que no se correspondía con el nivel de la teoría que recibimos, por lo que las ha dejado como opcionales.
Sí claro, las prácticas en empresa son obligatorias como en cualquier FP, no es curso ni bootcamp, es Ciclo Formativo de Grado Superior y aquí tienes que hacer prácticas y TFG para aprobar, de hecho si lo saco me convalidarían 60 créditos de Ingeniería Informática (1/4 parte de la carrera), concretamente estos:
- Laboratorio de informática.
- Redes de computadores.
- Sistemas operativos.
- Bases de datos.
- Programación audiovisual avanzada.
- Ingeniería de software.
- Fundamentos de administración y organización de empresas.
- Programación orientada a objetos.
- Fundamentos de programación I.
- Aplicaciones para dispositivos móviles.
- Desarrollo de aplicaciones distribuidas I.
A lo que me refiero es que me estoy planteando si hacer las prácticas (seguramente en consultora NTT Data, que el centro tiene acuerdo, pillo cuenco de arroz) e intentar cambiar de aires, o simplemente que me las firmen en mi curro y seguir con mi vida actual de traductor.
En mi curro también podría intentar hacerlas de verdad (tienen consultoría IT), pero seguramente acabe haciendo eso + mi trabajo actual, los proyectos son caca y la posibilidad de promoción es 0, por lo que no me llama nada.
selecter25
19/02/2023, 01:43
Bueno pamicos, me quedan 2 semanitas para empezar exámenes, qué rápido se me ha pasado todo, parece que fue ayer cuando empecé a llorar!!
Finalmente le he cogido el gustillo (sobre todo a Android nativo con Kotlin) y ya he pedido la excedencia en el curro para hacer las prácticas. No se lo han tomado muy bien, porque me ven más fuera que dentro. Me apetece cambiar de aires.
Seguramente vaya a una cárnica de las grandes, a 3 paradas de casa. Me tira un poco para atrás que el 80% de proyectos que tienen son Angular/Spring boot, y me habría gustado seguir metiendo caña al desarrollo móvil.
Me enfrasqué en un proyecto de fin de curso (la mayoría de asignaturas nos han asignado uno) y me vine un poco arriba, al final me he cascado una app de cuestionarios de programación, MVVM, backend en Firebase con Auth/BDD NoSQL, recyclerView (adapter/ViewHolder), ViewBinding, LiveData, corrutinas...
Me ha faltado solamente tocar algo de inyección de dependencias(Dagger Hilt), Retrofit 2 y consumir alguna API, pero en este mes trasteando por mi cuenta he aprendido más que en todo el curso, así que le meteré caña por mi cuenta todo eso y empezaré con iOS (de ahí seguramente enganche con Flutter en serio).
Pero antes quedan los exámenes, actualizaré con el triunfo o la estampada!
No he entendido la mitad de las cosas que pones aquí, así que veo que has aprovechado mucho el módulo
josepzin
19/02/2023, 14:19
Felicitamientos miles!
bitrider
20/02/2023, 17:26
Ya dirás qué tal las prácticas en empresa. Yo acabo de empezar DAM (final de la segunda evaluación de primer curso). Aún ando pensando qué hacer con las prácticas, si dejar o no un curro de más de 20 años y poco futuro.
selecter25
20/02/2023, 20:12
Ya dirás qué tal las prácticas en empresa. Yo acabo de empezar DAM (final de la segunda evaluación de primer curso). Aún ando pensando qué hacer con las prácticas, si dejar o no un curro de más de 20 años y poco futuro.
Graande, mucha suerte con el curso.
Yo lo empecé simplemente por aprender algo que siempre me llamó la atención, tampoco llevo tanto tiempo en mi curro como tú, no es que me disguste lo que hago, tengo estabilidad pero no tengo posibilidades de crecer aquí, y conforme ha ido pasando el curso mi interés por aprender más cosas ha aumentado.
Tampoco es que IT pase su mejor momento justo ahora, pero siento que siendo un polluelo puedo expandirme hasta el infinito, y es lo que me pide el cuerpo ahora, salir un poco de mi zona de confort y crecer.
En cuanto al curso, el segundo año es mucho más interesante pero es muy corto. Del primero solo creo que han sido útiles Bases de Datos y Programación, que me dieron una base para las de segundo (Acceso a Datos, Programación de Servicios y Procesos y Programación Multimedia y Dispositivos Móviles).
Si puedes meterles mucha caña a esas dos en primero, lo agradecerás luego. Del resto, pienso que hay demasiadas asignaturas de relleno, con temario obsoleto que podrían ser sustituidas por otras con más sentido a día de hoy, abordando algún framework modernete, algo de big data, Kubernetes (yo di Docker, pero muy por encima)...
Bueno pamicos, me quedan 2 semanitas para empezar exámenes, qué rápido se me ha pasado todo, parece que fue ayer cuando empecé a llorar!!
Finalmente le he cogido el gustillo (sobre todo a Android nativo con Kotlin) y ya he pedido la excedencia en el curro para hacer las prácticas. No se lo han tomado muy bien, porque me ven más fuera que dentro. Me apetece cambiar de aires.
Seguramente vaya a una cárnica de las grandes, a 3 paradas de casa. Me tira un poco para atrás que el 80% de proyectos que tienen son Angular/Spring boot, y me habría gustado seguir metiendo caña al desarrollo móvil.
Me enfrasqué en un proyecto de fin de curso (la mayoría de asignaturas nos han asignado uno) y me vine un poco arriba, al final me he cascado una app de cuestionarios de programación, MVVM, backend en Firebase con Auth/BDD NoSQL, recyclerView (adapter/ViewHolder), ViewBinding, LiveData, corrutinas...
Me ha faltado solamente tocar algo de inyección de dependencias(Dagger Hilt), Retrofit 2 y consumir alguna API, pero en este mes trasteando por mi cuenta he aprendido más que en todo el curso, así que le meteré caña por mi cuenta todo eso y empezaré con iOS (de ahí seguramente enganche con Flutter en serio).
Pero antes quedan los exámenes, actualizaré con el triunfo o la estampada!
Pues dale caña y suerte con los exámenes. Ojo con dejarte llevar por el entusiasmo porque es un arma de doble filo :D Que sí, que todo es muy guay al principio, y que lo harías gratis y todo, pero luego... ^^U
Eso sí, como creo que ya te he dicho en alguna ocasión, no lo dejes, que es muy "fácil" aprender cosas nuevas, pero más fácil es olvidarlas si no se usan. Creo que tendría que volver a dar Java desde cero para refrescar lo que sabía ^^U
Eso sí, hace tiempo que me superaste en conocimientos de apps móviles, así que, enhorabuena :D
Ya dirás qué tal las prácticas en empresa. Yo acabo de empezar DAM (final de la segunda evaluación de primer curso). Aún ando pensando qué hacer con las prácticas, si dejar o no un curro de más de 20 años y poco futuro.
Enhorabuena también, y dale duro ;)
Sobre lo de dejar o no el trabajo, eso ya es una decisión personal de la que prefiero no dar consejos. Al final se resume en ir a lo cómodo o arriesgarse con algo nuevo.
No obstante, no dejéis pasar la ocasión de mostrarle a vuestros jefes lo que habéis aprendido, porque lo mismo podéis encontrar una forma de expander el negocio, y al mismo tiempo crear un puesto de trabajo de lo que habéis aprendido en el sitio que ya conocéis. Quién sabe, lo mismo conseguís ambas cosas: cambiar de trabajo y manteneros en la empresa en la que estáis cómodos :D
selecter25
22/02/2023, 20:17
Pues dale caña y suerte con los exámenes. Ojo con dejarte llevar por el entusiasmo porque es un arma de doble filo :D Que sí, que todo es muy guay al principio, y que lo harías gratis y todo, pero luego... ^^U
Eso sí, como creo que ya te he dicho en alguna ocasión, no lo dejes, que es muy "fácil" aprender cosas nuevas, pero más fácil es olvidarlas si no se usan. Creo que tendría que volver a dar Java desde cero para refrescar lo que sabía ^^U
Eso sí, hace tiempo que me superaste en conocimientos de apps móviles, así que, enhorabuena :D
No obstante, no dejéis pasar la ocasión de mostrarle a vuestros jefes lo que habéis aprendido, porque lo mismo podéis encontrar una forma de expander el negocio, y al mismo tiempo crear un puesto de trabajo de lo que habéis aprendido en el sitio que ya conocéis. Quién sabe, lo mismo conseguís ambas cosas: cambiar de trabajo y manteneros en la empresa en la que estáis cómodos :D
Gracias Drumpi!
Nah eso no va a ocurrir, actualmente ya trabajo en consultoría, y mano a mano con los programadores. Sé cómo funciona el día a día, y por suerte o desgracia no tengo 20 añitos, más bien unos 20 añitos cotizados.
En lo de mostrar algo a los jefes, en mi caso es todo lo contrario, de hecho podría hacer las prácticas en el sitio en donde trabajo, pero me niego. Y lo hago porque como vulgarmente dicen, la confianza da asco.
Hacer las prácticas aquí me supondría aprender 0 y trabajar el doble, seguiría haciendo las tareas que ya hago, y las prácticas. Al acabarlas, sería lo mismo, no se me reasignaría a un puesto nuevo, seguiría haciendo lo mismo, peeero seguramente asumiendo más tareas que entrañen movidas de programación. Lo último que ahora quiero es ser el hombre orquesta, y sobre todo pillar los marrones que otros no quieren.
Y así es como le expliqué al jefe por qué no quería hacer las prácticas aquí, por eso digo que no le sentó muy bien, pero al rato acabó reconociendo que tengo razón al 1000%, y los compañeros opinan igual.
Jajaja, a mi me han explicado eso pero con los idiomas. Más de uno me ha dicho alguna vez, mi padre incluido, que en el momento que en una empresa dices que sabes inglés, tienes todas las papeletas de ser el encargado de hablar con los proveedores/clientes extranjeros, o el que más números tiene para ser el que tenga un puesto temporal/fijo en una sede fuera de España :D
Claro que, en programación e ingeniería, o sabes inglés, o no eres ni programador ni ingeniero :lol:
Y más ahora, que en los grados es obligatorio tener el B1 de algún idioma.
Yo estoy en una multinacional en la que trabajamos en varios idiomas. Inglés principal, francés a veces, español para reuniones locales. Bueno, pues desde España nos están llegando currículums de ingenieros "con B1" o incluso "con estudios en universidad inglesa" que no son capaces de mantener conmigo, que tampoco soy chaquespeare, una entrevista de trabajo en inglés. No sé el B1 ése qué certificará.
fbustamante
23/02/2023, 21:13
Pues no sé donde han comprado el título. :D
Bueno, vale. Lo mismo es que no ha practicado. [wei]
Sí, el problema es no practicarlo. Cualquier habilidad se pierde si no la practicas. Y practicar cuesta, igual que ir al gimnasio.
Cualquier película, libro o videojuegos que veáis/leáis/juguéis en castellano es una oportunidad perdida para practicar inglés. ¡Aprender y mejorar es lento y sacrificado, nadie dice que sea fácil! Exactamente lo mismo que ir al gimnasio.
Yo el inglés ya lo doy "por dominao" porque lo uso todos los días durante horas, así que ahora voy a por el francés! Ánimo para mí!
selecter25
23/02/2023, 21:41
Sí, el problema es no practicarlo. Cualquier habilidad se pierde si no la practicas. Y practicar cuesta, igual que ir al gimnasio.
Cualquier película, libro o videojuegos que veáis/leáis/juguéis en castellano es una oportunidad perdida para practicar inglés. ¡Aprender y mejorar es lento y sacrificado, nadie dice que sea fácil! Exactamente lo mismo que ir al gimnasio.
Yo el inglés ya lo doy "por dominao" porque lo uso todos los días durante horas, así que ahora voy a por el francés! Ánimo para mí!
Es esto 100%, y lo triste es que hay gente con un muy buen nivel de inglés escrito, pero que luego al hablar se caga encima, ya sea porque nunca lo practica, o en muchos casos por vergüenza.
selecter25
03/03/2023, 19:10
Acabaron los exámenes!! Bueno me queda uno de inglés el lunes, pero un paseo. Todo ok pamicos, nos vamos a las prácticas.
Hace unos días nos citaron para hacer una presentación/entrevista grupal con una de las cárnicas malas por experiencia del sector (NTT... antigua Eve...). Éramos unas 15 personas y entramos con su grupo de RRHH (4 jovencitos doctorados en psicología) en videollamada por Teams.
Se presentaron, nos explicaron la dinámica de las prácticas (100% remoto), todo muy ameno y cercano, y luego nos tocó hacer lo mismo a nosotros, presentación y poca cosa más.
Aquí ya quedé impresionado por la baja habilidad social de prácticamente el 90% de la gente, a muchos se les veía aterrorizados, se atascaban hasta el punto de no saber decir ni siquiera qué estaban cursando. Creo que no debe de ser crucial para el sector, pero si vas a trabajar en grupo, qué menos que saber comunicarte de tú a tú con un compañero.
Finalmente hicimos una pequeña dinámica grupal a modo de prueba técnica. Nos dividieron en grupos de 4, se presentaba un problema y a cada uno nos asignaban una tarea que solo nosotros veíamos y que requería de 3 recursos fundamentales. A su vez se nos ofrecía una lista de recursos, pero eran limitados, por lo que si nos "pisábamos", debíamos negociar o discurrir la mejor opción para cubrir el mayor número de requisitos de todas las tareas.
Algunos de los recursos se podían sustituir con otros similares, y había un recurso (dinero ilimitado) que actuaba a modo de comodín. Bastante simple entonces, se busca la tarea que más se "pise" con el resto, o la que se "pise" y no tenga recurso alternativo, y se usa en ella el dinero ilimitado.
Nos dieron un par de minutos para identificar los recursos que nos harían falta, y luego teníamos 5 más para negociar con el resto y cubrir (a priori) todos los requisitos. Yo pensaba que era como un juego de niños, una especie de prueba más para ver cómo nos desenvolvíamos a nivel social, hablando con los compañeros. Nada más lejos de la realidad.
Del resto de compañeros, solo uno entendió la dinámica de resolución. La otra compañera identificó bien los recursos que necesitaba para cubrir sus necesidades, pero ni idea de cómo solucionarlo. El último de ellos, que ni siquiera supo seleccionar recursos para cubrir sus necesidades, acabó confesando que no sabía qué significaba "infraestructura". Al no saber siquiera qué necesidades tenía (no las podía decir, solo los recursos que él necesitaba), no podíamos negociar :lol2:.
La coordinadora de RRHH de nuestro grupo flipaba, tras varios minutos intentando que entendiese lo que necesitaba, acabó por decirnos sus necesidades, y lo resolvimos entre el primer compañero (un señor de 68 años!!!, mis respetos) y yo.
De verdad está tan mal el sector en becarios/juniors? Quizás lo tenía idealizado, pero viendo esto entiendo el alto nivel de rotación, estoy flipando en colores.
Ayer me pegaron un telefonazo y estoy dentro, falta que me acomoden en un proyecto (pedí Mobile pero dudo que me toque algo porque el 80% de sus trabajos son en Angular/Spring boot).
josepzin
03/03/2023, 20:07
¡¡Felicidades!!
Vaya movidas hacen para filtrar gente, pero se entiende, porque una cosa es un CV en papel y luego a la hora de la verdad es cuando se ve lo que hay.
Me quedé flipado con lo del señor de 68 años, a esa edad la gente ya está retirada.
De verdad está tan mal el sector en becarios/juniors? Quizás lo tenía idealizado, pero viendo esto entiendo el alto nivel de rotación, estoy flipando en colores.
Es normal que gente que empieza en este sector esté increíblemente desubicada y literalmente no sepa ni cómo se llama, en una situación como la que os han puesto, mucha gente entra en pánico, no entienden lo que tienen que hacer y a la misma vez tampoco quieren preguntar lo que no han entendido por miedo a parecer idiotas, por lo que agravan más el problema y entran en barrena. Gente más "echá p'alante" y con cierto grado de confianza en sí mismos suele salir de estas situaciones mejor; no creas que es por una situación de mejores o peores (el señor de 68 años que se sabía manejar ya debería haberte dado una pista).
Cuando gente cae en estás dinámicas diabólicas (y especialmente en empresas malvadas como Eve--ris), no sólo en este evento, si no a lo largo de sus carreras en estas cárnicas y demás suele suceder que muchos se acaben yendo pensando que esta profesión es una mierda, salen odiando la informática y acaban dedicándose a repartir muestras en un supermercado (que al menos, les resulta menos duro psicológicamente hablando). Muchas personas, literalmente, se rompen; muchos más de los que pensamos.
Como compañeros tenemos que empatizar lo que podamos con los juniors y acompañarles y ayudarles en todo lo que podamos; lo que necesita un junior es, sobre todo, seguridad psicológica (si viene con ella, ok, si no, le ayudamos). Claro está que siempre hay balas perdidas y gente como yo que es horriblemente inútil, pero se nos suele ver venir fácilmente :P
Es muy habitual que sea esta falta de confianza en uno mismo (o baja autoestima) una de las principales barreras para entrar en el sector. No es que lo diga yo (que también), es que literalmente hay empresas que trabajan precisamente para solucionar este problema y trabajan con empresas que acogen juniors ayudando a que esto se les haga menos cuesta arriba. Y, para más inri, esta es uno de las reconocidos problemas de diversidad del sector.
TLDR; lo que has vivido es normal, la gente en estas situaciones se pone muy nerviosa. Estas dinámicas (y las empresas que las hacen) son diabólicas y literalmente una de las causantes de la falta de personal en el sector.
selecter25
03/03/2023, 21:36
Es normal que gente que empieza en este sector esté increíblemente desubicada y literalmente no sepa ni cómo se llama, en una situación como la que os han puesto, mucha gente entra en pánico, no entienden lo que tienen que hacer y a la misma vez tampoco quieren preguntar lo que no han entendido por miedo a parecer idiotas, por lo que agravan más el problema y entran en barrena. Gente más "echá p'alante" y con cierto grado de confianza en sí mismos suele salir de estas situaciones mejor; no creas que es por una situación de mejores o peores (el señor de 68 años que se sabía manejar ya debería haberte dado una pista).
Cuando gente cae en estás dinámicas diabólicas (y especialmente en empresas malvadas como Eve--ris), no sólo en este evento, si no a lo largo de sus carreras en estas cárnicas y demás suele suceder que muchos se acaben yendo pensando que esta profesión es una mierda, salen odiando la informática y acaban dedicándose a repartir muestras en un supermercado (que al menos, les resulta menos duro psicológicamente hablando). Muchas personas, literalmente, se rompen; muchos más de los que pensamos.
Como compañeros tenemos que empatizar lo que podamos con los juniors y acompañarles y ayudarles en todo lo que podamos; lo que necesita un junior es, sobre todo, seguridad psicológica (si viene con ella, ok, si no, le ayudamos). Claro está que siempre hay balas perdidas y gente como yo que es horriblemente inútil, pero se nos suele ver venir fácilmente :P
Es muy habitual que sea esta falta de confianza en uno mismo (o baja autoestima) una de las principales barreras para entrar en el sector. No es que lo diga yo (que también), es que literalmente hay empresas que trabajan precisamente para solucionar este problema y trabajan con empresas que acogen juniors ayudando a que esto se les haga menos cuesta arriba. Y, para más inri, esta es uno de las reconocidos problemas de diversidad del sector.
TLDR; lo que has vivido es normal, la gente en estas situaciones se pone muy nerviosa. Estas dinámicas (y las empresas que las hacen) son diabólicas y literalmente una de las causantes de la falta de personal en el sector.
Gracias por la aclaración, es justo lo que había imaginado.
Yo soy muy síndrome del impostor fanclú, no diría que tengo baja autoestima pero siempre idealizo mucho las cosas que desconozco y a las que quiero acceder. Nunca me veo capacitado para abordar algo que requiera aprobación de otros, por lo que suelo dedicar esfuerzo enfermizo en documentarme por mi cuenta, fallar 10000 veces y aprender a base de golpes en lugar de buscar ayuda. Es un lastre que siempre llevo encima.
Por un lado entiendo que el acceso al sector debe de ser (y seguro que es) como dices, un periodo de adaptación en el que te acostumbres a una dinámica de trabajo en grupo, y en el que gente con experiencia te lleve un poco de la mano, te vaya mostrando su flujo de trabajo y te vaya asignando pequeñas soft tasks, revisando cómo funcionas hasta que puedas ir sin "ruedines".
Por otro lado siempre está la sensación de que se espera mucho de ti como junior, o de que no sabes nada en comparación al resto, básicamente el síndrome del impostor haciendo de las suyas. Esto creo que nos ocurre a muchos.
En este caso ya te digo que yo intenté empatizar con el resto, sé lo que les ocurría y por qué, no digo que sean mejores o peores por ello, simplemente me sorprendió/entristeció que el porcentaje de personas aterradas, o con fobia social, fuese tan alto.
Yo también tenía mis dudas antes de conectar, pero quizás por mi edad, experiencia laboral o social me manejo mejor en este tipo de situaciones y desaparecieron al primer minuto.
Imagino que estas cárnicas tienen prácticas lamentables y que las veré en funcionamiento, en esta entrevista tengo que admitir que fueron muy considerados, amables y cercanos. Pero claro, una cosa es el equipo de RRHH y otra es un senior tirando de un becario aparte de las responsabilidades de su proyecto. Confiaremos.
Quizás releyéndome pude dar la sensación de que me pareció que muchos candidatos eran "malos", pero nada más lejos de la realidad, me preocupa que haya gente que seguramente sea un muy buen proyecto como programador, y se vea limitado por esos complejos y fobias sociales.
Primero que todo: ¡Enhorabuena, Selecter! Buen trabajo :D
Se suele decir "buena suerte" cuando alguien se presenta a un examen, y yo digo que de buena suerte nada, que cuanto más trabajo se eche, mejor sale, y creo que lo has demostrado con creces ;)
Bueno, respecto al B1, según mi experiencia en la EOI (en la que estuve para sacar un papelito que dijera que tenía B2), es, como dicen por ahí atrás, nivel medio-alto según España (siendo "nivel medio" el que pone la gente en el currículum, es decir, saber qué es un spoiler, una story y qué significa "i love you so much"). En realidad, el B1 es inglés de instituto, siempre que dicho instituto haya conseguido terminar todo el temario. Eso, por supuesto, significa que pueden entender algunas cosas escritas, hacer una pequeña redacción y para de contar, porque de "listening" tienen el nivel que se les exige en los ejercicios de clase, y speaking no conozco un curso en el que se hable inglés todo el rato, salvo la EOI... y he tenido que tragarme lo de aprender los colores, los números y el abecedario tres o cuatro veces en mi vida.
Con todo y con eso, y aún creciendo en la época en que la SNES y N64 venían sin traducir, yo no aprendí inglés (es decir, escuchar y hablar) hasta un año antes de entrar en la Escuela de Idiomas, cuando me ponía todas las noches media hora de AVGN y Nostalgia Critic sin subtítulos. Al principio pillaba palabras sueltas, ahora puedo chapurrear con fluidez, y equivocarme como un campeón :D
Los novatos, todos hemos pasado por ahí, más o menos. Salvo los que vienen de casa con un ego tamaño catedral, los que empiezan en programación ven un mundo muy hostil, con tecnologías desconocidas, con cosas que dicen que es de su lenguaje y que ni siquiera saben interpretarlo, y saben que les van a pedir cosas mucho más complicadas que en clase en la mitad de tiempo. Yo tuve la suerte de pillar en mis prácticas un código ya empezado, del que tuve que ir desarrollando cosas, y añadiendo otras que ni el diseñador original sabía cómo funcionaban (expresiones regulares para identificar las distintas partes de una SQL, aunque esta estuviera mal formada). Entrar en el mercado laboral da miedo, y a muchos se les olvida.
El que más tarde se vayan de la empresa creo que tiene que ver más con el factor de que se les exige demasiado en muy cortos periodos de tiempo, y eso quema. Sobre todo cuando te atascas y no encuentras una solución, eso es criminal. O el hecho de repetir siempre los mismos tipos de programas y que no te dejen innovar... o simplemente porque no les gusta, será que no he conocido yo ingenieros que odian programar ¡incluso en la carrera de informática!
Pero bueno, tú tranqui, Selecter. Al principio te darán cosas más sencillas de las que ya has hecho, incluso te verás corrigiendo cosas de los seniors, que parece que no pasaron del primer curso... pero no te confíes, porque la cosa se irá complicando, y no sólo en dificultad, sino en tiempo para realizarlo, y habrá momentos en que te pidan imposibles, así que no bajes la guardia, pero tampoco te rindas, con el tiempo, los jefes parece que van entrando en razón con los tiempos de desarrollo... aunque seguirán teniendo ramalazos de prisa cada poco tiempo :D
selecter25
08/03/2023, 19:16
Gracias por los consejos!
Lo bueno de entrar ahora en el sector es que lo hago con un "buen" bagaje, a mis casi 40 palos he lidiado con clientes, jefes, plazos, presiones, esfuerzo físico sobrehumano, trabajos de 60/70 horas semanales... He trabajado en una fábrica de vulcanizado (más bien una casa vieja con techos bajos de uralita) de 7 a 19, sin ver el sol en los meses de invierno, a 40ºC de temperatura ambiente (en pleno Diciembre, en Agosto no trabajábamos porque saltaba la alarma de incendios, venía la Guardia Civil y multazo), moviendo moldes de aluminio de más de 100Kg a 200ºC, con quemaduras constantes, materiales áltamente tóxicos, dolores por todo el cuerpo...
También tuve mi época joven de pintor, primero en obra pública con mi padre y luego haciendo hospitales de Texturglas por toda España con Wenceslao García, completamente a la interpérie (de -10ºC a +35ºC). Recuerdo que en el Infanta Leonor hacíamos hogueras para descongelar los cubos llenos de agua, y en cuanto veían el fuego, los operarios africanos venían en manada a calentarse :D.
Y también lo he hecho en consultoría, en una empresa de coaching empresarial y soluciones de traducción, que es mi actual curro. Aquí poco os puedo contar que no sepáis, plazos surrealistas, llamadas un domingo, jefes puestos a dedo que no saben nada y suplen su incompetencia siendo déspotas...
Así que he sufrido todo tipo de dolores, presiones, explotación, maltratos y demás adversidades en el curro. Antes de sacarme la Licenciatura, compaginé el curro con un FP de Sistemas Microinformáticos y Redes, al empezar las prácticas (en ofcinas de Alcampo, manteniendo hardware) uno de mis instructores me miró y me dijo: "Buf, aquí se trabaja duro, eeeh?". Yo simplemente miré y sonreí.
Estaba "reparando" ordenadores de Charos agradecidas, bien vestido (me dejaban llevar mi ropa de calle), si pasar frío ni calor (calefacción o AA), comiendo en un gran comedor con Wi-Fi, TV, máquina de café, charlando con compañeros con los que tenía cosas en común. A las 15 me iba a casa tal cual había entrado a las 7, oliendo todavía a perfume, y me daba tiempo a ducharme, comer, echar una siesta e ir al gym completamente nuevo.
Ahí me di cuenta que ya era laboralmente indestructible, me había pasado primero el juego en NG++ Ultra Hard, y luego me lo había puesto en fácil :lol2:.
Me venían flashbacks de Vietnam en los que estaba sentado en un cubo de plástico, a -10ºC o a 40ºC, abriendo un panecillo con una espátula que estaba usando hace 5 minutos para masillar, en medio de una avenida cual mimo o muñeco de Pikachu, o en medio de la nada, rodeado de compañeros que ahogaban sus penas en alcohol o drogas, con los que solo podía hablar de fútbol, bares o "mujeres".
Fin de la jornada, son las 19:30 y estoy a mínimo 45 minutos de casa, es de noche, huelo a veneno puro, voy hecho un asco y me da vergüenza mezclarme con la gente de a pie con mi disfraz y mis botas de seguridad llenas de pintura y mierda, que pesan 2kg, me duele todo. Mis compañeros se quedan a echar 4 botes de cerveza de los de +33% en el bar Paco, yo ni de coña. Me dormiría en el metro pero está a reventar y voy embutido cual sardina, hoy no he almorzado y he aprovechado los 15 minutos para dormir en el suelo, con un saco de gotelé haciendo de almohada y una camiseta sucia de funda, porque esos sacos están fríos como el acero. No me ha servido de nada, estoy agotado. Tras comerme 45 minutos de pie en la línea 1, paro en Tirso de Molina. Se me escapa el autobús, nunca coinciden los "timings". Me espera una buena bajada por Ronda de Segovia. Estoy tan molido que la cuesta abajo parece cuesta arriba.
20:45, llego a casa. Intento no pensar que salí por esa misma puerta a las 6:45am para hacer el camino inverso. Me ducho en modo automático, estoy tan cansado que no quiero cenar. Llega mi chica, me saluda, se ducha y hace unos sandwiches, porque no sabe cocinar, el cocinillas soy yo pero temo caer muerto encima de la vitro. Aún así, agradecido, me ha salvado la noche. Cojo el mando de la TV, lo vuelvo a dejar porque sé que no voy a durar ni 5 minutos vivo, me lavo los dientes y a la cama. Me suena un mensaje, aprovecho para poner la alarma y lo leo: "Mañana vas a Majadahonda". Cambio la alarma a 30 minutos antes, 5:30am.
Miro el reloj, son las 00:05 y me viene el golpetazo de ansiedad al calcular las horas que voy a dormir. Mi chica me abraza por la espalda, quiere tema. El abrazo me reconforta y me duele al mismo tiempo, tengo la espalda hecha un cristo. Me giro, le doy un beso y le digo que estoy muerto, que mejor el sábado con más calma. Ni follar puedo! Lo entiende pero sé que en el fondo se siente rechazada y se hará sus movidas, se gira y a los 2 minutos se duerme. Yo me quedo rayado en la cama pensando en si la vida es esto o hay algo más, me dan las 3am hasta que me duermo por puro agotamiento.
No han pasado ni 3 minutos en mi mente cuando suena el despertador, vuelvo al presente y vuelvo a escuchar aquello de "Buf, aquí se trabaja duro, eeeh?". Vuelvo a sonreir, pero si pudiera me partiría el culo a carcajadas.
:lol2: se me ha ido un poco pero así ha sido durante años, y la etapa de la fábrica porque estaba soltero, pero también infernal, ni ganas de recordarla tengo.
Por eso, sin menospreciar a nadie, estoy agradecido por haber tenido una primera etapa de vida laboral tan dura, ahora llevo muchos años en los que voy a trabajar y siento que no estoy trabajando, en un principio hasta llegué a sentirme mal.
Eso sí que es reinventarse, enhorabuena.
selecter25
26/03/2023, 11:47
Bueno pamicos, sigo con mi especie de blog "metiendo el hocico en cárnica, peinando ya alguna cana", por si alguno se aburre y quiere seguir la novela turca.
El pasado jueves acudí a las oficinas, grandes, modernas, nada mal (es un center que maneja unos 1800 empleados, la mayoría en remoto).
Éramos unos 25 becarios (primera tanda, van a entrar bastantes más), la idea era ir a conocer instalaciones con los de RRHH, recoger equipo (un Dell i5 11thGen nuevecito), conocer funcionamiento interno, puesta en marcha del equipo y después asignación de proyecto y presentación del instructor.
Me asignaron en proyectos de la sección Mobile, por lo que en un principio muy contento. Mis otros dos compis becarios de proyecto venían de DAW, por lo que estaban algo cagados.
Poco a poco iban entrando instructores y llevándose a peña de las mesas a sus respectivos sectores. Casi en último lugar, llega un tipo sonriente y nos dice que busquemos una sala tranquila, pero que ni nos llevemos los PC ni nada, todo de manera muy distendida, me causó muy buena primera impresión. Me extrañó mucho, pues todos los instructores, aunque muy agradables, venían con bastante diligencia y prisas por empezar.
Nos vamos a una sala y arranca diciéndonos que nuestro instructor está con diarrea, literalmente que se caga por la pata abajo y que no ha podido venir :lol2:, todo en un tono jocoso y muy cercano, ya digo que me causó muy buena impresión. Nos comenta que él es un perfil alto de la empresa (Centers Service Leader) y que maneja entre otras cosas la sección mobile.
Estuvo comentándonos un rato que aún no tenían claro dónde meternos, que por las referencias que tenían de los centros, éramos los alumnos con la mayor proyección de la promoción, habían hecho un grupo de becarios "PRO" y querían que coincidiésemos en el mismo proyecto.
El resto de las 3 horas fue un descojone, nos habló sin tapujos ni pelos en la lengua de toda la estructura interna de la empresa, perfiles, salarios, revisiones, horarios, tips, liadas gordas que habían hecho, fiestas, perfiles de gente que echan, % de contratación y rotación, a la cantidad de colegas a los que había metido tras animarlos a hacer la fp, de su curro, sus proyectos ... yo flipaba. Nos dio su contacto y nos dijo que aunque íbamos a hacer remoto, que cuando quisiéramos ir a la oficina que lo llamásemos, que nos avisaría cuando hiciesen fiestas, para los torneos de lol, pádel, para ir al cine, echamos unas buenas risas, un fenómeno.
Además él es el principal encargado de entrevistar y contratar peña en el centro, y nos dijo que en principio si nos queríamos quedar, estábamos dentro por referencias, que mucho la teníamos que liar. Por si fuese poco, es el encargado de firmar las horas del FCT, y nos dijo que nos fuésemos a casa a descansar, que pusiéramos a punto el PC en casa y que metiésemos las 8 horas de hoy sin problema, que las firmaba. Por último nos dijo que al día siguiente nos conectásemos al Teams a las 8 u 8 y 10 y que nos llamaría el instructor y lo conoceríamos.
Mientras tanto, el resto de compañeros estaban ya en el asunto, descargando/configurando IDEs y de lleno en los proyectos, con caras de agobio. Luego lo confirmaron en el grupo de Whatsapp que hemos hecho algunos, no les perdonaron ni un minuto :D. Cuando les contamos lo nuestro, fliparon.
Llegué a casa, me hice los test de formación de empresa recomendados para los primeros días (hablando con uno de los compis por Discord y comentando el día) y me apunté las 8h. Primer día, sin proyecto pero echando unas risas.
El viernes me desperté sobre las 6, me acomodé un poco el setup y a las 7 me enchufé a la vpn. A las 7:55 entró mi compi becario a Discord y estuvimos esperando echándonos unas risas y conociéndonos algo más. Pasaban las horas y no aparecía ni Dios, mi compañero echando ARAMs al lol y yo aproveché para modelar cosillas de impresión 3D, mientras bromeábamos con la situación.
A las 11:30 yo ya casi me había dormido esperando, el resto de compañeros de otros proyectos estaban a full. Y de repente me habla el instructor por Teams y me llama. Me causa la misma impresión que el CSL, un tipo muy agradable y cercano, desde un primer momento haciendo bromas y referencias frikis a lo que veía por mi cuarto. Justo en ese momento le llaman, y me dice que es el CSL que conocí ayer, que me deja en espera. Aproveché para avisar a mis dos compis para que estuviesen preparados.
Al rato vuelve y nos mete a los 3, y a otro instructor que se va a hacer cargo de formarnos en Angular (también un tipo muy agradable). Nos comenta que en principio íbamos a proyectos separados, querían uno en nativo o XCode (sería yo por hacer DAM) y dos para Ionic con Angular/React, pero que justo el CSL les dijo que le habíamos causado muy buena impresión y que quería que sí o sí nos formaran en el mismo proyecto, y con vistas a quedarnos ahí si queríamos.
Yo ya había hecho mi sesión de lloros en la presentación, ya que al venir de DAM he hecho 0 web y va a ser un gran handicap para mí empezar con Angular sin apenas saber nada de HTML5/CSS3/JS/Typescript, pero me dijeron que 0 problemas, que lo tienen en cuenta y estábamos ahí para aprender.
Así que con esa llamada del CSL cachondo no les quedaba otra que hacer encaje de bolillos, por lo que el día de hoy había terminado :lol2:, que descansásemos y que el lunes nos reuníamos ya con el proyecto asignado.
De momento ayer eché un vistazo a Javascript, estructura, sintaxis, AJAX para no ir sin saber ni la "a", hoy a Angular, y no parece muy complicado en comparación a nativo/Kotlin o al backend que he hecho en el curso (de hecho el backend se me antoja mucho más complicado), se asemeja algo a Jakarta EE y la práctica que hice en Acceso a datos.
Aunque no sea lo que yo quería hacer, es una de las cosas que me llamaban la atención en caso de tocar front, un Framework JS decente, pero parto de 0 y comparto proyecto con los dos mejores becarios de DAW.
Seguiremos informando!
Curioso la diferencia entre los distintos grupos o departamentos.
+1
Y más que te digan que perteneces al grupo de becarios premium. Eso sólo lo he visto hacer en alguna peli sobre gugle, y en empresas de menos de 12 empleados (y aún así, está escrito en el "libro de dirección de empresas" que eso es una mala práctica, igual que decirle la verdad al cliente de por qué falla la APP). Que luego el empleado se te sube a las barbas, y que no puedes amenazarlo con despedirlo si no hace su trabajo en el tiempo que le pides, bla bla bla.
De todas formas, no te fíes nunca del buen rollo en empresas grandes. Recuerdo que en una entrevista empezaron a hablarme sobre speech-to-text, cuando le mencioné sobre los proyectos que tenía pendientes, y derivó la cosa en lo que me gustaba investigar en mi tiempo libre, y yo feliz de explicar lo que hacía por mi cuenta y lo que me aportaba en conocimientos extra... y luego intentaron largarme un zasca: "y haciendo todo eso ¿cómo tenías tiempo para estudiar, ir a clase y hacer los laboratorios?". Menos mal que tenía la respuesta preparada (la honestidad es lo que tiene :D).
Y ojo, que al principio todo puede ser buen rollo y demás, pero a la hora de trabajar, hay que trabajar, así que no dudes que el "buen rollo" se va a convertir en "esto hay que terminarlo ya". Ojalá puedas mantener ese buen ambiente de trabajo... pero por si acaso, intenta no ser el último mono de vuestro grupo, y si no se te da bien el código, intenta ser el que aporte mejores ideas o el que mantiene el grupo cohesionado y trabajando en equipo :P
Y créeme que te entiendo, yo también estoy en un par de proyectos de páginas web, y como he dicho en otras ocasiones, es la primera vez que me enfrento en serio a HTML, CSS y Javascript, a pesar de desarrollar en C#. Hay veces que mi jefe empieza a decirme de hacer cosas que se ven en HTML5 y tengo que avisarle de que se está pasando :D
selecter25
27/03/2023, 19:01
+1
Y más que te digan que perteneces al grupo de becarios premium. Eso sólo lo he visto hacer en alguna peli sobre gugle, y en empresas de menos de 12 empleados (y aún así, está escrito en el "libro de dirección de empresas" que eso es una mala práctica, igual que decirle la verdad al cliente de por qué falla la APP). Que luego el empleado se te sube a las barbas, y que no puedes amenazarlo con despedirlo si no hace su trabajo en el tiempo que le pides, bla bla bla.
De todas formas, no te fíes nunca del buen rollo en empresas grandes. Recuerdo que en una entrevista empezaron a hablarme sobre speech-to-text, cuando le mencioné sobre los proyectos que tenía pendientes, y derivó la cosa en lo que me gustaba investigar en mi tiempo libre, y yo feliz de explicar lo que hacía por mi cuenta y lo que me aportaba en conocimientos extra... y luego intentaron largarme un zasca: "y haciendo todo eso ¿cómo tenías tiempo para estudiar, ir a clase y hacer los laboratorios?". Menos mal que tenía la respuesta preparada (la honestidad es lo que tiene :D).
Y ojo, que al principio todo puede ser buen rollo y demás, pero a la hora de trabajar, hay que trabajar, así que no dudes que el "buen rollo" se va a convertir en "esto hay que terminarlo ya". Ojalá puedas mantener ese buen ambiente de trabajo... pero por si acaso, intenta no ser el último mono de vuestro grupo, y si no se te da bien el código, intenta ser el que aporte mejores ideas o el que mantiene el grupo cohesionado y trabajando en equipo :P
Y créeme que te entiendo, yo también estoy en un par de proyectos de páginas web, y como he dicho en otras ocasiones, es la primera vez que me enfrento en serio a HTML, CSS y Javascript, a pesar de desarrollar en C#. Hay veces que mi jefe empieza a decirme de hacer cosas que se ven en HTML5 y tengo que avisarle de que se está pasando :D
Nada nada, confianza 0 con el buenrollismo Drumpi, ya tengo el culo pelado con estas cosas, simplemente me sorprende el buen trato en general, y mientras siga así, pues encantado, mis compañeros son también bastante majetes.
Lo de la diferencia con otros grupos no es de boquilla, me consta porque tenemos un grupo bastante grande de Whatsapp y no todos han tenido la misma suerte. Parece hasta cómico, pero nuestro grupo de Teams se llama Becarios PRO, el del resto son nombres de proyectos.
Hoy me han confirmado que los 3 haremos el mismo proyecto, una compañera y yo en Angular, y el otro compi en React. Nos están montando el backend en Node.js y tenemos unos días para revisar documentación, especial hincapié en Flexbox, de ahí y de HTML5 avanzado me toca revisar documentación de JavaScript, TypeScript y luego Angular. Hoy mismo nos han dicho que las prácticas están aprobadas, que el objetivo es ver cómo nos desenvolvemos en un proyecto front de cara a quedarnos con ellos en un futuro.
Ahora mismo me veo un poco abrumado porque no he hecho nada de web, y por ejemplo mi compañera viene de hacer DAW y un bootcamp de front.
No es que vea mucha dificultad en el contenido, pero parto de mucha desventaja en cuanto a tiempo, me va a llevar bastante ponerme al día en cuanto a cosas medianamente avanzadas, tengo documentación como para unas semanas y arrancamos ya mismo :D.
Por otro lado me apena dejar el desarrollo en Android Nativo o no poder dedicarle más tiempo a mi proyecto, que han revisado y me han dicho que está perfecto para entregar ya.
A ver, tampoco quiero que pienses que estás en una partida constante del "Among us" :D pero que intentes no relajarte demasiado con el ambiente distendido. Que eres un becario en pruebas, recién salido de un curso, no Steve Wozniak cambiando de lenguaje, por mucho PRO que hayan puesto en el grupo de Teams :D :D :D
De momento lo dicho, intenta suplir las carencias con más conocimiento o siendo parte indispensable del grupo.
Con el tema web estamos igual, pero eso es lo de menos (para tus jefes). Mientras funcione...
De todas formas, no sé hasta qué punto es mejor aprender Android o programación web. Hoy día, muchas apps son una WebPage que carga una versión "mobile" de la web de la empresa, y punto, y si no fuera porque la gente prefiere una APP que mirar una web, hoy día iría todo por HTML y JS (y cualquier sucedaneo que simplifique/automatice ambas cosas)... Al menos es mi impresión personal. Fíate de ella bajo tu propio riesgo, ya me conoces :D
Ah, apúntate cómo funciona la etiqueta "TODO" (por hacer), la vas a necesitar.
Yo sólo veo red flags por todos lados xD Sigo suscrito al blog, a ver cómo evoluciona.
De JS los cursos de Kent C Dodds están bien, aunque no se si tiene algo orientado a Angular.
selecter25
29/03/2023, 13:52
A ver, tampoco quiero que pienses que estás en una partida constante del "Among us" :D pero que intentes no relajarte demasiado con el ambiente distendido. Que eres un becario en pruebas, recién salido de un curso, no Steve Wozniak cambiando de lenguaje, por mucho PRO que hayan puesto en el grupo de Teams :D :D :D
De momento lo dicho, intenta suplir las carencias con más conocimiento o siendo parte indispensable del grupo.
Con el tema web estamos igual, pero eso es lo de menos (para tus jefes). Mientras funcione...
De todas formas, no sé hasta qué punto es mejor aprender Android o programación web. Hoy día, muchas apps son una WebPage que carga una versión "mobile" de la web de la empresa, y punto, y si no fuera porque la gente prefiere una APP que mirar una web, hoy día iría todo por HTML y JS (y cualquier sucedaneo que simplifique/automatice ambas cosas)... Al menos es mi impresión personal. Fíate de ella bajo tu propio riesgo, ya me conoces :D
Ah, apúntate cómo funciona la etiqueta "TODO" (por hacer), la vas a necesitar.
Yo creo que está mucho mejor el curro en Web que en Android, al menos en cuanto a volumen, toda la banca, aseguradoras y demás se mueve por ahí, en mobile igual, SAP mayoritariamente en HTML/TS/frameworks montado sobre Ionic. En freelance pues igual te da, ahí yo creo que con tus mierdecillas en nativo vas a generar ingresos pasivos que no van nada mal. El elegir Android era más que nada por gusto, por salida laboral creo que para acabar en una cárnica latiguera, mejor hacer React.
Nah mi objetivo es 100% aprender, no nos meten mucha presión ni carga de trabajo porque van hasta el culo, al final el pobre experto del grupo es el que nos está tutelando en todo, hoy por ejemplo no vamos ni a reunirnos con él, nos hemos montado un playground que compila el Typescript a JS en tiempo real, para ver las diferencias de código, y estamos repasando (ellos repasando, yo aprendiendo) píldoras de TS.
Por mi cuenta he empezado un cursete de Angular normalillo, a la espera de que nos pasen el proyecto en sí y el backend en NodeJS, para saber a qué me enfrento realmente.
el //ToDo me persigue desde los orígenes, de las primeras cosas que aprendí :D.
Yo sólo veo red flags por todos lados xD Sigo suscrito al blog, a ver cómo evoluciona.
De JS los cursos de Kent C Dodds están bien, aunque no se si tiene algo orientado a Angular.
XDD ya te digo que esto es un red flag con patas, pero dentro de lo malo no estoy en lo peor, tengo compis sin proyecto asignado, otros con dinosaurios haciendo SISNet, gente con backend en Java 7, y el más curioso uno que metieron a recoger incidencias y tickets, a modo de helpdesk :lol2:. Al menos he acabado en un framework decente, aunque no tenga nada que ver con lo que mejor sé hacer o lo que me gusta hacer.
Les echaré un ojo a los cursos, no vienen mal para manejar fundamentos, aunque ya nos imponen Typescript desde un principio. Viniendo de hacer Java/Kotlin, al menos toda la parte orientada a objetos y el tipado lo llevo mucho mejor que mis compañeros. Maquetando sigo en los años 90 :D, ahí sí me voy a tener que poner las pilas.
Seguiremos informando!
Con SAP trabajo yo, y me paso el día haciendo APPs móviles, y su correspondiente WebApi, pero cada vez son más los proyectos web que nos están saliendo. Sin embargo, no son pocas las empresas que necesitan un programa de ventas conectado a SAP directamente, o de gestión de inventario usando un lector de códigos de barras, y eso no lo puedes hacer web... a ver, puedes, pero añadir la interfaz del navegador en un espacio tan pequeño... y aparte, si no se lo simplificas, explícale al que no ha cogido un móvil en su vida qué es un navegador web, qué es una dirección web y por qué no debe aceptar las cookies, y todo eso antes de empezar a explicarle cómo funciona el programa :D
En mi trabajo cobro poco, y cada vez nos meten más prisa, pero oye, el horario es muy flexible, y mientras haga (como mínimo) mis 40 horas semanales y vaya entregando cosas, les da igual si entro a las 7 que a las 9, o si como en 2 horas o en 45 minutos. No sabes la tranquilidad que da eso. Y el ambiente es muy tranquilo, y los agobios sólo son en época de entregas (las cuales, se están multiplicando de un tiempo a esta parte). Sabiendo lo que hay fuera, prefiero quedarme donde estoy hasta que decidan que he dejado de dar la talla.
Al final te acostumbras a que te pidan cosas de las que no tienes ni idea, y terminas aprendiendo a base de modificar... a no ser que tengas que aprenderlo por tu cuenta (mucha suerte con eso).
selecter25
30/03/2023, 18:12
Con SAP trabajo yo, y me paso el día haciendo APPs móviles, y su correspondiente WebApi, pero cada vez son más los proyectos web que nos están saliendo. Sin embargo, no son pocas las empresas que necesitan un programa de ventas conectado a SAP directamente, o de gestión de inventario usando un lector de códigos de barras, y eso no lo puedes hacer web... a ver, puedes, pero añadir la interfaz del navegador en un espacio tan pequeño... y aparte, si no se lo simplificas, explícale al que no ha cogido un móvil en su vida qué es un navegador web, qué es una dirección web y por qué no debe aceptar las cookies, y todo eso antes de empezar a explicarle cómo funciona el programa :D
En mi trabajo cobro poco, y cada vez nos meten más prisa, pero oye, el horario es muy flexible, y mientras haga (como mínimo) mis 40 horas semanales y vaya entregando cosas, les da igual si entro a las 7 que a las 9, o si como en 2 horas o en 45 minutos. No sabes la tranquilidad que da eso. Y el ambiente es muy tranquilo, y los agobios sólo son en época de entregas (las cuales, se están multiplicando de un tiempo a esta parte). Sabiendo lo que hay fuera, prefiero quedarme donde estoy hasta que decidan que he dejado de dar la talla.
Al final te acostumbras a que te pidan cosas de las que no tienes ni idea, y terminas aprendiendo a base de modificar... a no ser que tengas que aprenderlo por tu cuenta (mucha suerte con eso).
Se me coló el orden de las siglas :lol2:, quise decir SPA (Single Page Application), que es básicamente lo que hacen React o Angular, una única página con contenido dinámico manejando componentes. Así van la mayoría de las maravillosas apps de banca, seguros, compañías de servicios y demás (aquí por suerte o desgracia tienen muuchas de muuchas compañías españolas) hoy en día (al menos el front, el backend de muchas cosas sigue en Cobol), por lo que si aprendo algo tampoco me va a venir mal, sabiendo Angular tengo las puertas de Ionic abiertas para hacer mobile.
De momento estoy como si hubiese empezado a aprender de manera autodidacta, hoy solo nos han atendido para decirnos que si ya pilotamos con lo que nos dieron de TypeScript (esperan que aprenda TS en 1 día y medio :D) que pillemos la docu de Angular y que hagamos lo mismo.
He pasado un poco, ayer ya tenía todos los ejemplos de TS hechos en el Playground, hice especial hincapié en cosas que no conocía y listo.
Hoy directamente me he puesto a hacer un curso de Angular, con la típica app de gestión de usuarios. En principio todo en orden, me he hecho mis componentes, routing, interpolación, bindings de todos tipo, se comunican y paso datos, he usado directivas, me he hecho un par de servicios (inyección de dependencias con Data Services), en resumen bastante bien, ahora solo me queda ver a qué me enfrento en un proyecto real.
He hablado con un conocido empleado que lleva bastantes años allí, y me ha explicado que los devs front de Angular/React no manejan ni el diseño, así que por suerte no voy a tener que maquetar nada, simplemente controlar lógica, consumir API y hacer algunas conexiones con el back que se nos proporcione. Es un alivio porque odio toda la parte de diseño, en la app de ejemplo que estoy haciendo uso Bootstrap y p'alante!
En cuanto a la carga de curro, por lo que me han comentado pasa más o menos como en el tuyo, la mayoría de gente va relajada pero cobra poco, y al que aprieten algo, suele salir por patas a otro sitio en donde al menos le paguen más.
Ah, ASP, eso es otra cosa... que se supone que yo debería aprender también ^^U Con la dificultad añadida de tener que hacerlo desde .NET
El caso es que se supone que un compañero y yo hicimos un curso para diseñar webs en .NET Core. Duró tres sesiones de 4 horas, y con eso "ya sabíamos programarlas". Claro que mi compañero sabía algo de HTML y vio hace años JS, yo nada de nada (salvo alguna incursión con el FrontPage, el "examinar" del navegador, y algunos lenguajes tipo XML), y con eso ya estoy haciendo páginas web.
Pero bueno, el punto es que tu puedes decir que sabes francés, pero si tienes que escribir en inglés, te ponen los dos vídeos del Muzzy, y ya te apañas tú para redactar informes. Luego se extrañan porque los informes están mal redactados, o no son tan interesantes de leer como los de Shakespeare.
Entre eso, y que los de RRHH normalmente no saben lo que les están pidiendo los analistas programadores... Eso cuando pueden hablar con los analistas, que seguramente sean sus jefes, que si han tocado alguna línea de código, aún se usaba Visual Studio 6, y la web de Homer era el no va más de Internet :D
Lo siento, creo que me desvío un poco hacia el hilo de los desahogos ^^U
Yo en su día aprendí Vue y más o menos lo controlo y es lo que uso para UIs de proyectos web. Ahora me da pereza aprender otra cosa porque no lo necesito, pero React sería una opción lógica porque tiene soporte muy sencillo a dispositivos móviles.
No suelo usar Bootstrap porque es tan utilizado que tus webs parecen iguales a media internet, manías mías. En páginas estáticas sí, es lo más rápido para tener algo bonito y visitable. Pero para páginas dinámicas en Vue la librería que prefiero es Vuetify que es una implementación de Google Material para Vue. Pero sí, nunca toco nada del estilismo aparte de definir el color principal de la web porque ya tenemos bastante con nuestras obligaciones.
Lo que sí que te recomiendo es aprender y usar cuanto antes una store "State Management Pattern" para tener los datos (modelo y acciones) de tu web centralizados en una sola clase compartida. Cuando usas componentes enseguida pierdes dónde está qué variable y quién la está tocando, y las stores te permiten tener la base de datos y las comunicaciones con el servidor centralizadas e incluso debugar fácilmente las llamadas que piden/cambian datos. Pinia (y antes Vuex) son la store de Vue. En React es Redux o Flux y en Angular no estoy seguro. NgRx?
-----Actualizado-----
Una store te añade un poco de complejidad y al principio no entiendes para qué porque los proyectos aún son sencillos. Por eso no te das cuenta de que la necesitas hasta que estás hasta el cuello en un mega-proyecto y no tienes ni idea de cuál de los 150 componentes te está cambiando las variables. Entonces desearías haber diseñado la web con los datos centralizado. Mejor usar las store cuanto antes y acostumbrarte a ellas incluso en proyectos pequeños.
-----Actualizado-----
Para los que no sepan lo que son:
Aunque tú puedes tener, por ejemplo, una lista con los mensajes de un usuario y que un componente X la descargue del servidor y otro componente Y la visualice, en cuanto la aplicación crezca, es muy posible que pierdas dónde está pasando qué. Especialmente si las llamadas al servidor cambian o similar, no sabrás qué componentes tienes que actualizar.
Una store te permite centralizar estas cosas, similar al "modelo" del MVC pero separando aún más las reponsabilidades: para cambiar algo tienes que (1) tu componente pide por favor que se cambie con un "dispatch", (2) las "actions" recogen el dispatch y solo ellas se comunican con el servidor y, si todo va bien, (3) emiten una orden "commit", que la atenderá una función "mutation" que es quien hace el cambio en el "state" de la web, y (4) todos los componentes se enteran de los cambios por la magia de la reactividad de JavaScript.
Esto es Vuex pero los demás son similar. Tú programarías las funciones que responden a las llamadas de "dispatch" y las que atienden los "commits". El state es literalmente el modelo del MVC, que debería ser de "solo lectura" para toda la web menos para las funciones de mutations: nadie puede cambiar nada sin hacer un dispatch. Además como puede ver los debugger tienen un solo punto al que conectarse, lo que te permite hacer pruebas o buscar errores" más fácilmente.
55475
selecter25
31/03/2023, 17:35
Yo en su día aprendí Vue y más o menos lo controlo y es lo que uso para UIs de proyectos web. Ahora me da pereza aprender otra cosa porque no lo necesito, pero React sería una opción lógica porque tiene soporte muy sencillo a dispositivos móviles.
No suelo usar Bootstrap porque es tan utilizado que tus webs parecen iguales a media internet, manías mías. En páginas estáticas sí, es lo más rápido para tener algo bonito y visitable. Pero para páginas dinámicas en Vue la librería que prefiero es Vuetify que es una implementación de Google Material para Vue. Pero sí, nunca toco nada del estilismo aparte de definir el color principal de la web porque ya tenemos bastante con nuestras obligaciones.
Lo que sí que te recomiendo es aprender y usar cuanto antes una store "State Management Pattern" para tener los datos (modelo y acciones) de tu web centralizados en una sola clase compartida. Cuando usas componentes enseguida pierdes dónde está qué variable y quién la está tocando, y las stores te permiten tener la base de datos y las comunicaciones con el servidor centralizadas e incluso debugar fácilmente las llamadas que piden/cambian datos. Pinia (y antes Vuex) son la store de Vue. En React es Redux o Flux y en Angular no estoy seguro. NgRx?
-----Actualizado-----
Una store te añade un poco de complejidad y al principio no entiendes para qué porque los proyectos aún son sencillos. Por eso no te das cuenta de que la necesitas hasta que estás hasta el cuello en un mega-proyecto y no tienes ni idea de cuál de los 150 componentes te está cambiando las variables. Entonces desearías haber diseñado la web con los datos centralizado. Mejor usar las store cuanto antes y acostumbrarte a ellas incluso en proyectos pequeños.
-----Actualizado-----
Para los que no sepan lo que son:
Aunque tú puedes tener, por ejemplo, una lista con los mensajes de un usuario y que un componente X la descargue del servidor y otro componente Y la visualice, en cuanto la aplicación crezca, es muy posible que pierdas dónde está pasando qué. Especialmente si las llamadas al servidor cambian o similar, no sabrás qué componentes tienes que actualizar.
Una store te permite centralizar estas cosas, similar al "modelo" del MVC pero separando aún más las reponsabilidades: para cambiar algo tienes que (1) tu componente pide por favor que se cambie con un "dispatch", (2) las "actions" recogen el dispatch y solo ellas se comunican con el servidor y, si todo va bien, (3) emiten una orden "commit", que la atenderá una función "mutation" que es quien hace el cambio en el "state" de la web, y (4) todos los componentes se enteran de los cambios por la magia de la reactividad de JavaScript.
Esto es Vuex pero los demás son similar. Tú programarías las funciones que responden a las llamadas de "dispatch" y las que atienden los "commits". El state es literalmente el modelo del MVC, que debería ser de "solo lectura" para toda la web menos para las funciones de mutations: nadie puede cambiar nada sin hacer un dispatch. Además como puede ver los debugger tienen un solo punto al que conectarse, lo que te permite hacer pruebas o buscar errores" más fácilmente.
55475
Vaale vaale, ya veo, muy interesante el tema de las stores, creo que sí, en Angular se implementa Redux por NgRX como dices. Le daré una vuelta cuando tenga todo más controlado, parece súper útil, en mi app de ejemplo que estoy haciendo a modo de PlayGround ya me estoy volviendo medio loco con 20/25 componentes :D.
Totalmente de acuerdo con Bootstrap, yo lo uso porque sé que luego no voy a diseñar nada, y me da un maquetado rápido para ponerme de lleno con lo que ahora mismo me interesa aprender, toda la lógica del TypeScript y la comunicación con los templates.
Mi compañera becaria viene de toquetear Vue en una bootcamp, y me comentó que es una versión reducida de todo lo que ha visto en Angular, rápida y muy buena opción para proyectos más pequeños.
Hoy por mi cuenta he estado practicando con mi pequeña app de "simulacro de gestión de usuarios", he trasteado con el routing, pasando parámetros por las rutas para editar usuarios, y trasteando con los queryParams para otorgar al mismo componente de funciones distintas dependiendo de la acción que pase (por ejemplo editar o borrar usuario).
Este finde si me queda tiempo y ganas intentaré meterle persistencia de datos y autenticación con Firebase. Si todo va bien acabaré algo funcional antes de que me hayan intentado enseñar siquiera algo de Angular :lol2:.
He estado viendo algunos vídeos de Svelte, y me ha gustado mucho. Ahora parece que React va a morir y se va a usar solo con Frameworks (Nextjs), y en Angular van a implementar los hooks de React, vamos, que convergen.
Por el lado "oficial", mi instructor nos ha pasado unas píldoras de Git, para asegurarse de que no la liamos cuando nos den acceso al repo del proyecto :D. Luego nos ha cascado unos ejercicios muy básicos (hechos en 10 minutos) y nos ha dicho que el lunes empezaremos a hacer con él otros ejercicios de resolución de conflictos en Git.
También nos ha dicho que en un futuro, aleatoriamente nos iba a boicotear el proyecto a nivel Git para que resolviéramos problemas, menudo troll :lol2:.
Finalmente nos han abierto el acceso a EverFutureWeb, yo andaba ilusionado por ver los cursos y certificaciones, y vaya chasco... El de Angular con TypeScript son vídeos de YT de hace un par de años...
54 horas superadas, seguiremos informando.
Mi compañera becaria viene de toquetear Vue en una bootcamp, y me comentó que es una versión reducida de todo lo que ha visto en Angular, rápida y muy buena opción para proyectos más pequeños.
Mi impresión es que los tres Angular/Vue/React hacen lo mismo y escoges uno u otro por otros factores: comunidad, experiencia del equipo, soporte...
No es que Vue o React sean una versión reducida sino que son modulares así que puedes empezar a aprender con proyectos pequeños. Vue+Vuex+Route+su guía de estilo (que al final lo necesitarás todo para un proyecto grande) es similar a Angular, con el que ya empiezas all-in desde el principio.
Y que tengas que empezar con todo en Angular no es una desventaja, al revés: como te obliga a seguir sus librerías, sus normas y sus cosas, todos los proyectos tienen lo mismo en los mismos sitios y los desarrolladores pueden saltar fácil entre proyectos. Que es algo que le interesa mucho tanto a las empresas como a los desarrolladores. Con Angular es fácil saltar a un proyecto que ya esté en marcha si ya tienes experiencia en el framework. Con React o Vue, costará más entrar en un proyecto que ya esté en marcha. Ambos lo intentan solucionar con sus "guías de estilo de proyectos" u ofreciendo librerías "oficiales" como extras que acaban siendo obligatorios.
Creo, pero hablo un poco desde el desconocimiento porque nunca he hecho nada serio en Angular, solo en Vue.
Juer, yo no sé cómo os aclaráis con tantas cosas. Yo llevo 5 años con C#, y aún no conozco ni la mitad de las posibilidades que da el lenguaje.
No hablemos de cosas que ya no son del lenguaje, como MVC, MVVM, etc, que te tiras horas implementando cosas, y luego tienes que mover código porque no está donde debería estar.
selecter25
04/04/2023, 14:59
Juer, yo no sé cómo os aclaráis con tantas cosas. Yo llevo 5 años con C#, y aún no conozco ni la mitad de las posibilidades que da el lenguaje.
No hablemos de cosas que ya no son del lenguaje, como MVC, MVVM, etc, que te tiras horas implementando cosas, y luego tienes que mover código porque no está donde debería estar.
Juan se aclara, yo estoy intentando aprender :D. Nah, seguro que de C# pilotas mucho, te pasará como en el BOTW, que mitificas lo secundario :lol2:
Yo de patrones de arquitectura sí que voy bastante bien, al usar siempre lenguajes orientados a objetos me gusta tener todo ordenadito, normalmente hago cosillas en MVC, y en mobile siempre MVVM. En web es todo más anárquico si quieres, aunque aplicando principios SOLID y CA, deberías de seguir un patrón MVC (la estructura .ts/.html/.css ya invita a ello), con componentes que hagan el mínimo posible de cosas.
Algo que no me gusta del web es la fragmentación, hay 400 frameworks distintos para hacer lo mismo, a su vez con 400 módulos para hacer X cosa, muchos con una anarquía total, ultra modulares, con cambios bruscos que te dejan obsoleto de la noche a la mañana. Y suerte que he dado con el más estructurado que es Angular, pero visto lo visto se va a ir a hacer muchas cosas como el lado oscuro (React).
Cuando aprendes cómo funciona todo de una forma digamos estándar, te meten SSR y a aprender de nuevo (oops, adiós referenciar window, document, navigator, location...), o te meten RXJS (como me recomendó Juan) y te estalla la cabeza con acciones, reducers, stores y selectores, effects, funciones puras y mi abuela en bicicleta. De nada sirve lo que aprendí la semana pasada.
Digamos que durante esta semana y media, aparte de meterle a TypeScript, he absorbido los conceptos básicos de Angular, estructura del proyecto, componentes, interpolación, bindings, comunicación entre componentes, ciclos de vida, módulos, servicios, inyección de dependencias, directivas, pipes, lazy load, consumo de APIs... y he aprendido a hacer algunas apps básicas con ello a modo de PlayGround, una gestión de usuarios, unos formularios de registro/login reactivos, con validadores, un consumo de la API de Rick & Morty para buscar y filtrar personajes, una app con persistencia de datos en Firebase para marcar rutas vacacionales.
Mañana creo que nos presentan el proyecto, porque hay un compañero muy pesado e hiperactivo que quiere empezar ya, pero llevamos todo este tiempo prácticamente por libre, a excepción de unas píldoras de TypeScript y otras de Git y resolución de conflictos, que es algo que llevo muy trillado. Si por ellos (y por mí) fuese, nos pegábamos 2 semanas más mínimo revisando Angular, pero este tío es un gumias, y lo peor es que no sabe una m***.
Seguiremos informando con más progresos (si los hay)!
Algo que no me gusta del web es la fragmentación, hay 400 frameworks distintos para hacer lo mismo, a su vez con 400 módulos para hacer X cosa, muchos con una anarquía total, ultra modulares, con cambios bruscos que te dejan obsoleto de la noche a la mañana. Y suerte que he dado con el más estructurado que es Angular, pero visto lo visto se va a ir a hacer muchas cosas como el lado oscuro (React).
Sí, esa es exactamente mi impresión del desarrollo web: muchas opciones, muchas librerías que solo puedes escoger porque te gusta el nombre o porque es la que usan en el tutorial que has visto, porque no hay nada que las distinga, y cambios bruscos por modas o evolución. 6 meses después de que haya empezado a aprender, todo ha cambiado y no estás usando nada igual que al principio.
De todas formas piensa que estos cambios bruscos es solo para cuando tengas que empezar un proyecto. Si tienes que mantenerlo, es poco probable que haya muchos cambios de librerías o tecnologías dentro del proyecto durante su vida útil.
selecter25
04/04/2023, 17:40
Sí, esa es exactamente mi impresión del desarrollo web: muchas opciones, muchas librerías que solo puedes escoger porque te gusta el nombre o porque es la que usan en el tutorial que has visto, porque no hay nada que las distinga, y cambios bruscos por modas o evolución. 6 meses después de que haya empezado a aprender, todo ha cambiado y no estás usando nada igual que al principio.
De todas formas piensa que estos cambios bruscos es solo para cuando tengas que empezar un proyecto. Si tienes que mantenerlo, es poco probable que haya muchos cambios de librerías o tecnologías dentro del proyecto durante su vida útil.
Sí, eso es lo que en principio nos han dicho, que al menos en consultoría, una vez dentro de un proyecto es complicado que cambie algo, a no ser que migren cosas, pero no pasa en el 99% de los casos a no ser que lo pida el cliente. De hecho ya nos dijeron que la mayoría de backend de banca seguía en Cobol :lol2:, porque los clientes se negaban a migrar a algo menos fiable. Esto me lo confirmó un compañero que curraba allí hace tiempo.
También nos dijeron que la mayoría de clientes tenían sus propias librerías para hacer x cosas, razón de más para que el proyecto sea inmutable.
El problema gordo que veo es alguien que entre nuevo y quiera aprender web, no sabe por dónde empezar. Y lo que dices, al ser todo tan anárquico la mayoría de ejemplos no te sirven al uso. Por ejemplo acaba de morir React, desde hace unas semanas está deprecado y se han pasado a frameworks (dan como alternativa usar Vite), siendo Nextjs el recomendado.
Pues bien, encontrar documentación o ejemplos actuales de React+Nextjs que "funcionen" es tarea imposible, la documentación oficial suele ser malilla, ya que React se liberó a las bravas por FB, originalmente era un proyecto interno para mejorar la experiencia de navegación de su red social. Como curiosidad, React ha muerto justo cuando han lanzado una documentación que es Jesucristo y que todo el mundo estuvo esperando años :lol:.
Eso es lo que me pasa a mi, me dicen que me meta en desarrollo web, pero no sé ni por dónde empezar.
¿Empiezo por los cimientos, que son HTML, JS y CSS que son la base de todo? No, porque nadie lo usa gracias a frameworks, librerías y otros entornos que le "facilitan" la vida al programador ¿Me meto con algún framework? ¿Con cual? ¿Y para qué, si en el tiempo que tardo en dominarlo se queda obsoleto, y no me sirve más que para trabajar en el 1% de las empresas del sector?
Cuando me dijeron que íbamos a empezar a desarrollar webs, me eché las manos a la cabeza. Por suerte, nuestro "tutor" nos señaló en la dirección de .NET, y quitando la parte en que necesito aprender HTML y JS, y alguna parte de "código mágico", puedo construir webs sencillas sin salirme mucho de lo que conozco... aunque el MVC ha quedado relegado a un apartado del proyecto, que es la parte de comunicación con SAP y la BBDD, y el resto... digamos que es una chapuza que funciona, y se ve decente gracias a bootstrap y su startmin (me da igual que se vea como otras webs, nos interesa la funcionalidad, no la estética).
Aparte que yo soy de los que necesita saber cómo funcionan las cosas, cualquier tipo de "código mágico" o "copia/pega", me hace estallar la cabeza, y pierdo más tiempo intentando entender que picando código. Y yo no tengo pegas en lidiar con mala documentación (y Xamarin no es de las peores que he visto), pero dado que me dan el tiempo justo para desarrollar, y no para investigar, prefiero usar algo que esté bien documentado para no tener que perder el tiempo en averiguar para qué sirve cada cosa.
Es más, cuanto más pienso en ello, más me gusta la idea de hacer chorri-juegos en Bennu, con desarrollos de 2 meses, y venderlos en plataformas tipo itchio o similares :D Empezaría por un crap-juego basado en un Zelda, y con cada nuevo juego de ese estilo, iría mejorando un poco el motor, hasta conseguir un juego de plataformas 3D en vista aérea... :lol:
Yo veo más sencillo empezar ahora que antes. Antes para hacer una web tenías que saber mucho de HTML, de CSS y de JavaScript
Ahora te apañas sabiendo solo con un poco de un JavaScript para hacer páginas muy potentes. CSS y HTML no tienes ni que saber que existen.
Lo difícil es si empiezas con el pensamiento "una web necesita html+javascript+css", porque entonces no sabes dónde está nada. ¿Y el HTML, dónde se escribe? Pues en ningún lado ya, todo va por componentes custom que puedes sacar de librerías sin escribir nada pero que retocas a tu manera con JavaScript.
Lo difícil no es aprender, es olvidar cómo se hacía webs hace 10 años y empezar sin prejuicios. Para alguien que empieza, es infinitamente más fácil y rápido hacer web potentes y no necesita ni una fracción de los conocimientos de antes.
selecter25
04/04/2023, 22:10
Para muestra un botón, yo voy bastante justito en HTML/css, pero tampoco hacen falta milagros, me las apaño para hacer mis mierdas sobradamente, y si quiero trastear, tiro de bootstrap y a otra cosa. Para llevar solo una semana y media en el asunto, ya hago mis cositas medio decentes.
Aunque la gente diga que Java y JavaScript no se parecen en nada, yo sí que les he encontrado muchas similitudes, y también muchas otras cosas que he usado en Android/Kotlin, como el tipado que es idéntico, los parámetros opcionales, let/const vs var/val, las funciones asíncronas... También tiene cosas distintas que me han molado y que se aprenden en 2 tardes, como el operador spread (súper útil para crear nuevos estados), los atributos solo de lectura, los atributos por defecto...
Esta noche me he picado y me he puesto por mi cuenta a hacer una pokedex consumiendo una API de Pokemon, de momento ni tan mal.
juanvvc, si sabes medianamente cómo funcionan los frameworks o si ya has programado en web, sí que es más fácil empezar, el problema es lo que dice Drumpi, al que viene sin idea alguna le cuesta hasta decidir con qué empezar porque todo suena a chino.
Pese a que muchos lo dan por muerto (ojo que llegan los hooks), me está gustando Angular porque está todo bastante bien estructurado, quizás la curva de aprendizaje es un poco heavy al principio, pero puedes mirar ejemplos de hace algunos años sin miedo a no poder adaptarlos, y la documentación es bastante buena.
Yo suelo poner esta página ¡de 2016! donde explica con humor cómo es el desarrollo web actual para los que somos viejos: https://medium.com/hackernoon/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f Algunas de las librerías mencionadas siguen con nosotros, muchas ya murieron hace tiempo.
Y por otro lado, una de las razones que hace todo esto tan complicado es lograr la compatibilidad con todos los navegadores. No sé cómo veréis esa página, pero yo la recordaba con fondo blanco y ahora la veo con un color verde que me ha dado dolor de cabeza. Probablemente, ha perdido compatibilidad con las tecnologías modernas. Activad el "reader mode" en el navegador o la previsualización para impresión para poder leerla.
De todas formas, para empezar: escoge Vue/React/Angular y sigue sus tutoriales, porque ya asumen que no sabes nada. Asume tú también que no sabes nada de programación web. Es más fácil empezar si no intentas compararlo con lo que ya crees saber de la web. ¿HTML? Nadie escribe HTML. Es 2016. No te canses buscando el index.html porque, aunque lo encuentres, las herramientas automáticas lo van a sobreescribir.
Para empezar en Vue, el tutorial de Microsoft parece sencillo: https://learn.microsoft.com/es-es/windows/dev-environment/javascript/vue-beginners-tutorial Antes de leer nada más juega un poco con los archivos en el directorio src y luego te pones a leer la documentación. No se crean las webs desde cero, yo siempre empiezo a partir de la plantilla del propio tutorial y voy agregando componentes.
Con Vue empiezas cualquier tarde tonta y al menos te vale para probar cómo es el desarrollo web actual. Luego ya decides si prefieres jugar al rol, seguir con Vue o saltar a Angular. Angular tiene una curva más compleja como dice selecter pero una proyección laboral más fuerte, precisamente porque es muy estable y estructurado y permite más rotación de desarrolladores en los proyectos
-----Actualizado-----
Por recoger cable: reconozco que el escalón inicial para entrar es un poco más alto que antes, cuando con un editor de txt te apañabas. Pero una vez superas ese escalón inicial, enseguida vuelas mucho más alto que antes y las webs que puedes hacer no tienen ni comparación.
Estoy tentado de subir una captura de la web que estoy haciendo, pero no sé qué puedo enseñar sin infringir la LPD, y los derechos de uso. Aparte, que ya no puedo subir fotos al foro (ya lo he intentado con la foto satélite del camping) y que no tengo ganas de que me apedreen por dañarle los ojos a nadie :lol:
selecter25
06/04/2023, 18:51
Hombre, si son cosas sensibles mejor respetar, aquí el primer día ya me hicieron cascarme y firmar como 6 cursos de manejo de información sensible.
Hoy después de casi 2 semanas, nos han dejado ver el "proyecto" que nos han asignado. Jarro de agua fría :lol2:.
El proyecto simula una app de manejo de comunidades de vecinos, pero (al menos de momento) es más simple que el mecanismo de un botijo. El backend lo han hecho en Nodejs, y enfrentamos a una BD de tipo CouchDB, muy similar a MongoDB o a Firestore que ya venía usando en Android. Son unos 5/6 componentes, con un sistema de login "simulado" que no permite registro, nos dan un user válido que devuelve un token y a pastar.
Básicamente es más sencillo que los tutoriales y las mierdas que he estado haciendo desde la semana 1, encima aquí backend 0, y el diseño de templates libre, les importa 0, solo la integración del front y que todo funcione como debe. En principio esta es la entrega 1, desconozco si añadiremos funcionalidades.
A grosso modo, tengo que hacer un formulario responsive con validación (que ya hice por mi cuenta), una vez validado y logueado recibo token desde la BD y usando directiva ngIf (mientras exista el token) permito que se muestren las opciones de administración (CRUD sin la u :lol:, mostrar/añadir/borrar comunidades, mostrar/añadir/borrar vecinos). Al hacer logout, se iguala el token a null y se vuelve al componente de login.
Desconectaré estas vacaciones porque me han desmotivado un poco, creo que esa tarea la hago en una tarde siendo un noob total. La tarde de hoy la dediqué a acabar mi bautizada como Pochedex y a aprender a hacer deploys en Firebase. Es una mierda simple, sin css (full Bootstrap), con dos componentes y consumo de API, pero me vino bien para aplicar gran parte de lo que aprendí estos días (interpolación, directivas, intercambio de datos hijo/padre con @Output, servicios, un par de pipes para convertir unidades métricas y de peso, integración de navs en cartas, consumo de APIs, manejo de estados...), podéis apedrearme a mí en lugar de a Drumpi.
https://pokedexspl.web.app/
También indagué en Ionic/Capacitor y he visto lo fácil que es hacer apps para iOS/Android a partir de un proyecto Angular, prácticamente en 15 minutos tienes una "in app browser" funcionando.
selecter25
19/04/2023, 22:38
Bueno pamicos, actualizo por aquí porque han pasado muchas cosas en estos últimos días.
Después del desencanto inicial con el "proyecto ficticio", le metí muy duro a Angular estas semanas, tanto que tras pasarnos el backend implementé toda la funcionalidad que se nos pidió en poco más de un día. Además le localicé un par de fallitos en el backend bicheando, y tras hablar con el instructor de ello (se sorprendió mucho de mi progresión), me dejó también trastear con el backend y subsanarlos, ya que mis compis becarios iban bastante más atrasados y no quería darme solo a mí las nuevas funcionalidades. Parece que lo estoy haciendo bien, mi compañera becaria le comentó que iba a ir un poquito más despacio y le dijo que sin problema, que si se atascaba le preguntase a él o a "selecter25", que controla bastante. Me ha tirado el muerto encima, nos echamos unas risas con ello pero me queda un buen regusto al ver que el feedback es bueno.
Por otro lado, hace unos días "enganchamos por la pechera" a este mismo instructor y le comentamos el descontento y el sentimiento de abandono que nos invadía, pues la mayoría de compis están en proyectos reales y no sabíamos bien qué esperar del nuestro.
Nos dijo que nada más lejos de la realidad, que le habían pedido expresamente que nos hiciese de Jedi en Angular/React-Next y luego Ionic con vista a lo que nos dijeron en un principio, meternos en nuevos desarrollos híbridos. Nos metió un mini-spoiler y nos dijo que en el centro van a montar un nuevo equipo de desarrollo híbrido/mobile, y que contaban con nosotros, de ahí que no nos hubiesen asignado ningún proyecto mierder y orientasen nuestra FCT a la fomarción. Nos fuimos un poco más contentos, pero seguíamos sin arrancarnos ese punto de escepticismo que teníamos desde un principio.
Y así hasta hoy. A primera hora nos convocan a una reunión con uno de los CSL de la sección de mobile (el que supuestamente iba a ser nuestro instructor). Nos pregunta por cómo nos encontramos, y nos dice que el feedback que está recibiendo es muy bueno, que el experto en Angular que nos han asignado está muy contento porque somos autónomos, resolutivos y la progresión es muy buena.
Le comentamos un poco el desconcierto que teníamos acerca del desarrollo de la FCT y nos llama a la tranquilidad. Todo lo que nos habían comentado es totalmente cierto, están montando un nuevo grupo de unos 15-20 desarrolladores para híbrido/nativo y contaban con nosotros desde un principio, solo que eran 2 proyectos nuevos y por confidencialidad de datos no podían decirnos nada hasta que lo tuviesen cerrado. Y al parecer el momento ha llegado. Nos convoca de nuevo para una reunión a las 13h, esta vez con nuestro instructor de Angular y el otro CSL de mobile, el que nos atendió en el centro el primer día y que aparentemente es el que maneja toda la sección.
Pues aquí llega el desenlace, nos reunimos y volvemos a hablar de lo mismo pero con él, y el feedback del experto en Angular en primera persona. Aquí ya nos confirman que si queremos quedarnos con ellos, estamos dentro 100%, porque están muy contentos. Luego el CSL nos ha revelado un poco el nuevo proyecto de híbrido/nativo que tienen entre manos, han firmado dos clientes grandes (Inditex y Zurich) y se ponen en marcha ya mismo, así que tienen varias necesidades a cubrir, nos las explica.
En principio se nos pregunta qué es lo que más nos gustaría hacer, si por un casual no queremos cubrir ninguna necesidad del proyecto o queremos seguir haciendo web a secas, nos asigna en otro sin problemas, solo que estaríamos en otro grupo. Yo he comentado que ahora me da igual, llegué con ganas de hacer Android/Kotlin pero me había adaptado muy bien a Angular/TypeScript, y no me disgusta, por lo que estaba abierto a hacer cualquier cosa. Además el trato, aunque escaso, es muy agradable y distendido, los 3 tipos en ese aspecto son unos cracks.
El compi becario dice que a él le gustaría seguir con React-NextJS, la otra compi se apunta conmigo al "lo que sea, no hay miedo". Finalmente, nos dice propone a los dos valientes que hagamos iOS nativo, que es donde hay mucha más necesidad y donde más escasean los programadores. Aunque quieren orientar el futuro al híbrido, hay muchos clientes "pijos" que quieren nativo, por ejemplo Inditex tiene tooodos los terminales de tienda y sus apps basadas en iOS. Igualmente insiste, si queremos hacer otra cosa, nos reubica. Nos comenta un poco el handicap de Xcode (lo mal que va), hacemos 4 coñas (éramos todos antiApple) y aceptamos.
Y así continua la historia, se acaba Angular para mí en el momento en que reciban los 2/4 MAC que han pedido, momento en el que devoveré el portátil con el i5. Estos días seguiré de todos modos currando en el proyecto de Angular, pero ya tengo documentación de Swift y estoy a la espera de que me asignen un nuevo experto desde Sabadell, que supuestamente es un crack en nativo, para que nos dé una formación intensiva adicional. Lo bueno es que el MAC nos lo dan sin capar y con permisos de admin totales, lo malo es que me paso al bando oscuro.
Resumen: En 3 semanas paso de Android dev, a web dev into iOS dev, esta vez con unos proyectos prometedores. Seguiremos informando!
No se que problema ven con Xcode, es más pesado que Visual Studio pero no va mal, vamos yo lo uso (10.2.1) en un MacMini del 2011, 16GB de RAM y sin problemas.
Eso si, programar en Cocoa o iOS es bastante distinto a hacerlo en .NET o Delphi XD, en parte es por cosas que tiene el Objective-C o Swift.
selecter25
20/04/2023, 00:24
No se que problema ven con Xcode, es más pesado que Visual Studio pero no va mal, vamos yo lo uso (10.2.1) en un MacMini del 2011, 16GB de RAM y sin problemas.
Eso si, programar en Cocoa o iOS es bastante distinto a hacerlo en .NET o Delphi XD, en parte es por cosas que tiene el Objective-C o Swift.
Según me contó el CSL tiene gente quejándose hasta con los Macbook con M1 :lol2:, a ver lo que me dan (en principio un Macbook nuevecito, a muy malas un MacMini) y juzgaré por mí mismo.
Como dices, vengo de sufrir Visual Studio y Android Studio, no creo (espero) que vaya mucho peor. Lo que sí voy a echar de menos es el Visual Studio Code, en estas semanas metiéndole caña seria, me parece que MS se ha marcado un IDE cojonudísimo.
A este paso, sacas una peli muy interesante con lo que os está pasando :D
Me alegra que la cosa vaya funcionando, y que prometa mucho. Me sigue extrañando que contraten gente nueva para proyectos grandes o importantes, supongo que tendréis un senior haciendo el esqueleto del proyecto y a vosotros os pondrán en las tareas más "sencillas", es decir, a diseñar páginas de apps y formularios y demás, y ampliar y corregir a partir de ahí.
Respecto a IDEs que no responden bien, se puede hacer un docudrama de eso. Todos los IDEs tienen sus problemas, y con el tiempo los han ido mejorando. Eclipse era lento, y mucha gente se pasó a Visual Studio, que si bien hace años era un mastodonte que necesitaba un maquinón para funcionar... sigue siendo un mastodonte, que a veces le cuesta hasta caminar, pero por suerte, los requisitos mínimos no han crecido al mismo ritmo que el HW, y a menos que sigas con un tronco-PC (como el mío), funcionará sin problemas.
Ya XCode no sé decir cómo va... pero que exista VS para MacOS no es muy buena señal (y sí buenas noticias, si te gusta ese entorno).
Pero bueno, tampoco hay que hacer un drama. En mi caso, tengo proyectos en los que tardo como medio minuto o el doble o el triple sólo en arrancar, sobre todo porque tengo que hacer login en la BBDD y no puedo desactivar la seguridad, y eso me retrasa mucho la depuración, y por eso tengo que prestar mucha atención para evitar errores, y hacer todas la modificaciones pequeñas que se puedan programar antes de cada prueba (y yo soy de los de gatillo fácil respecto al botón de compilar y ejecutar :D ).
No creo que sea peor en un entorno Apple... ¿verdad?
Te habrás pasado al lado oscuro, pero al menos te dan el material que necesitas :D Yo llevo esperando un móvil para desarrollo de apps desde hace 4 años. Estoy usando una tablet vieja que tenía por casa (y así testeo el rendimiento), y aún se extrañan de las cosas se ven muy grandes y aplastadas en pantalla :quepalmo:
selecter25
20/04/2023, 13:27
See, de 4 dudas tontas se ha convertido en esto en un blog/novela turca :lol:.
Creo que la mayor suerte que he tenido es caer en una sección que tiene un CSL con mucha mano y un par de huevos, porque normalmente todas las referencias que todos tenemos de esta consultora son malas, y en muchos aspectos me he llevado una sorpresa para bien. Fue decirle "sí" y ya estaba pidiendo 4 Mac a IT para "ya", y nos hizo la bromilla de "en breves me estareis pidiendo el iPhone para hacer pruebas, y el iPad para seguir con lo vuestro mientras cagais, por muy antiApple que seamos somos todos iguales".
En cuanto a los nuevos proyectos y nuestras funciones, en principio aprender de la mano de un perfil experto hasta ser autónomos, porque en los proyectos de mobile (o mejor dicho en la sección mobile de los proyectos) suele haber 1 o 2 devs como máximo.
Estos dos en concreto tienen 3 partes, desarrollo web, zona híbrida y nativa mobile (Android e iOS). Según nos dijeron, el enfoque a futuro es meter mucha híbrida en el center, aunque en principio los clientes son todavía reacios y piden nativo por "pijerío o status", pero están pagando dos veces por lo mismo.
Sí claro, entre esos 15/20 nos han dicho que meterán perfiles de gente que ya tienen, pero "prohibidos dinosaurios", están desmantelando otros proyectos con muchos años a la espalda (Caixa pej) y están sacando los mejores analistas (en este caso uno de mis instructores, el otro CSL), scrum masters, diseñadores, expertos, seniors... El problema principal que tenían es que no tienen muchos perfiles de dev iOS (de ahí que quieran formar gente), porque es un sector con una entrada "difícil" en comparación al resto, de hecho el experto que nos han dicho que más pilota es de otro center, y eso que aquí son unos 1800 empleados.
Yo ya le vi las orejas al lobo con la híbrida, y hace unos meses comenté que me gustaba mucho la idea de Flutter, no iba muy desencaminado. Imagino que en un futuro, si crece la demanda acabaré en desarrollo híbrido, ya sea con ese o con Ionic/React Native/Cordova, de momento a aprender.
Seguiremos informando!
Dudo mucho de que puedas hacer el interface con el VS.
Y yo programando para OS-X cuando parece que si trasteara con iOS tendria trabajo asegurado... que cosas.
selecter25
21/04/2023, 10:21
Dudo mucho de que puedas hacer el interface con el VS.
Y yo programando para OS-X cuando parece que si trasteara con iOS tendria trabajo asegurado... que cosas.
Exacto, el iOS Designer de Xamarin.iOS está deprecated, no? Se hace todo ya desde Xcode.
Yo le he metido un rato por encima a sintaxis, estructuras, patrones de diseño y demás básicos en Swift y me lo salto, es todo muy similar a las mierders que ya sé, así que me he liado directamente a ver el tomate (ni playgrounds ni historias) y he enganchado con SwiftUI.
Me recomiendas echarle un ojo a UIKit o hago bien en meterme de lleno a SwiftUI?
¡Ah! No sé, yo para iOS desarrollo con Xamarin, no en nativo, y todo el diseño de interfaz va a través de las librerías de Xamarin.Forms. De hecho, las APPs las hago desde un Windows, y para iOS conecto VS remotamente con un MacInCloud, y sólo para compilar. Yo propuse pillar un MacMini de segunda zarpa para esto, pero salía más rentable "alquilar" el Mac virtual por meses, porque ningún cliente nos pide ya la APP para iOS (hay uno que los usa, pero parece que les sale más rentable cambiarles el móvil a los empleados que pagarnos por el port).
De hecho, yo no uso ni designer, voy todo a xaml "pelao", porque vaya porquería de interfaz: es lentísima, responde cuando le da la gana, y se arma la p*ch* un lío en cuanto haces binding a cualquier variable del modelo.
Yo no uso Swift, uso Objective-C, tengo bastantes cosas en C/C++ y es facil integrarlo, no se si en Swift es igual de facil.
Y de iOS he tocado muy poco, lo que vi es que no tienes los los binding para "enganchar" los controles a las propiedades de los objetos. Supongo por problemas de rendimiento o memoria.
Lo que es un dolor en el culo es la parte del Layout, como tengas que meter algo a mano sin el IB... ufff, no he llegado a ese punto que haces click y lo ves todo claro.
selecter25
21/04/2023, 13:39
Drumpi con Xamarin.Forms sí que he visto que puedes hacer cosillas a nivel de UI, pero no sé hasta qué nivel distará de lo que puedes hacer en las nativas, que estoy viendo que son una caña.
swapd0 justo he estado viendo tutos esta mañana y me autorespondo, sí se necesita UIkit, para todo lo que no se haya implementado en SwiftUI, por ejemplo un visor de mapas. Pero es tan sencillo como importar UIkit y meter una vista de este dentro de una de SwiftUI.
En cuanto a manejo de propiedades del layout, bindings e intercambio de datos entre los componentes(aquí son vistas), tiene varios property wrappers, se hace todo por anotaciones dependiendo de lo que pases, y el mecanismo es sencillo como el de un botijo, al menos mucho más fácil o al mismo nivel que en Android. La mayoría de cambios entre vistas los manejas por programación reactiva, observables y listo, también todo mucho más sencillo que por ejemplo lo que venía de ver en Angular.
Imagino que UIkit Swift/SwiftUI ha simplificado todo mucho, de hecho hacer un layout parece cosa de niños si lo comparamos con Jetpack Compose o Flutter, en 5 minutos tienes cosas pintadas que en Android me pegaría como 10 veces más, incluso con layouts en xml que más o menos domino.
Llevo solo unas horas y he de decir que venía con muchos prejuicios, pero el hecho de que todo viene a medida para el famoso "ecosistema" y que no tienes que manejar tooda la fragmentación de dispositivos que sí maneja Android o a nivel web, hace muchas cosas terriblememte sencillas.
Con Xamarin.Forms haces formularios usando herramientas de Xamarin.Forms. Estas son las típicas que encuentras en todas partes, e intenta mantener la estética de Android e iOS, poniendo las pestañas arriba o abajo, y mostrando el texto o el icono, según el sistema, por poner un ejemplo.
Ahora bien ¿No te gusta cómo se ve algo? ¿Te falta funcionalidad? ¿no puedes crear una vista con lo que te hace falta? ¿O quieres acceder a cosas más internas del sistema? Pues puedes crear un "custom renderer", para lo cual tienes que crear código "nativo" (no sé hasta qué punto es nativo, porque me sigue pareciendo C# lo que escribes) tanto en el proyecto Android como en el de iOS, dentro de la solución, y ahí puedes acceder a librerías específicas de cada sistema... pero yo no he llegado a profundizar tanto.
De todas formas, parece que M$ ha decidido poner fin a Xamarin, y ha empezado con una cosa llamada Maui, que por lo que me han contado es el mismo perro pero con otro collar... o más bien, que han reescrito Xamarin desde cero, para hacer limpieza y arreglar cosas que no se pueden con un simple parche.
Después de 5 versiones (y de tener a sus usuarios actualizando constantemente y arreglando problemas de compatibilidad) durante ¿7 años? Pues como que la gente estaba ya quemada. Es que parecían SplinterGU en sus buenos tiempos :awesome:
selecter25
25/04/2023, 17:18
Con Xamarin.Forms haces formularios usando herramientas de Xamarin.Forms. Estas son las típicas que encuentras en todas partes, e intenta mantener la estética de Android e iOS, poniendo las pestañas arriba o abajo, y mostrando el texto o el icono, según el sistema, por poner un ejemplo.
Ahora bien ¿No te gusta cómo se ve algo? ¿Te falta funcionalidad? ¿no puedes crear una vista con lo que te hace falta? ¿O quieres acceder a cosas más internas del sistema? Pues puedes crear un "custom renderer", para lo cual tienes que crear código "nativo" (no sé hasta qué punto es nativo, porque me sigue pareciendo C# lo que escribes) tanto en el proyecto Android como en el de iOS, dentro de la solución, y ahí puedes acceder a librerías específicas de cada sistema... pero yo no he llegado a profundizar tanto.
De todas formas, parece que M$ ha decidido poner fin a Xamarin, y ha empezado con una cosa llamada Maui, que por lo que me han contado es el mismo perro pero con otro collar... o más bien, que han reescrito Xamarin desde cero, para hacer limpieza y arreglar cosas que no se pueden con un simple parche.
Después de 5 versiones (y de tener a sus usuarios actualizando constantemente y arreglando problemas de compatibilidad) durante ¿7 años? Pues como que la gente estaba ya quemada. Es que parecían SplinterGU en sus buenos tiempos :awesome:
Ajaja, buena referencia. Yo últimamente solo he escuchado que MS lo estaba haciendo muy bien con .NET, según me dice gente que está currando en ese stack, ese vuelco a open-source y multiplataforma le ha sentado muy bien.
Yo sigo con mi andadura en iOS. Este finde me monté una VM de Monterey (Ventura me dio muchos problemas) y me metí de lleno a trastear, tras revisar algunos tutoriales y partes de cursos. Del SO ya sacaremos conclusiones en una máquina real, no comentaré mucho.
El IDE (XCode) no está mal, en cuanto a rendimiento sin quejas objetivas por ir en una VM (lento), pero es bastante parco y realmente palidece ante otros como Visual Code Studio, que es una navaja suiza. Pese a esta simpleza, se me ha bugeado varias veces, en la última literalmente perdí el Inspector de Atributos por la cara :D. Cuando te da por pensar que es algo puntual, buscas por la red y hay 3000 casos. Lo curioso es que tal cual se fue, volvió, y así con todo.
El lenguaje (Swift) y el framework (SwiftUI) bastante bien, como cualquier lenguaje orientado a objetos relativamente moderno. Está orientado a una arquitectura MVVM, como ya venía haciendo en Kotlin, pero es bastante distinto en muchas cosas.
Estos días me he limitado a probar cosas, sin arquitecturas (he metido una pequeña capa de servicios que hace de controlador para consumir la API Rest), y he intentado replicar funcionalidad del proyecto Angular, el cual tiene una segunda parte de funcionalidades que solo hará el compi que se queda haciendo React, yo ya no voy a implementarlo, definitivamente nos pasan a iOS y ando 100% centrado en ello.
No voy del todo mal encaminado, tengo el login funcional y ya estoy usando el token para traerme las comunidades y pintarlas en otra vista. Tengo ya todo enfocado a manejar los vecinos, seguramente empiece mañana. Al no estar usando MVVM estoy pasando datos entre vistas a lo burro, sin usar más Property Wrappers que el @State y algún que otro @Binding. Probé a adaptar lo que ya tenía y a utilizar @Environment/@Published junto con @ObservedObject para no tener que pasar el mismo dato 40 veces entre las vistas, pero se me fue todo a la verga. Ya tendré tiempo de estudiarlo bien y de rehacerlo todo, me motiva más trastear a modo de Playground hasta que me llegue el equipo.
Hoy me ha llegado desde IT la confirmación del request, oficialmente han solicitado el equipo (uno para mí y otro para mi compañera) y ya hay un empleado asignado trabajando en ello, así que habemus Mac, solo queda ver si me envían un MacBook o un Mini.
Mientras estaba escribiendo esto me han confirmado: MacBook al canto. Ahora queda ver si es reciente o del año de la tos.
Seguiremos informando!
selecter25
11/05/2023, 20:18
Actualizo esto que seguimos en la brecha.
Finalmente me llegó el Macbook Pro hace como 1 semana, no es un M2 pero bueno, un i7 del 2019, para tirar me sirve.
A base de practicar he acabado dominando el uso de los Property Wrappers y con ello empecé de nuevo la app con un patrón de diseño MVVM, algo que ha sido diferencial. Creo que me he adaptado bien, me gusta el nativo y le estoy sacando mucho partido, aunque me dio algo de penilla abandonar web una vez me había hecho con Angular/React, incluso porté a React Native el proyecto. En iOS, he integrado todas las funcionalidades de la primera tanda y ahora ando con las de la segunda, todo con una navegación limpia y muy decente a nivel visual, vistas opcionales y virguerías varias.
A falta de que me integren algunos endpoints en el backend para cumplir con los requisitos funcionales que me piden, lo tengo hecho. El próximo reto es portar mi TFG de Android a iOS. Los instructores de mobile me dejan a mis anchas, me atienden dudas o movidas del backend sin problemas, pero a nivel formación han visto lo que voy consiguiendo por mi cuenta y están contentos, de hecho tampoco pueden asignarme a nadie del center, porque no tienen devs de iOS :lol2: (sí, 1800 empleados), de hecho en el proyecto que supuestamente me voy a quedar, no tienen a nadie al mando para ello.
Para más inri, mi compañera entró en pánico con Swift/SwiftUI (viene de web y lo ve muy complejo) y me he quedado solo, la han pasado a un proyectito de Vue que necesita un empujón, y el mismo día ha solicitado devolver el Mac :lol:. Ya no sé si soy valiente o idiota :D. Por un lado bien, veo que en la actualidad es un sector con oferta moderada, pero con muy pocos devs, por lo que están bastante bien cotizados.
También me cuadra más la metodología de trabajo, normalmente la parte mobile la lleva un tipo o dos, no es como web que te meten a picar componentes con 10 tipos más.
Queda un mes, seguiremos informando!
Ser el único de la empresa que sabe algo es un arma de doble filo: por un lado, te vuelves un valor muy importante para la empresa, porque les abres el campo de negocio, y pueden usar tu experiencia para formar a otros.
Por otro lado, tu permanencia en la empresa depende de que la rama en la que trabajas tenga siempre cosas por hacer, si no, tienes muchas papeletas para irte, o ser el primero en el que piensen a la hora de recortar.
Yo espero que seas de lo primero :D A mi me pasó lo segundo: una empresa orientada al testeo, que tenía un pequeño grupo de desarrollo de aplicaciones. Los desarrollos daban mucho dinero en largos periodos de tiempo, el testeo cantidades más modestas pero muchas veces en poco tiempo. Cuando hubo que recortar, el primero en caer el desarrollador, más tarde los que hacían mantenimiento de lo desarrollado.
Pero bueno, usuarios de iOS hay muchos (no tanto como Android, pero bueno), pagan bien y son muy fieles. Nosotros hemos dejado los desarrollos iOS... de momento, tenemos un cliente debatiéndose entre comprar terminales Android a todos sus trabajadores, o pagarnos a nosotros por portar una APP a iOS.
selecter25
12/05/2023, 13:19
Ser el único de la empresa que sabe algo es un arma de doble filo: por un lado, te vuelves un valor muy importante para la empresa, porque les abres el campo de negocio, y pueden usar tu experiencia para formar a otros.
Por otro lado, tu permanencia en la empresa depende de que la rama en la que trabajas tenga siempre cosas por hacer, si no, tienes muchas papeletas para irte, o ser el primero en el que piensen a la hora de recortar.
Yo espero que seas de lo primero :D A mi me pasó lo segundo: una empresa orientada al testeo, que tenía un pequeño grupo de desarrollo de aplicaciones. Los desarrollos daban mucho dinero en largos periodos de tiempo, el testeo cantidades más modestas pero muchas veces en poco tiempo. Cuando hubo que recortar, el primero en caer el desarrollador, más tarde los que hacían mantenimiento de lo desarrollado.
Pero bueno, usuarios de iOS hay muchos (no tanto como Android, pero bueno), pagan bien y son muy fieles. Nosotros hemos dejado los desarrollos iOS... de momento, tenemos un cliente debatiéndose entre comprar terminales Android a todos sus trabajadores, o pagarnos a nosotros por portar una APP a iOS.
Imagino que a alguien tendrán, pero no en este center, de hecho si miras por linkedin o Infojobs, en esta cárnica (NT...) están buscando devs de iOS como locos. También me han dicho que hay muchísima demanda y que no la cubren por eso, porque no tienen personal, de ahí que vayan a abrir este nuevo departamento de movilidad.
En un futuro quieren orientarlo todo al desarrollo híbrido, pero de momento dicen que hay muchos clientes con pasta que lo quieren todo bien separadito, con su parte nativa, porque son pijitos, fanboys y/o porque tienen mucha pasta y les da cierto status.
Lo bueno de estas consultoras tan grandes, es que (según el proyecto) las condiciones a nivel trabajo son bastante buenas, 100% remoto con horario flexible, mucho personal y bajas expectativas en juniors, con una carga laboral muy asumible y 0 crunch.
Las pegas? Definitivamente los salarios, y las revisiones. Y es por ello 100% que no tienen devs, las ofertas en iOS que ves en portales o que mandan recruiters parten de 30/35k, y aquí no cobrarías eso ni revisando en 7/8 años, los juniors parten de unos 16.5k y las revisiones de salario (anuales) rondan el 10%. Es por eso que tienen tantísima rotación, la gente aprende y se va, y la gente que se queda lo hace porque antepone comodidad a las aspiraciones económicas.
Pero bueno, aún perdiendo dinero con respecto a mi curro actual, creo que es una buena lanzadera, me tratan bien y hay que hacer currículum como sea. Otra ventaja es esa, que esto es tan grande que si por lo que sea no tienes curro en cierta tecnología, te reciclan y te meten en otro proyecto en cuestión de días.
Dan ganas de trastear un poco con iOS en vez del OS-X...
selecter25
12/05/2023, 20:19
Dan ganas de trastear un poco con iOS en vez del OS-X...
Ya que tienes experiencia, te peleas igualmente con Xcode y dominas Objective-C, yo le daría una oportunidad.
Swift es algo más durillo si empezases de 0 (que no es tu caso, seguro que en unos días lo tienes dominado), pero ofrece muchas más posibilidades y tiene algunos frameworks exclusivos más modernos que facilitan enormemente las cosas, por ejemplo venía haciendo programación reactiva/asíncrona con Combine, y ahora estoy viendo RxSwift y me está flipando.
Si miras ofertas de trabajo, ya se suele pedir Swift/SwiftUI en todas, como mucho alguna experiencia en UIkit, pero creo que hay muy pocas cosas que le falten a SwiftUI con respecto a UIkit.
Luego en mercado Apple no hace más que crecer, y sorprendentemente parece que están tratando de cuidar algo más a los desarrolladores con los "revenue" (bajaron las comisiones en 2021 del 30% al 15%, como en la Play Store). En EU les están obligando a aceptar stores de terceros a partir de iOS 17, además de obligarles también a poder meter apps mediante sideload por ejemplo vía web, o como ahora con cualquier apk que te bajes para Android, por lo que yo creo que es un buen nicho también para ir haciendo proyectillos de freelance.
bitrider
20/05/2023, 19:51
Yo estoy ya casi en los exámenes finales de 1º. Aún no sé porqué me he tenido que tragar Empresa y FOL. El profesor de Programación no me ha enseñado nada y pone unos exámenes que ni él es capaz de resolver en las 5 horas que duran... todas las prácticas con 10 y luego no hay narices con el examen, por tiempo.
Sobre todo, no me gusta nada la asignatura de Entornos de desarrollo y mira que el profesor es majísimo. Tengo la sensación que es donde han metido todo lo que les ha sobrado y no sabían donde meter. Bien las pruebas unitarias, pasamos de puntillas por la depuración, optimización y refactorización... Pero estoy harto de diagramas (de flujo, de clases, de casos de uso...) ¿De verdad se utilizan en el día a día trabajando en un grupo y con las metodologías ágiles?
De todas formas como diría alguno por aquí no sé ni para qué sigo si total, la IA va a hacer que no pueda trabajar... es broma seguiré hasta el final XD XD XD XD XD
Por cierto, estoy intrigadísimo por saber cómo te va una vez acabes las prácticas...
selecter25
20/05/2023, 20:51
Yo estoy ya casi en los exámenes finales de 1º. Aún no sé porqué me he tenido que tragar Empresa y FOL. El profesor de Programación no me ha enseñado nada y pone unos exámenes que ni él es capaz de resolver en las 5 horas que duran... todas las prácticas con 10 y luego no hay narices con el examen, por tiempo.
Sobre todo, no me gusta nada la asignatura de Entornos de desarrollo y mira que el profesor es majísimo. Tengo la sensación que es donde han metido todo lo que les ha sobrado y no sabían donde meter. Bien las pruebas unitarias, pasamos de puntillas por la depuración, optimización y refactorización... Pero estoy harto de diagramas (de flujo, de clases, de casos de uso...) ¿De verdad se utilizan en el día a día trabajando en un grupo y con las metodologías ágiles?
De todas formas como diría alguno por aquí no sé ni para qué sigo si total, la IA va a hacer que no pueda trabajar... es broma seguiré hasta el final XD XD XD XD XD
Por cierto, estoy intrigadísimo por saber cómo te va una vez acabes las prácticas...
Ánimo que ya tienes mitad del camino hecho!
De acuerdo con FOL y EIE, lo comenté con los compis becarios, podrían eliminarlas y en DAW meter por ejemplo frameworks de JS, y en DAM algo de Big Data o algún lenguaje en auge como Python.
Entornos y Sistemas Informáticos me parecieron rellenazos también, realmente de lo que aprendes te va a ir bien Bases de datos/Acceso a Datos si llegas a ver Spring Boot y las asignaturas de Programación, el resto es paja. Y si haces DAW es peor todavía, como mucho la base de JS, porque hacen php y mierdas obsoletas, si vas a alguna cárnica se mueven 99% por frameworks con TS.
En segundo también me comí Sistemas de Gestión Empresarial que es una basura, básicamente ves ERP y mínimamente algo de Docker.
A mí en las prácticas me hicieron hincapié en dominar Git desde un principio para no liarla en ningún desarrollo, te recomiendo que una vez acabes le metas caña.
A mí me quedan 2 semanas de prácticas, en teoría nos quedamos los 3 compañeros (más otros 4 que estaban haciendo la dual) en el nuevo grupo de movilidad, asignados al proyecto de Zurich, el problema es que al ser nuevo proyecto, está un poco en pañales y no sabemos si arrancará en Junio o Septiembre, por lo que andamos un poco moscas.
A malas, no sé si pegarme unas vacaciones en las que aprovecharía para formarme en iOS hasta Septiembre si no sale directamente, si volver a mi curro temporalmente o si tirar de linkedin y probar suerte en otro sitio, dependerán de lo que me digan en un par de semanas.
Pues mira, en el entorno laboral no se usarán los diagramas de ningún tipo, porque tampoco se estila hacer documentación... bueno, sí se suele estilar, pero no dan tiempo para ello.
El caso es que no es un "relleno", es algo que hay que saber, porque aunque no lo hagas para la empresa, conviene hacerlo para ti, para cuando tengas que retomar el código 2 meses después para solucionar un problema, o hacer una ampliación, y ya no te acuerdes porque el proyecto tiene 1000000 líneas de código, y has estado en otros dos distintos entre medias :D
Para las APPs móviles que hago, también me conviene tener capturas actualizadas de cada página que hago, para refrescar la memoria de cómo funciona cada una, porque después de 5 versiones empiezas a confundirlas.
Luego, el GIT es BÁSICO. Yo todavía me peleo con él, y cuanto más lo simplifican en el Visual Studio, peor (he llegado a perder código porque alguien corrigió un ";" días después de haber cambiado yo toda la clase, y haber hecho el commit a la vez).
Y lo de depuración de errores... a menos que tengas una habilidad para ello, y muy buena memoria, es algo que se debería enseñar desde primero. La de tiempo que llegué a perder con el depurador porque no me enseñaron técnicas para mejorar los tiempos de testeo.
Ya sé que a todos nos gusta picar código, y que se pierde muchísimo tiempo en documentar y demás... pero a la larga es vital tener esos conocimientos, y si no es por la empresa, hacerlo para ti, aunque sea en papel. Mis compañeros han visto lo útiles que son las notas que tengo en mis carpetas, y de vez en cuando tengo que mandarles una foto o tengo que pasarlo al sistema de documentación que tenemos en la nube.
selecter25
22/05/2023, 19:35
Pues mira, en el entorno laboral no se usarán los diagramas de ningún tipo, porque tampoco se estila hacer documentación... bueno, sí se suele estilar, pero no dan tiempo para ello.
El caso es que no es un "relleno", es algo que hay que saber, porque aunque no lo hagas para la empresa, conviene hacerlo para ti, para cuando tengas que retomar el código 2 meses después para solucionar un problema, o hacer una ampliación, y ya no te acuerdes porque el proyecto tiene 1000000 líneas de código, y has estado en otros dos distintos entre medias :D
Para las APPs móviles que hago, también me conviene tener capturas actualizadas de cada página que hago, para refrescar la memoria de cómo funciona cada una, porque después de 5 versiones empiezas a confundirlas.
Luego, el GIT es BÁSICO. Yo todavía me peleo con él, y cuanto más lo simplifican en el Visual Studio, peor (he llegado a perder código porque alguien corrigió un ";" días después de haber cambiado yo toda la clase, y haber hecho el commit a la vez).
Y lo de depuración de errores... a menos que tengas una habilidad para ello, y muy buena memoria, es algo que se debería enseñar desde primero. La de tiempo que llegué a perder con el depurador porque no me enseñaron técnicas para mejorar los tiempos de testeo.
Ya sé que a todos nos gusta picar código, y que se pierde muchísimo tiempo en documentar y demás... pero a la larga es vital tener esos conocimientos, y si no es por la empresa, hacerlo para ti, aunque sea en papel. Mis compañeros han visto lo útiles que son las notas que tengo en mis carpetas, y de vez en cuando tengo que mandarles una foto o tengo que pasarlo al sistema de documentación que tenemos en la nube.
El problema no es precisamente ese tipo de contenido, hay contenido mucho más relleno que ese, hay asignaturas que en una FP técnológica en 2023 son de memorizar, como mi madre hacía con las preposiciones, seguimos con un modelo de educación que se limita a memorizar quién era Von Neumann y en qué año nació, en qué año se pasó de las válvulas de vacío a los transistores o la historia y desarrollo de los sistemas distribuidos, todo en ello en cientos de páginas de teoría, para luego escupirlo en un examen y olvidarte a la semana. Toda esa basura es irrelevante a la hora de picar, y si a alguien le interesa, lo tiene todo a una búsqueda en Google.
En cuanto a documentación, hay herramientas e IA que te documentan todo automáticamente o te explican de cabo a rabo qué hace cada cosa. Eso no quita que cada uno sea responsable y haga lo suyo, yo soy de documentarlo todo, y de guardar hasta vídeos en donde lo comento todo a nivel de unidades funcionales, pero hoy en día son tareas que puedes casi automatizar. En el FP, como solo ves JAVA, me enseñan el tostonazo de Javadoc que no vas a usar nunca, y listo.
Los diagramas, te van a mostrar 5000 diagramas (flujo, UML, clases, casos de uso) con 5000 formalidades que vas a olvidar, y de los cuales vas a usar 2 o 3, que también se autogeneran en la mayoría de IDEs. En curro real (hablando de web), directamente me pasan desde diseño uno muy simple con los componentes, vistas y funcionalidades, y listo.
Testing, como solo ves JAVA, tiras de unitarios muy simples en JUnit y ya, en cuanto caigas en otro lado, te sirve 0, aquí me tocó aprender Selenium y Jenkins.
Y así con todo, todo el temario se siente desfasado, la mayoría de prácticas que haces son antiguas, con herramientas en desuso o deprecadas, hasta el punto en que es imposible hacerlas si no las replicas en todo su "esplendor", usando librerías deprecadas, con fallos de vulnerabilidad notorios, y con el dolor de saber que existen alternativas "modernas", más ágiles o sencillas. Recuerdo algunas prácticas de Acceso a Datos, en las que solo configurar el proyecto Maven y que todas las librerías funcionasen para poder hacer la práctica, llevaba 10 veces más que la práctica en sí.
Para más inri, muchas de estas asignaturas desconocen el contenido del resto, y se solapan, viendo muchas cosas 2 y 3 veces en el mismo curso en distintas asignaturas. Si ya vienes de hacer SMR (el grado medio), te quieres suicidar, puesto que la asignatura Sistemas Informáticos es un resumen (literal) de todo el grado medio, y no convalida. Por suerte FOL y EIE sí, otro tostón de memorizar contratos, riesgos laborales, proceso de búsqueda de trabajo, discriminación de género.... Todo eso con más de 20 años ya cotizados, se te hace un poco bola, al padre le van a enseñar a hacer hijos.
Pues a ver, si es para un curso específico o una FP, sí que es cierto que muchas de esas cosas sobran. Pero si es una carrera o un curso genérico, todo eso es lo normal.
Empezando por un primer año/asignatura que es un repaso de lo que se ha visto anteriormente, porque nuestro sistema educativo es tan fragmentado y variado que no todo el mundo se ha visto todo el contenido del Grado Medio (y te aseguro que la mitad de los que entran contigo, se olvidaron de lo que dieron tan pronto terminó el examen). Ese curso/asignatura es necesario para que todos empiecen al mismo nivel.
Luego me dices de las lecciones de historia... Wikipedia la ha tenido que rellenar alguien, para empezar. Y sí, las válvulas de vacío están en desuso y al informático les da igual y... No sé por qué os lo enseñan a vosotros. A mi, todavía, porque aunque usamos transistores de silicio. conviene saber de dónde viene la electrónica actual... y nunca sabes cuándo un IEM nos va a mandar a la Edad Media (y oye, un sistema con válvulas de vacío sobrevive a un holocausto nuclear, no es descabellado hacer armas con ellas :D).
Pero bueno, quejarse de las lecciones de Historia es como quejarse de aprender mates en el colegio porque de mayor se va a ser "influencer" :D
Luego, seguro que hay mucho que dices "pero si yo voy a usar esto, y no esto". Vale, céntrate en eso, pero no descartes el resto de información. Puede que uses un sistema de diagramas concreto, y que esté automatizado (cosa que me gustaría ver, por cierto), pero todo el mundo tiende a compartimentar la información, y yo eso lo veo un error. No han sido pocas las veces que he aplicado conocimientos de un campo a otro que no tenía nada que ver, porque me daban ventajas que no tenía ese sistema de diagramas, o ese lenguaje en concreto, y facilitaba mucho el pensamiento "fuera de la caja".
No digo que el sistema de enseñanza no pueda ser más eficiente, específicamente en cursos concretos, pero muchas de tus quejas me las han dicho muchos compañeros de clase, en todos los niveles (colegio, instituto, universidad, máster, FPO...) y casi siempre gente que sacaba aprobados raspados, que a lo mejor no ven el conjunto (y yo tampoco, que para eso estaba aprendiendo), y es probable que tengas razón, que mucho de lo que veas no lo uses nunca... hasta que lo necesites, o decidas que has tenido suficiente y que quieres cambiar.
No sabes lo bien que me ha venido haber visto XPath cuando en Java trabajaba con documentos Office, o usar VB6, cuando ahora me tengo que enfrentar a HTML y JS, por no hablar de ciertos juegos, que me han servido de base para optimizar la construcción de SQLs (mis compañeros tendían a escribirlas enteras, y a repetirlas según los filtros, subqueries y demás que necesitaban), vistas en Xamarin o el HTML en las Razor Pages.
Ya sobre código obsoleto e inseguro no puedo más que darte la razón. No hay excusa, salvo la flojera de los profesores por mantener el temario al día, o porque al iluminado del sillón no le da la gana de emplear recursos (dinero) en ello. Mientras no caigan las cifras de aprobados/ganancias, les da igual.
selecter25
23/05/2023, 16:05
No me quejo de la historia, pero me cuadra más en una asignatura del Grado de Historia que en esto. Si algo caracteriza a los ciclos formativos, es que el contenido es breve (2 años), conciso, práctico y muy ligado a la experiencia profesional que se va a desempeñar.
Esto es como hacer uno de mecánica y que te expliquen que la rueda se inventó en el Obleid en Mesopotamia, y que en vez de reparar coches actuales, te pongan a hacer prácticas trasteando con el 4L de tu abuelo. Que sí, que también tienen 4 ruedas y un motor, pero cuando acabas y llegas al mundo laboral, te toca aprender todo de nuevo.
Y si desde un primer momento, los propios alumnos son capaces de identificar que el temario es "inapropiado" y obsoleto, dudo mucho que el sistema educativo o los profesores no tengan constancia de ello. Pero claro, renovar significa renovarse, y es muy cómodo darle año tras año al "reset" y empezar de nuevo algo que tienes mascadísimo. A poco que veas cómo está el panorama en desarrollo, o a la que abras linkedin/infojobs, te das cuenta que de todo lo que estás estudiando, te va a servir un 15/20%. Y para muestra un botón, en mi hornada somos más de 200 becarios aprendiendo de 0 otras tecnologías que nada tienen que ver con lo estudiado.
Luego lo que digo del Grado Medio de SMR, yo lo hice en su día y pese a ser un ciclo formativo de rama informática, no tiene vinculación alguna con el superior, con el medio te titulas como Técnico en Sistemas Microinformáticos y Redes, y DAM/DAW es desarrollo. Que sea útil en ASIR, puede, pero aquí ya te digo que poco o nada.
Quieres meterlo resumido como asignatura y llamarlo Sistemas Informáticos? Ok, pero estás quitando horas a otra asignatura que podría ser más útil de cara al desarrollo. De verdad quieres meterlo? OK, pero convalídame la asignatura si tengo el medio, como se hace con FOL o EIE.
Como le metas algo de ingeniería a alguien del Grado de Historia, su cerebro se cortocircuita :D Te lo digo porque conozco unos cuantos.
Lo siento, pero por mucho que digas, la evolución de las tecnologías debe estudiarse en las carreras técnicas, porque sus alumnos y profesores son los más capacitados para entenderlo en toda su extensión. Intenta explicarle a alguien que se dedica a memorizar fechas y hechos qué es un código ensamblador y por qué es más eficiente que HTML.
Aparte de eso, sí, estoy de acuerdo en que los ciclos formativos y los cursos deben ser más específicos, y sobre todo, estar actualizados... pero si a los programadores de hoy les cuesta estar al día, no te digo un profesor que da clases por el cheque, quemado ya de aguantar niñatos a los que hay que explicarle que 2+2=4, y que cualquier cambio del programa debe enviárselo al jefe de estudios, para que se lo diga al director, y que reúna a la Junta Educativa algún mes de estos para validarlo.
Pero oye, en la FP yo tenía Historia, tenía Lengua, tenía Física y Química... bastante más suaves que en Bachillerato (aunque visto lo visto en la Universidad, tengo mis dudas), pero aparte tenía laboratorio y tenía tecnología, y todo con un año más. Pude seguir con mi formación como persona, al tiempo que adquiría conocimientos para trabajar en electrónica, y para pasarme la mitad del primer curso de Teleco durmiendo la siesta :D
Y no te creas que la Uni era muy distinto a lo que cuentas: nosotros programábamos en C (no en C++, aunque teníamos una asignatura en que se explicaban las clases), programábamos en ASM cuando ya nadie lo hacía, usábamos Matlab cuando sólo el 5% terminaría en un trabajo que lo usara, la física cuántica (resumida) de los diodos LED... De todo lo que estudié, no estoy aprovechando casi nada, pero cada vez que tengo que cambiar de lenguaje, me adapto rápido porque he visto algo que se le parece. Pero claro, la Uni era para eso, para prepararnos para ser capaces de aprender por nuestra cuenta, no para acceder a un puesto de trabajo, como el curso que has hecho tú.
Yo siempre he sido defensor de saber de todo un poco, por eso no me importa que el temario se desvíe si tiene que ver con lo que se está dando, pero entiendo tu punto de vista.
Ahora me viene a la cabeza un curso de FPO que hice de Analista Programador. Se suponía que los que entraban tenían conocimientos básicos de programación (el curso era de analista programador, no de ¿ingeniero de programación?, que es un eslabón más abajo), y se hacía entrevista previa y todo para entrar... y tuvimos que empezar a programar desde cero porque había gente que no había tocado un compilador en su vida. Por eso entiendo tu frustración, pero como digo, no puedo estar de acuerdo... del todo.
selecter25
01/06/2023, 13:41
Bueno pamicos, mi periplo de becario se acerca a su fin, el próximo martes acabo las prácticas.
Hace un par de días contacté con el CSL para saber cómo iba el asunto de cara a una posible contratación, más que nada por avisar en el curro ya que estoy de excedencia. En Junio parece que se para toda la contratación y se retoma en Septiembre, cuando vuelven de vacaciones y arrancan proyectos nuevos, así que razón de más para preguntar.
A los 10min me llama y me dice que no se me ocurra mirar otra cosa, que están muy contentos y que pese a que tiene la contratación muy limitada en Junio, no se va a arriesgar a que me pire a otro sitio, por lo que me busca algo donde sea estos días y me intenta lanzar para el día que acabe el curso.
La verdad es que tanta diligencia me asustaba, desde un principio han sido todo buenas palabras y la verdad es que han respondido siempre bastante bien, y eso que yo tenía una imagen preconcebida bastante mala (yo y todo el mundo) de esta empresa.
Pues bien, esta misma mañana me ha llamado el CSL, me ha hecho hueco en un proyecto grande de La Caixa en la sección Android, justo lo que quería. Mañana me presentan a los compañeros y el mismo día que acabe la presentación del TFG me lanzan contratación, me ha dejado con el culo torcido, este tipo tiene buena mano y palabra.
Me ha ofrecido quedarme el Mac por si cambiamos a iOS alguna vez, aunque ya me ha dicho que en año y medio lo vamos a pasar todo a híbrido, que me vaya preparando.
Así que aquí termina mi camino como ultra noob que empezó un ciclo formativo por hobby, y que abrió un hilo porque no sabía iterar un array, y comienza uno nuevo como programador Android, ultra noob también.
bitrider
01/06/2023, 15:00
Enhorabuena!
Pues enhorabuena por tu ascenso :D
En cierta medida, puedo entender las prisas por contratarte. No puedo dar detalles (o más bien, no debería :D), pero si una empresa encuentra a alguien competente, que tiene cierta formación, y que pueden moldear a lo que necesitan (y que encima, cobra poco), van a querer quedárselo. Muchos podréis contar historias de gente que no hacía su trabajo, pero claro, cuando una empresa paga muy por debajo de lo que el trabajador merece, lo normal es que los buenos se vayan donde pagan más, y la "morralla" se quede donde pueda.
selecter25
10/08/2023, 23:44
Actualizo la novela tras casi 2 meses en la empresa. Voy a intentar resumir, porque podría pegarme un tochazo quijotesco xD.
Empresa - Todo estrictamente organizado y jerarquizado, tropecientas plataformas para hacer chorricientasmil cosas, 400 grupos de Teams, mails corporativos y de cliente a cada 40 segundos. En un principio demasiadas tareas fuera de backlog que te hacen perder muuucho tiempo al día, pero es lo que hay. Pago puntual, aunque escaso comparado con otras empresas del sector. Revisiones semestrales. Curro de lunes a viernes de 7am a 15pm full remote y elijo mis vacaciones (me pillo hoy una semana, de hecho).
Proyecto - Un poco caótico pero me va molando, estamos en cesión a cliente desde varias oficinas de toda España, ellos ponen Scrum Master y los PO entre otras cosas. El proyecto (banca) es gigantesco y solo somos parte de un módulo de él. Trabajamos en SCRUM con iOS/Web/REST y compartimos entornos, hay muchos servicios y APIs externos, por lo que todo falla muy a menudo. Reuniones diarias de todo tipo (negocio, internas, internas globales, cursos...) que se llevan la mayor parte del tiempo efectivo del día y tenemos sprints de 2 semanas. Al principio, con 0 contexto del proyecto, es 1 mes en el que te asignas tarea y no aciertas nada, porque todo lo que abordes es nuevo, hay demasiadas cosas que hacer, demasiadas plataformas, VPNs y procedimientos sectarios para todo. A día de hoy se puede decir que estoy medio adaptado a ello.
Compañeros - La mejor parte, me ha tocado un grupo de compis muy bueno, todos muy serviciales y amigables. Me ha sorprendido mucho que se alejan del estereotipo de programador, la mayoría son deportistas y 0 frikis, cosa que por otra parte me frustra un poco, porque no puedo compartir mi vena friki con nadie. Mi Project Leader es un tipo súper capaz y gestiona increíblemente bien el grupo, siempre hay armonía y parece que siempre tiene una solución apropiada para todo. A veces me choca mucho el "correctismo" que hay en comparación con mis curros anteriores, sobre todo cuando surgen problemas, jamás se señala a nadie y todo el grupo asume los errores en conjunto. Si pegas alguna gambada, jamás se te expone en público, la "reprimenda" te la llevas por privado y siempre de forma constructiva. Lo mismo de cara a cliente. A veces esto genera situaciones un tanto cínicas, pero me he acostumbrado también, es como ser empleado de Disneyland, la gente siempre tiene que ver tu cara buena.
No tenemos un control horario exhaustivo, se asume que somos responsables y adultos, y salvo que alguien te requiera para algo urgente, no importa si sales a respirar, a recoger un paquete a Correos o a pasar la ITV (aunque en estos dos últimos casos, se suele avisar).
En resumen estoy contento con el curro, hay buen ambiente laboral, el horario es bueno, el proyecto es exigente y los entornos son una basura, pero estoy aprendiendo muchas cosas y se valora mucho el esfuerzo, mis compis de Android me lo hacen saber, y hoy antes de irme me llamó el PL para decirme que estaba muy contento con mi adaptación y mi desempeño, cosa que no sucede en todos los curros y que reconforta bastante. Qué le falta para ser un curro redondo? unos 8k más al año :D.
josepzin
13/08/2023, 01:24
¡Felicidades! aunque suena todo muy complicado :D
-----Actualizado-----
Me ha sorprendido mucho que se alejan del estereotipo de programador, la mayoría son deportistas y 0 frikis, cosa que por otra parte me frustra un poco, porque no puedo compartir mi vena friki con nadie.
Aqui tengo mi libro...
Cuando terminé el secundario, donde todos mis compañeros era totalmente distintos a mi (ni ordenadores, ni videojuegos, ni comics, ni libros, ni ciencia ficción ni nada) me fui con gran ilusión a la universidad a estudiar informática, pensando justamente que a quienes les gustaran los ordenadores seguro les gustaría algo de todo eso. Y grande fue mi decepción porque la gran mayoría ni siquiera jugaban con el ordenador, que es lo mínimo y básico, de ahí en adelante todo lo demás tampoco. Pero por suerte alguno había y ahí conocí a uno de ellos que sí era friki y sigue siendo uno de mis mejores amigos hasta el día de hoy.
Me ha sorprendido mucho que se alejan del estereotipo de programador, la mayoría son deportistas y 0 frikis, cosa que por otra parte me frustra un poco, porque no puedo compartir mi vena friki con nadie.
En mi departamento, que es de cyberseguridad, el más friki soy yo si hablamos de libros y referencias culturales de fantasía o cine. No soy yo si hablamos de electrónica y máquinas. Definitivamente no soy yo si hablamos de deportes de motor. Nadie sabe nada de fútbol. Creo que la Quest la tenemos casi todos. Y la tercera parte del departamento somos veganos.
Mi Project Leader es un tipo súper capaz y gestiona increíblemente bien el grupo, siempre hay armonía y parece que siempre tiene una solución apropiada para todo. A veces me choca mucho el "correctismo" que hay en comparación con mis curros anteriores, sobre todo cuando surgen problemas, jamás se señala a nadie y todo el grupo asume los errores en conjunto. Si pegas alguna gambada, jamás se te expone en público, la "reprimenda" te la llevas por privado y siempre de forma constructiva. Lo mismo de cara a cliente. A veces esto genera situaciones un tanto cínicas, pero me he acostumbrado también, es como ser empleado de Disneyland, la gente siempre tiene que ver tu cara buena.
Todo esto es absolutamente vital en un equipo. Las culpas tienen que ser compartidas o nadie arriesgará a hacer nada nuevo. El grupo tiene que verse desde fuera como un equipo, porque en realidad ya lo ven así: el que hace algo bien o mal para el jefe es "el departamento", no fulano. En mi caso además es un entorno internacional así que es totalmente imprescindible ser amable. Las bromas y manierismos culturales no se entienden cuando cruzas una frontera y menos si cruzas un continente, así que mejor quédate en el lado seguro y sé hipercorrecto y amable.
selecter25
13/08/2023, 15:07
¡Felicidades! aunque suena todo muy complicado :D
-----Actualizado-----
Aqui tengo mi libro...
Cuando terminé el secundario, donde todos mis compañeros era totalmente distintos a mi (ni ordenadores, ni videojuegos, ni comics, ni libros, ni ciencia ficción ni nada) me fui con gran ilusión a la universidad a estudiar informática, pensando justamente que a quienes les gustaran los ordenadores seguro les gustaría algo de todo eso. Y grande fue mi decepción porque la gran mayoría ni siquiera jugaban con el ordenador, que es lo mínimo y básico, de ahí en adelante todo lo demás tampoco. Pero por suerte alguno había y ahí conocí a uno de ellos que sí era friki y sigue siendo uno de mis mejores amigos hasta el día de hoy.
En comparación a otros compis de prácticas que entraron a la vez, creo que me ha tocado uno de los proyectos más chungos que tienen. El principio fue un horror, pero una vez me voy adaptando, creo que de cara a hacer currículum y a curtirme en campos de batalla, me va a venir genial.
Tal cual, y menos mal que a mí me gusta el deporte y el gym, pero eso ya lo comparto con mis amigos cercanos, necesitaba salir del armario otaku :D.
Todo esto es absolutamente vital en un equipo. Las culpas tienen que ser compartidas o nadie arriesgará a hacer nada nuevo. El grupo tiene que verse desde fuera como un equipo, porque en realidad ya lo ven así: el que hace algo bien o mal para el jefe es "el departamento", no fulano. En mi caso además es un entorno internacional así que es totalmente imprescindible ser amable. Las bromas y manierismos culturales no se entienden cuando cruzas una frontera y menos si cruzas un continente, así que mejor quédate en el lado seguro y sé hipercorrecto y amable.
Así es, tal cual dices. Creo que es la parte de la que más he aprendido en estos dos meses, siempre me he visto en curros con ambientes semi-tóxicos en los que la gente escurre el bulto y culpa a otro para salvarse el culo.
Aquí ese sentimiento de grupo te hace ser más transparente y libre de reportar "liadas" o errores detectados, sean o no tuyos, porque sabes que se va a buscar la solución y no al culpable. De cara a cliente sí que toca ser inteligente y tener mucha mano izquierda, pero el PL que nos ha tocado es Jesucristo y los capotea como Manolete. Encima es el que más horas echa y tiene un perfil técnico muy bueno, se desenvuelve bien en todo el jodío, lleva aquí unos meses y se conoce absolutamente todo al dedillo.
Pues mira, eso que ganas.
Conozco varios casos de gente que ha estudiado la carrera de informática, y suelen pecar de soberbia: no te dejan tocarles el código, las cosas se hacen como ellos digan, si algo falla es culpa de otro o de que las especificaciones no eran correctas (y reconozco algunos de estos defectos en mi). Bueno, más que de soberbia, de no saber trabajar en equipo.
Si la persona es de otra especialidad, suele ser más fácil trabajar con ella, y puedes hablar, aprender, enseñarle...
Lo de que no tengan vena friki sí que es raro: desconfía de ellos :lol:
Y sí, lo de gestionar los proyectos es un peñazo. Tener que interrumpir el trabajo por una reunión, una llamada o un correo urgente, y luego tirarte varios minutos retomando el hilo de lo que hacías... pero así es este trabajo. De hecho, lo de usar 40 programas seguro que es porque eso lo fueron gestionando distintos informáticos :D
selecter25
22/11/2023, 16:53
Bueno pamicos, subo esto que llega mi primera evaluación semestral y tengo spoilers con buenas noticias.
Por hacer un resumen rápido, hace poco fusionaron 2 labs del proyecto en donde estoy porque lo están migrando todo a Openfront (React), así que salieron de él muchos compis, entre ellos mi PL. Pues bien, como ya dije anteriormente, mi antiguo PL es la *****, es un tipo al que realmente admiro.
El caso es que hoy me ha llegado un correo suyo, y al abrirlo, veo que estoy en copia. Lo leo y... Es mi evaluación!!!!!!!!! Pues el ******, aun saliendo del lab y del proyecto, se ha molestado en redactarla y ha pedido intervernir en ella. Pensé que me habría metido en copia por error, pero no, a los 10 segundos me ha hablado por Teams y me ha explicado que quería ser transparente conmigo, y que no quiere que desde Centers luego me digan cosas que no son.
Hemos estado hablando un rato y le he comentado que estoy contento en el curro, pero que en lo económico, la empresa cojea bastante, a lo que me ha dicho que está de acuerdo, que en Centers pagan como el culo, pero que eso tenía solución, irme a Solutions BCN, que tengo buen perfil para Solutions y que si alguna vez me planteaba salir por un factor económico de la empresa, que hablase con él y que movía hilos. Me ha dejado con el culo roto, no es lo habitual para un Junior que lleva 6 meses en la empresa como yo.
Al rato, le he hecho una coña a mi compi de Android (que también me evalua), dos escopetas tengo. Se ha hecho el loco pero le he comentado el tema del PL, y justo en ese momento el responsable de Centros de Alicante comentó por el grupo que le estaban llegando muy buenos feedback míos, por lo que el otro ha tenido que confesar que hoy era el día de enviar mis informes de cara a la evaluación, pero que no me quería hacer spoilers.
Lo mejor ha sido cuando el responsable ha vuelto a escribir (estaba hablando con mi compi por privado), se ha equivocado de conversación y ha hecho leak de que me hacían CD del tirón. Mi compañero y yo nos hemos descojonado vivos, y a los 3 segundos se ha dado cuenta y ha borrado, pero ya lo había leído medio grupo :D.
Así que si todo sale bien y se oficializa, en 6 meses he pasado de Centers Junior a Centers Developer.
Para el que no haya tenido contacto con estas cárnicas, normalmente en la semestral se hace un salto (o ninguno) de categoría, y si lo has hecho extremadamente bien, te meten doble salto. Que me hayan subido a CD implica que he metido cuatro saltos!!!!!
No es que sea ya Gennady Korotkevich, pero estoy bastante contento con la progresión, empecé en esto de coña y al final está llegando a buen puerto.
josepzin
22/11/2023, 17:55
En dos meses mas ya eres CEO de alguna de esas empresas :P
Felicidades, en serio.
Yo te doy también la enhorabuena, y te transmito mi más sincera envidia por tu meteórico ascenso :D
Bueno, sólo si te mantienen en la parte de desarrollo, porque si te han metido en un puesto de dirección, más que la enhorabuena, te tendría que dar el pésame :D Pero si ya has salido de la "sección cárnica" a la sección de "trabajo normal", es un alivio.
Sólo espero que no tengas esa clase de jefes que piensan que siempre puedes rendir más, pues si lo das todo al principio, al mes siguiente te piden que hagas más "ahora que ya tienes más experiencia", porque son esa clase de gente la que te quema. Si no es así, pues mejor, disfruta de poder escribir código al ritmo que tú marques y no al que te impongan :P
selecter25
23/11/2023, 22:19
En dos meses mas ya eres CEO de alguna de esas empresas :P
Felicidades, en serio.
Gracias pamico!! Si eso supone mudarme a Japón a suceder a Yo Honma, bienvenido sea. Eso sí, en dos meses más cierran cuando vean que me paso todo el día con maquinitas y maids :D.
Yo te doy también la enhorabuena, y te transmito mi más sincera envidia por tu meteórico ascenso :D
Bueno, sólo si te mantienen en la parte de desarrollo, porque si te han metido en un puesto de dirección, más que la enhorabuena, te tendría que dar el pésame :D Pero si ya has salido de la "sección cárnica" a la sección de "trabajo normal", es un alivio.
Sólo espero que no tengas esa clase de jefes que piensan que siempre puedes rendir más, pues si lo das todo al principio, al mes siguiente te piden que hagas más "ahora que ya tienes más experiencia", porque son esa clase de gente la que te quema. Si no es así, pues mejor, disfruta de poder escribir código al ritmo que tú marques y no al que te impongan :P
Pues aquí en Centers las "carreras" están bastante bien definidas, hay unas ramas orientadas a desarrollo, y otras a liderazgo de equipos, por lo que llegados a un punto, puedes optar por una cosa u otra. En niveles superiores, sí o sí debes asumir labores de gestión de equipos si quieres cobrar decentemente, pero estoy lejos de eso todavía, y estoy mucho más cómodo en el barro y picando código.
La otra opción es irme a Solutions, que tienen un perfil más cercano a cliente y son en su mayoría analistas o tech leaders. Estos generalmente hacen de puente entre Centers y cliente, en España están la mayoría en Barcelona y sus bandas salariales son algo mejores. La putada es que aquí sí que desarrollas bastante menos (por no decir nada).
En cuanto a jefes y expectativas, tengo que decir que gran parte de mi progresión se la debo a mis compañeros (el primer mentor que me pusieron y a mi primer PL), le he metido muchos huevos y esfuerzo, pero a nivel ayuda y motivación he tenido la suerte de caer en un grupo humano muy bueno.
Y sí, me "jode" decirlo porque quizás para todos (me incluyo) es la peor consultora de España, pero en el aspecto laboral estoy muy contento, me siento reconocido, la gente con la que curro a diario es la *****, estoy full remote de 7 a 15 desde el minuto 1 (aunque puedo ir a oficina cuando quiera), elijo mis vacaciones a dedo... El único problema es la pasta (cobraba bastante más en mi anterior curro), pero vamos recortando poco a poco.
Gracias pamico!! Si eso supone mudarme a Japón a suceder a Yo Honma, bienvenido sea. Eso sí, en dos meses más cierran cuando vean que me paso todo el día con pachinkos y maids :D.
Fixed :D
Y ten cuidado con los maids café, que la mayoría de las trabajadoras (por lo que sé) rondan los 16 años, a ver si te tenemos que tachar de pedo :D
Pues aquí en Centers las "carreras" están bastante bien definidas, hay unas ramas orientadas a desarrollo, y otras a liderazgo de equipos, por lo que llegados a un punto, puedes optar por una cosa u otra. En niveles superiores, sí o sí debes asumir labores de gestión de equipos si quieres cobrar decentemente, pero estoy lejos de eso todavía, y estoy mucho más cómodo en el barro y picando código.
Si te pasa como a mí, es mejor quedarse picando código, porque en cuanto te toca llevar labores de gestión, centras más tu atención en eso que en programar: asignar tareas, ver que se cumplen tiempos, estar encima de los perezosos... es decir, de todos, porque nadie va a cumplir los plazos. No vas a tener tiempo de concentrarte en tu tarea :D
La otra opción es irme a Solutions, que tienen un perfil más cercano a cliente y son en su mayoría analistas o tech leaders. Estos generalmente hacen de puente entre Centers y cliente, en España están la mayoría en Barcelona y sus bandas salariales son algo mejores. La putada es que aquí sí que desarrollas bastante menos (por no decir nada).
Por Dios, no te metas de cara al público. Los clientes no sabe lo que quieren, y cuando no les das lo que necesitan, te empiezan a poner pegas, a inundarte con incidencias, y encima se cabrean: que si esto no es lo que yo quería, que eso no es lo que yo he escrito, que esto está dentro del presupuesto, que esto se da por entendido...
Y sí, me "jode" decirlo porque quizás para todos (me incluyo) es la peor consultora de España, pero en el aspecto laboral estoy muy contento, me siento reconocido, la gente con la que curro a diario es la *****, estoy full remote de 7 a 15 desde el minuto 1 (aunque puedo ir a oficina cuando quiera), elijo mis vacaciones a dedo... El único problema es la pasta (cobraba bastante más en mi anterior curro), pero vamos recortando poco a poco.
Pues lo normal de las consultorías: cuanto peor es, más libertad tienes (al menos, tu tienes horario sólo de mañana), y la gente, si no están bajo el látigo, suele ser muy buena gente, porque aún no se han contaminado del mal rollo... aunque te pueden llegar a arrastrar por el mal camino (en uno de mis últimos trabajos, tenía que ir arreando a la gente porque el desayuno estaba empezando a pasar de los 20m a 1h).
Y sí, los sueldos son una m*****. 40h semanales por el SMI (a veces incluso menos). Hasta que no pasas a senior, no tienes algo decente.
selecter25
24/11/2023, 21:05
Lo de maquinitas iba más bien en plan referencia outsider o como lo dice mi madre :D.
Bueno, cuando digo a tratar con cliente, en estos casos son proyectos titánicos y me refiero a la sección que tiene cliente destinada al lab, que son PO, CRO, TO, Scrum Master... Aquí con cliente final como tal no voy a hablar nunca, ten en cuenta que son proyectos de banca muy grandes (BBVA, Sabadell, Caixa) con decenas de labs, millares de empleados, campañas estratosféricas y evolutivos pudrimillonarios.
En Centers ponemos los deditos, somos picateclas de cualquier parte de España. Solutions vendría a ser una sección intermedia entre nosotros y negocio (PO, CRO, Scrum Master...), normalmente dedicada a tareas de tech lead y/o análisis, con sedes en las ciudades importantes de clientes tochos. Para que te hagas una idea, en el Centers de Alicante (que es de los pequeños) somos unos 2000 empleados. Aparte están los de oficina que son otros tantos. Aquí tenemos Solutions del banco Sabadell, entre otros.
La realidad cuando curras en Scrum Agile es distinta, al final yo tengo contacto directo y diario con negocio en dailies y chorricientas reuniones, así que ya asumo muchas labores que están fuera de las que debería asumir, pero eso aquí está normalizado. Luego es cierto que en Agile no ocurre lo que comentas, aquí en un sprint tenemos "tareas" (US) que previamente pasan por un refinamiento táctico, estratégico y finalmente se les da una estimación (en todas estas reuniones participo). Una vez en el sprint, la tarea tiene que cumplir una serie de movidas (Definition of Ready/done) muy estricta, y generalmente no puede sufrir cambios de alcance, o nos fumaríamos el Agile. Lo mismo pasa con los defectos o los de regresión. Aquí te tiras un pedo y queda registrado.
A todo esto hay que sumar 300000000 de cosas fuera de backlog que también hacemos, hay 40000 protocolos para cada cosa, evidenciados para QA, incurridos, time labours, integraciones, IOPs, regresiones, 2000000 plataformas a las que acceder, 40 VPN que usar... Ahora hago vista atrás y no sé cómo demonios he interiorizado todo en tan poco tiempo.
Hoy se ha oficializado mi ascenso, y el responsable me ha comentado que en 8 años que lleva en la empresa, es el primer salto cuádruple que ve, de hecho normalmente solo se contempla el salto doble como máximo, y me ha dicho que no han podido seguir protocolos estándar para hacerlo :lol:, así que estoy realmente contento. Tampoco es que me vaya a arreglar mucho (sigo perdiendo pasta con respecto a mi anterior curro), pero la verdad es que soy bastante más feliz en el curro que antes.
bitrider
24/11/2023, 22:15
Enhorabuena!
Sin ánimo de ser indiscreto, cuánto es el salario de junior bruto anual?
Me estoy planteando si hacer las prácticas o convalidarlas. De hacerlas me gustaría meter cabeza en NTT Data (Murcia) peeeero no me gustaría palmar el dinero de mantenerme durante las prácticas y que luego el salario no me permitiese ni vivir... vamos que tengo la cabeza hecha un lío. (Luego está mi jefe que me quiere mantener con subida de categoría y posible subida de sueldo pero donde voy muy quemado)
selecter25
25/11/2023, 00:40
Enhorabuena!
Sin ánimo de ser indiscreto, cuánto es el salario de junior bruto anual?
Me estoy planteando si hacer las prácticas o convalidarlas. De hacerlas me gustaría meter cabeza en NTT Data (Murcia) peeeero no me gustaría palmar el dinero de mantenerme durante las prácticas y que luego el salario no me permitiese ni vivir... vamos que tengo la cabeza hecha un lío. (Luego está mi jefe que me quiere mantener con subida de categoría y posible subida de sueldo pero donde voy muy quemado)
Gracias!
Pues las bandas salariales son bastante desalentadoras, y dependen también de la ciudad en la que vivas (Madrid, Barcelona por ejemplo pagan más por el coste de vida). Si entras de becario y te fichan de junior 1, rondarás los 16500€ (rozando el SMI :awesome:). Si te desenvuelves bien, tienes revisiones semestrales, la de sueldo creo que es anual a no ser que pegues un salto doble o mayor.
A los 6 meses, si estás currando de seguido con una tecnología, te dan un bono, que son unos 1500€ anuales. A cada salto de categoría súmale unos 500/1000€ anuales, luego cuando llegas a CD te vas a otra banda salarial con mejores revisiones, y así hasta que quieras/puedas promocionar. Si todo va relativamente normal, en un par de años te plantas en 21/22K. Ahora hay rumores de que van a cambiar todas las bandas en 2024 para equipararlas a Solutions (que cobran más), aunque son solo rumores.
Si tienes aspiraciones económicas a corto plazo, mejor prueba otro sitio o ve saltando, hay cárnicas como Accenture que también son una mierda, pero a un senior están pagando 10k más.
Tampoco creo que ninguna cárnica sea un sitio para hacer carrera, a menos que seas vago, acomodado o poco ambicioso, pero creo que son un buen trampolín, tienen mucha variedad de tecnologías y manejan proyectos atractivos a nivel de currículum. Dependiendo del proyecto en que caigas, incluso podrás aprender y disfrutar del curro, aunque lo normal es lo contrario.
(...)Ahora hago vista atrás y no sé cómo demonios he interiorizado todo en tan poco tiempo.
Hoy se ha oficializado mi ascenso, y el responsable me ha comentado que en 8 años que lleva en la empresa, es el primer salto cuádruple que ve, de hecho normalmente solo se contempla el salto doble como máximo, y me ha dicho que no han podido seguir protocolos estándar para hacerlo :lol:, así que estoy realmente contento. Tampoco es que me vaya a arreglar mucho (sigo perdiendo pasta con respecto a mi anterior curro), pero la verdad es que soy bastante más feliz en el curro que antes.
Yo tampoco. Porque tenemos programas de gestión en la que hacemos todo eso a la escala mínima, pero si no, no sé si me hablas en esperanto o en arameo :D
Yo también estoy contento donde estoy: me pagan poco, pero tengo horario flexible, y salvo las épocas de agobio, mi trabajo consiste en picar código, y de vez en cuando, enfrentarme a algo nuevo (no soy el más rápido escribiendo código, pero cuando hay que hacer algo fuera de lo normal, soy al primero al que llaman :D), y eso, al final es lo que cuenta.
Si en un momento dado necesito más dinero, entonces me pondré a buscar otro sitio, pero viendo lo que hay por ahí fuera...
Enhorabuena!
Sin ánimo de ser indiscreto, cuánto es el salario de junior bruto anual?
Me estoy planteando si hacer las prácticas o convalidarlas. De hacerlas me gustaría meter cabeza en NTT Data (Murcia) peeeero no me gustaría palmar el dinero de mantenerme durante las prácticas y que luego el salario no me permitiese ni vivir... vamos que tengo la cabeza hecha un lío. (Luego está mi jefe que me quiere mantener con subida de categoría y posible subida de sueldo pero donde voy muy quemado)
En mi experiencia personal (si te quieres fiar de ella), una consultoría no es sitio para hacer dinero. He estado en sitios donde se trabajaba casi sin agobios (va por rachas), y con gente que te echa una mano. Algún caso conozco donde el SMI es más una sugerencia que una obligación, y en épocas de crisis, se veía de otra forma. Hay sitios en los que te hinchan a trabajar hasta que no puedes más, y te reemplazan por alguien más fresco, o dispuesto a cobrar menos que tú.
Si vienes de trabajar en otro sitio, lo más probable es que pierdas dinero seguro.
Yo trabajo en una consultora muy pequeña (<15 trabajadores) pero muy especializada (uno de los pocos ERP que hay), por lo que tenemos subidas salariales pequeñas (ni se acercan a lo que te ha dicho Selecter, no lo digo porque me da hasta vergüenza ^^U). También es verdad que dependemos de lo que nos van pagando los clientes. Pero lo que le he dicho a Selecter, no tenemos el agobio de terminar un proyecto en la mitad de tiempo que se requiere (normalmente): a mi me piden que añada un módulo a la APP de ventas, y si estimo que tardo una semana en hacerlo, es el tiempo que hay (pero ni se te ocurra decir que son 2 semanas :D), y me dejan a mi aire mientras cumpla el tiempo y el programa funcione.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.