¿Por qué no me das el código?

Hace unos días recibí este correo:

Buenas tardes Sergio

Lo primero, esperar que estés bien en estos tiempos que corren, y también los tuyos.

Mi nombre es AAA MMM, y, a tenor de precisamente las circunstancias que actuaLmente vivímos, he aprovechado para intentar iniciar, a mis 30 años, la andadura del desarrollo web.

Esto supone para mí un cambio de sector, ya que provengo del legal, pero he de reconocer que la profesión no me llena igual que antes, y que me fascina el mundo digital, al que cada vez nos avocamos de forma mayor, y del cual se ha puesto de manifiesto la necesidad de invertir y confiar en el mismo para desarrollar no sólo la web, sino también nuestro propio sistema.

Reflexiones aparte, darte las gracias por el trabajo que habéis puesto a disposición gratuita de los usuarios, y comentarte una duda acerca del curso.

Mi problema, como quizás ha sido ya el de otros alumnos, es que aunque considero que el curso explica bastante bien los conceptos, a la hora de llevarlos a la práctica es farragoso, no porque el contenido no sea útil, sino porque al distribuirse el material didáctico en formato vídeo, es más complicado de transcribir.

No sé si sería posible acceder directamente al material didáctico de ambas partes del curso desde alguna url, a fin de facilitar la realización de ejercicios y de ahorrar tiempo de transcripción de ciertos comandos y propiedades, con los que recién empiezo a familiarizarme.

Muchísimas gracias a tí y a tus compañeros por el curso, y muchas gracias de antemano

Atentamente,

AAA MMM

Y mi respuesta fue:

Hola AAA.

Muchas gracias por tu correo.

Entiendo muy bien lo que pides, no eres el primero que lo pide. Pero hay un aspecto importante del proceso de aprendizaje que no tienes en cuenta.

Aquí puedes consultar una revista antigua de informática, del año 1985:

https://www.dropbox.com/s/3ukd4wasqg34r6o/Commodore_Soft_Magazine_1.pdf?dl=0

Es similar a las que yo tenía, en ese mismo año, cuando empecé a programar. Puedes ver que costaba 495 pesetas, 3 € al cambio. Según una calculadora de inflación que he empleado, eso equivale a 9 € actuales. Dudo mucho que haya gente hoy en día que pagase eso por una revista de 32 páginas. Pero eso no es lo más importante.

Si ojeas la revista, verás cosas como esto:

O esto:

Son fragmentos de código que tenía que copiar para hacer un programa. Código muy difícil de entender y que, a diferencia del HTML y CSS, el más mínimo error produce que no funcione.

¿Incómodo tener que copiar todo eso?

¿Pérdida de tiempo? Quizás, pero también un entrenamiento para pasar horas delante del ordenador, concentrado en una tarea monótona, que requiere una gran concentración. Y cuando me equivocaba, que por supuesto me pasaba muchas veces, debía entrenar la vista para encontrar el más mínimo error lo antes posible.

Claro, hay gente que dirá que estoy equivocado, que esto que cuento es de la prehistoria, que hoy no es necesario teclear… Si te dan el código listo para copiar y pegar, eso es lo que haces, lo copias, lo pegas y lo pruebas, pero realmente no aprendes. Como dices, recién empiezas a familiarizarte; solo lograrás familiarizarte escribiendo lo mismo, y equivocándote, muchas veces.

Por cierto, aquí puedes encontrar ejercicios sobre HTML y CSS:

http://desarrolloweb.dlsi.ua.es/libros/html-css/ejercicios

Puedes incluso encontrar la solución, por si quieres ahorrar tiempo 🙂

Te deseo mucha suerte en tu transformación.

Un saludo.

Cosas de CSS que se pueden aprender en 30 segundos

Muy útil el sitio web 30 Seconds of CSS.

Por ejemplo, ¿cómo truncar una línea de texto para poner al final una elipsis?

HTML:

<p class=”truncate-text”>If I exceed one line’s width, I will be truncated.</p>

CSS:

.truncate-text {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 200px;
}

¿Cómo hacer una lista con diseño de color zebra?

HTML:

<ul>
<li>Item 01</li>
<li>Item 02</li>
<li>Item 03</li>
<li>Item 04</li>
<li>Item 05</li>
</ul>

CSS:

li:nth-child(odd) {
background-color: #eee;
}

Lo que se debe aprender sobre desarrollo web

De vez en cuando, debido a los cursos tipo MOOC sobre desarrollo web que tengo, recibo consultas como la siguiente:

A casi 6 años desde que lo publicaste en youtube encontre tu curso de desarrollo web el cual empeze hoy, mi pregunta es si es algo con lo que aun puedo ayudarme para iniciar en el desarrollo web, te pregunto por los años que han pasado. saludos y espero tu respuesta!

Mi última respuesta fue:

Las matemáticas que aprendemos en el colegio se desarrollaron hace unos 5000 años.

Las matemáticas que aprendemos en el instituto se desarrollaron hace unos 2000 años.

Las matemáticas que aprendemos en la universidad se desarrollaron hace unos 400 años.

Este es un curso introductorio, ¿crees que puedes aprender lo último de lo último sin aprender primero lo básico?

El error de todos los años, superado

Esto es un clásico de todos los años. Claro, alguien podría decir que es mi culpa, que no enseño bien a mis estudiantes. Es verdad, podría ser, si no fuese porque mi asignatura es de tercer curso y su objetivo no es aprender a programar y a trabajar con bases de datos (eso ya lo han estudiado en asignaturas previas); el objetivo de la asignatura que yo imparto es aprender a desarrollar aplicaciones web.

Por comparar, es como si en una asignatura de cálculo de ecuaciones diferenciales hubiese que enseñar a los estudiantes a derivar o incluso a resolver ecuaciones lineales o incluso a sumar y multiplicar.

Por otro lado, yo sé que hay gente, compañeros, a los que no les gusta que estas cosas “se aireen”, son más de “barrer la suciedad debajo de la alfombra”. Bueno, para gustos, los colores.

Este año, como es costumbre, al llegar al acceso a la base de datos desde una página web me he encontrado el típico error de hacer una consulta y traerse todo el contenido de una tabla a la página web para buscar un único dato. ¿Y si tu tabla son los usuarios de Facebook, te vas a traer una tabla con mil millones de registros? Para muchos estudiantes, el uso de WHERE para filtrar los resultados es algo esotérico… y quizás pecaminoso.

Este año me he encontrado algo muy sorprendente e imaginativo. Tiene su valor, porque yo creo que nunca hubiese imaginado hacer eso. Por tanto, desde un punto de vista del pensamiento divergente, es genial. Sin embargo…

En la siguiente imagen podemos ver un fragmento de código. El bloque de código dentro de la condición if tiene como objetivo comprobar si el id (autonumérico, clave primaria de la tabla FOTOS) que recibe la página mediante GET pertenece a una foto de las almacenadas en la base de datos.

La sentencia “select * from FOTOS” podría tener una cláusula WHERE para buscar el id, pero no.

En vez de ello, se consulta num_rows para obtener el número de filas devueltas y comparar el id de la foto con ese número. En la siguiente condición se comprueba si el id de la foto es mayor que el número de filas: si es mayor, la foto no existe y se muestra un mensaje de error; si no es mayor, la foto existe y se continúa con el procesamiento.

¿¿¿Cómo???

Claro, la suposición aplicada en este pensamiento divergente es que el id se corresponde con el número de fotos que existen en el momento de insertar la foto, lo cual es cierto siempre que:

  1. El id comience siempre desde 1.
  2. Nunca se borre una foto.

Porque… en cuanto se borre una foto de la tabla, este código falla más que una escopeta de feria.

Y bueno, el resto del código también merece algún comentario adicional, lo dejo como ejercicio para casa para el lector interesado.

Cómo seleccionar un lenguaje para aprender a programar

La pregunta “¿qué lenguaje debo emplear para aprender a programar?” me la han hecho muchas veces.

También he asistido en la universidad a reuniones sobre qué lenguaje es el más adecuado para enseñar a programar.

Y muchas veces, en estas reuniones está el evangelista/defensor (¿pagado?) del último lenguaje de programación que ha aparecido y que parece que es el mejor, el definitivo.

Este es un tema de discusión peligroso porque se entremezcla la razón con las emociones.

Si quieres escribir una novela, ¿es mejor que lo hagas en inglés o en español? En igualdad de condiciones, no creo que haya ninguna diferencia importante en el idioma que se elija, total, las novelas se traducen a diferentes idiomas. Pero claro, hay algunos factores externos, como el idioma que conoces y sabes utilizar mejor y el mercado en el que quieras vender tu novela que sí que influyen en la elección.

Pues con los lenguaje de programación, igual. Más o menos, los lenguajes de programación modernos son todos iguales siempre que estemos en igualdad de condiciones, por ejemplo, comparando lenguajes del mismo paradigma de programación.

En la pregunta How do I select a programming language to learn? que se ha publicado en Quora dan el siguiente punto de vista:

The number one mistake people make when learning to code is worrying too much about picking the right language.

[…]

If this sounds familiar, I’ve got some good news for you: you can stop tallying the pros and cons of each programming language and make a smart decision by focusing on 3 things to become an in-demand programmer.

1. Learn to write algorithms and work with data structures

Computer Science fundamentals, like how to write algorithms and work with data structures, are essential to programming. This probably comes as no surprise.

[…]

2. Getting real-world experience

Ensuring that you get real-world coding experience will prepare you for life as a programmer much more than the programming language you choose.

[…]

3. Learning to code by (wait for it…) writing code!

If you’re a career changer, don’t get stuck in a loop of “analysis paralysis” that prevents or delays you from writing code. That’s because the best way to learn to code is by writing code.

You need to make mistakes, learn how to decipher error messages, and troubleshoot during your learning process. None of this happens by reading books or watching video tutorials, so it’s best to dive right in and start coding. Whichever language allows you to do that the fastest and most effectively is what you should learn.

 

 

¿Es PHP realmente un mal lenguaje?

Yo le enseño PHP a mis estudiantes, considero que es un buen lenguaje/plataforma para aprender los conocimientos básicos del desarrollo web. Sin embargo, PHP tiene muchos enemigos y reconozco que no es un excelente lenguaje/plataforma, debido seguramente a la forma en que se ha desarrollado. Sin embargo, la razón de los comentarios negativos se encuentra en lo siguiente (If people consider PHP a bad language, what’s the alternative?):

The reason that PHP is a bad language is that it’s so easy to learn the basics – which makes it easy for people who don’t understand programming to learn PHP … and write totally insecure programs. SQL injection is horrible, trivial to prevent, but a lot of people still use msql() functions in older installations. There’s no reason not to – if you understand what you’re doing but I guess that so many people don’t that they had to take the whole thing out of version 7. (Mysqli() functions aren’t that much better, PDO is almost inherently safe, but it’s still easier to stick with what you’ve been using for years – even if 10 year old can hack into the resultant site.

The alternative isn’t a different language if you’re comfortable writing PHP code, the alternative to writing bad PHP code is to write good PHP code. C++ is a good language too – yet you can still write terrible code in it. Some people suggest Python. You can write insecure sites in Python too, if you don’t watch what you’re doing.

Security is something the developer does, it’s not something in the language.

Es decir, una de las ventajas de PHP, que sea fácil de aprender y sea elegido como plataforma de iniciación para mucha gente que quiera aprender el desarrollo web se ha convertido en su mayor “enemigo”.

¿Para qué aprender HTML, CSS y JS?

Hace unos días recibí un correo con esta pregunta:

Buenos días o buenas tardes Sergio, mi nombre es J.D, soy español viviendo en una ciudad de Mexico, estoy realizando el curso de “Introducción al Desarrollo Web” a través de la pagina Activate, yo llevo muchísimo tiempo en esto de internet, desde que empezaron con los modems de 56kb/s, mi pregunta es la siguiente: ¿No crees que ser hoy en dia desarrollador de paginas web ya esta desfasado o acabado ya que existen muchísimos programas para hacer paginas web sin falta de escribirlas en código (html,css…) ya que estos programas a la vez que la diseñas, se escribe el código el solito?, de ahi mi gran duda sobre desarrolladores web.

Mi respuesta fue la siguiente:

Hola.

¿No crees que ser hoy en día cocinero, o aprender a cocinar para uno mismo, está desfasado? Con toda la comida precocinada que se vende, con los maravillosos microondas que la preparan rápidamente y sin esfuerzo, pulsando un simple botón, todo solito.

El ahorro de tiempo es impresionante y muchas veces es más barato comprar la comida precocinada que comprar los ingredientes por separado.

Y ya puestos, ¿no están desfasadas las casas que se venden con cocina? Teniendo un McDonalds a la vuelta de la esquina, menuda tontería cocinar y comer en tu propia casa.

Un saludo.

Y parece que no le gustó:

No creo que sea esa la manera de contestar a una pregunta con buenos propósitos, simplemente era una duda que tenia pero ya entendí el concepto que usted quiere expresar con su contestación, simplemente quería saber si hay alguna diferencia al escribir el código de la pagina o hacerlo directamente con programas como por ejemplo “dreamweaber” ya que según mi criterio no vi ninguna diferencia que obligara a escribir la pagina en código.