Puedo leer código pero no puedo escribirlo yo mismo. Practico la creación de software y sitios web, pero no me entra en la cabeza. ¿Cómo puedo superar esto?

No hay suficientes detalles aquí para formar una buena respuesta. Pero puedo dar una general.

Es posible que no hayas asimilado la verdadera naturaleza de la programación. Es un método de resolución de problemas, y es creativo. No hay dos programadores que hagan el mismo código. Puedes aprenderlo como un enfoque de libro de cocina "esto hace aquello", o puedes aprender realmente el modelo que representa.

Para empezar, la codificación se refleja en gran medida en las matemáticas. Ambas se entrelazan de forma fascinante. Por ejemplo, la función matemática toma una entrada y la procesa para hacer una salida. Lo mismo ocurre con una función de código. Las variables y los datos son sólo conjuntos. En matemáticas, las funciones trabajan sobre conjuntos, al igual que las funciones de código. Si aprendes más matemáticas, la programación será más fácil. No quiero decir que el código necesariamente haga matemáticas. Me refiero a que la propia estructura de los lenguajes de programación suele ser paralela a las estructuras matemáticas.

También, aprender a pensar en términos de datos > hacer cosas a los datos > salida. Céntrate en los datos y sus formas. La programación es todo acerca de los datos y lo que se debe hacer con ellos. Empieza por entender tus datos, no por pensar en líneas de código. Descomponga cualquier trabajo de programación en pequeñas unidades que se vinculen entre sí. Esa es la gran ventaja de la programación orientada a objetos. Cada tarea puede estar en su propia caja negra amurallada que puede ser creada y probada por separado.

Cuando empiezas un proyecto de programación, tu primera parada son los datos. Considera su naturaleza y cómo pueden ser procesados. Primero, juguetee un poco en el papel. Haga un diagrama de su enfoque del problema. Con el tiempo su comodidad con la programación probablemente crecerá.