Conozco muchísimos programadores, que mas que programadores debería llamarlos "diseñadores de aplicaciones" porque saben y lo hacen muy bien, tirar componentes sobre un formulario, entrelazar los datos... Pero les he puesto un ejercicio sencillo como hacer una función que haga, mas o menos, lo que hace StringReplace..
Y.... Nada, imposible, uno se da cuenta que la forma de pensar es la errónea, y creo que eso pasa porque han empezado a desarrollar aplicaciones directamente el lenguajes RAD, y se les complica muchísimo debuggear una aplicación, o desarrollar una idea simple.
Es solo una opinión, creo que primero debe empezar por un lenguaje estructurado tipo Pascal / QBasic...
Saludos!