¿Está bien acercarse a una empresa y solicitar una pasantía de software no remunerada, si solo tengo 3 clases de Java en mi haber?

Lamentablemente no. Recuerde que las compañías que necesitan obtener ganancias están tratando de cumplir esa tarea de la manera más rápida y eficiente posible. Traer a un desarrollador que no puede operar sin una guía de enseñanza es una responsabilidad y costoso desde la perspectiva del proyecto.

Una vez estaba pensando exactamente como tú, así que definitivamente no estás solo. Si lo que busca es experiencia, clone los repositorios de código abierto de Github.com (Spring, etc.) y trabaje para comprender cómo está diseñado el código, cómo se prueba la unidad, cómo funciona el sistema de compilación, etc.

Crea un proyecto por tu cuenta. No tiene que ser complicado. Mi primer intento fue una aplicación web que permite al usuario controlar las calorías que ingiere y mostrar gráficos con los hábitos de progreso y consumo; ¿suena familiar? Y, esto fue en el día con Struts 1 y JDBC directo – ¡qué asco!

Haz algo similar. Elija una idea que le interese y compílela con la pila tecnológica de su elección. Si encuentra un marco que eligió, luego lo pinta en una esquina, extráigalo y reemplácelo con algo mejor. Aprenderá más de esta manera que cualquier clase que tome. ¡Esta es la experiencia que buscan las empresas! Quieren tipos que entiendan los idiomas, la arquitectura y el ecosistema involucrado. Cuando se construyen sistemas que finalmente hacen que las empresas ganen dinero, es hora de comercializar y de arreglar una vez que el producto está en producción. La única forma de llegar allí es dedicar tiempo y aprender de abajo hacia arriba. He estado haciendo esto por más de 10 años y constantemente hago 30-100% más que mis colegas (no W2, por supuesto).

Cuando tengan un proyecto de trabajo juntos, ¡tírenlo en github y tírenme el repositorio! ¡Feliz codificación!

No solo lo pidas. Muéstreles por qué deberían quererlo a bordo primero. Resuelva un problema para ellos, muéstreles un enlace débil que pueda mejorar.