Якщо ви хочете бути доказом у майбутньому, найкраща порада, яку я можу дати вам, - це не вкладати себе у технології.
Тому не вивчайте API наосліп. Дізнайтеся, як вони задумані. Які філософії стоять за сценою? Які їх переваги та недоліки? Думайте, програмне забезпечення взагалі, а не конкретна технологія.
Ви також можете попрацювати над гарною концепцією програми, перехід на ООП та АОП - хороший вибір ІМО. Але не просто розумійте механізм, а по-справжньому працюйте над філософією, що стоїть за механізмом.
Не нехтуйте загальною інформатикою, як-от структури даних та алгоритми, адже вони є крос-технологічними знаннями, які завжди корисні.
Також перейдіть на добрі практики. У вас часто є десяток способів зробити щось, але більшість з них - це лайно: схильні помилки, важко підтримувати, важко зрозуміти пізніше або іншим програмістом тощо. . . Зазвичай код важче читати, ніж писати. Тому навчіться витрачати трохи більше зусиль на написання, щоб полегшити читання (адже ви прочитаєте код більше, ніж пишете).
Вивчіть ефективні методи налагодження (розумне використання журналу та налагоджувача) та тестуйте (як написати код, який можна легко перевірити на одиниці та як автоматизувати ці тести).
Тоді вам знадобиться загальна технологія. Я говорю про дуже широкі знання, як, наприклад, як працює процесор (пропуск кешу чи прогнозування гілок - це гарний старт), про системи UNIX, про мережеві протоколи, такі як IP, TCP та Ethernet тощо. . .
Зрештою, навчитися вчитися. Якщо ви вмієте вчитися, то можете адаптуватися.
Вам знадобляться міцні знання з конкретних технологій, щоб знайти роботу, але вони застаріли дуже швидко (подумайте, наприклад, про COBOL або веб-програмування під час війни IE / Netscape). Тому не покладайтеся на них, щоб вони були надійними. Вони будуть визначальними для прийняття на роботу, але остаточно не те, що робить відмінного програміста, а те, що зробить ваші навички стійкими з часом.
EDIT: Якщо ви тільки починаєте, вам слід остаточно щось зробити. Що-небудь, насправді. Така гра, як тетріс чи змія - це гарний початок та розвага. Якщо у вас нічого не виходить, ви витратите багато часу на навчання і дійсно не отримаєте досвіду, необхідного для повного розуміння того, що ви дізнаєтесь.
Наведемо приклад з моделями дизайну. Шаблони дизайну чудові, і вам слід остаточно їх використовувати. Але при надмірному використанні вони зроблять ваш код складним і важким для розуміння. Вам доведеться зіткнутися з проблемою, яку вирішує шаблон дизайну і втратити деякий час, намагаючись вирішити його або його побічні ефекти, щоб повністю зрозуміти, про що йдеться в дизайні. Моделі дизайну повинні використовуватися як невеликі рефактори, з часом зростаючи код. І ви дізнаєтесь, коли потрібна схема дизайну, коли користь від неї більша, ніж складність коду, викликана його використанням. Для цього потрібен досвід.
Отже, остаточно, зробіть справи, вони навчаються на ваших помилках. Я більше не можу наполягати: РОБИТИ РОБИТИ !