1. Вивчити нову мову програмування
Вивчення нової мови програмування розвине нові способи мислення, особливо якщо нову мову програмування використовує парадигми, з якими Ви ще не знайомі. Багато з придбаних способів мислення можуть бути застосовані до мов, які вже знаєте. Можливо, ви навіть полюбите новий для Вас мову програмування настільки, що почнете використовувати його для серйозних проектів.
2. Прочитати хорошу, складну книгу з програмування
Багато знань можна почерпнути з книг. Безсумнівно, практика має дуже важливе значення, але прочитавши хоча б одну гарну, складну книгу з програмування, Ви не тільки перевірите своє мислення, а й, найімовірніше, прокачає свій скилл в цьому питанні.
Ось приклад такої літератури: The Art of Computer Programming (якщо хочете закип'ятити мозок), Structure and Interpretation of Computer Programs. A Discipline of Programming або знамениту dragon book. За порадою ArtemSmirnov. Concepts, Techniques, and Models of Computer Programming.
Звичайно, можна прочитати і простенькі книги, але уникайте літератури типу «Для чайників», «... за 24 години", "... за 3 тижні". Такі книги не дадуть вам вагомою користі, з точки зору поліпшення навичок програмування.
3. Приєднайтесь до open source проекту
Які переваги участі в open source проект? Командна робота (прекрасна річ, особливо, якщо раніше працювали тільки самостійно), можливість навчиться копатися в чужому коді, розуміючи його (досить складне завдання).
Відомі (і не дуже) спільноти розробників відкритого програмного коду: GitHub. Sourceforge. gitorious. BitBucket. Ohloh.
4. Вирішувати програмістські головоломки
5. Програма
Кожну нову програму починайте робити «з нуля». Розробляйте самостійно всю архітектуру і реалізуйте її. Повторюйте.
Програмування - кращий спосіб навчиться програмування. Ви будете вчиться на своїх помилках, і під кінець проекту отримаєте набагато більше задоволення, ніж від прочитання книги. До того ж ви «наб'єте руки» і будете швидше орієнтуватися в тих питаннях, в яких самі розібралися.
Досліджуйте цікаві коди, наприклад ядро Linux (майте на увазі, це дуже великий код). Доброю операційною системою для навчальних цілей є MINIX3. Ви зможете пізнати багато нових ідіом мови, а ще дещо про архітектурі ПО. Читання незнайомого вихідного коду - це складна, але дуже корисна робота.
forum.sources.ru/ і forum.vingrad.ru/ - 2 великих форуму по всіляких мов програмування
8. Пишіть про програмування
Заведіть свій блог про програмування, і пишіть в нього, нехай навіть для себе. Переглядайте сайти типу QA і намагайтеся давати відповіді. Так ви можете отримати знання в питанні, з яким самостійно, можливо, ніколи й не зіткнулися б. Якщо відчуваєте себе впевнено - пишіть туторіали. Якщо пишіть про програмування - повинні бути в курсі освітлюється питання по максимуму, використовувати відповідну термінологію, мати можливість грамотно відповісти на поставлене по темі питання. Якщо пишіть на англомовних сайтах - це ще й чудова можливість прокачати свої знання англійської.
9. Вивчіть низкоуровневое програмування
Вивчення низкоуровневого програмування корисно для кращого розуміння роботи машини. Почитайте про C. можливо освойте асемблер. Дізнайтеся, як комп'ютер виконує програму, і як працює операційна система (на високому рівні, по крайней мере). Якщо ви хочете пізнати серйозне в низкоуровневом програмуванні, то почитайте книги з комп'ютерної організації, операційним системам, вбудовуваним системам, по розробці драйверів і.т.д.
hx0 підказує:
Якщо Ви хочете підучити асемблер і дізнатися про побудову операційних систем - розгляньте вихідний код VictoriaOS. спробуйте написати для неї кілька найпростіших програм типу echo.
Отже, у Вас з'явилася проблема в коді: не працює, або працює не так як потрібно. Ви хочете її вирішити якомога швидше. Що ви робите? Пишіть відразу на форум, в QA, або просто друга. Так ось, ніколи так не робіть. Краще самому витратити час, намагаючись виправити помилку самостійно. Візьміть папір, олівець і розпишіть схему роботи алгоритму, звірте з кодом. Чи не запрацювало? Відпочиньте, сходіть на прогулянку, освіжіть мозок, спробуйте розібратися знову. Ви вже годинку-другий (час залежить від розміру проблеми) мучитеся з цим шматком коду? Побили Google в пошуках рішення? Так і бути, зверніться за допомогою. У всякому разі намагайтеся вирішити проблему своїми мізками. Ви витратите час, але додасте навичок.
P.S .: В деяких пунктах є посилання на хороші книги, блоги, сайти. Якщо у вас є чим доповнити лінк-лист (бажано російські ресурси, книги) - пишіть в ЛС, обов'язково додам.