Основа взята с моего блога, но здесь предлагаю более расширенный вариант который будет более полезен новичкам.
Как стать хорошим программистом
Когда я был маленьким и только начинал заниматься программированием, начал ходить в кружки. Помню, в одном из первых кружков были компьютеры Sharp с магнитофоном в одином блоке. (Точнее не магнитофоном, а устройством хранения информации на магнитной ленте). Позже были занятия в школе.
В первом кружке мы решали задачи, далекие от практического применения. В школе задания были уже ближе к реальности — мы начинали решать олимпиадные задачи. У меня дома до сих пор есть две книги с такими задачами по программированию тех лет. Они и помогли мне достичь хороших результатов на одной из олимпиад.
Сейчас всё гораздо проще и практичнее. Чтобы научиться программировать нужные на рынке “вещи”, можно заглянуть на сайты для фрилансеров и выбрать задачу по вкусу, интересу, сложности и направленности, а также на интересующем языке программирования.
Но я не призываю сразу же брать работу. Я говорю о том, что надо посмотреть, что требуется, и попробовать это сделать самому. Самому — это значит не спрашивать у друзей, знакомых, в форумах, а искать недостающие знания самостоятельно. Это поможет Вам научиться искать нужную информацию быстрее и более правильно.
Научитесь продумывать задачу до того как начнете её реализовывать. Я понимаю, что это легко говорить, но нелегко сделать. Но научившись продумывать задачу вы получите +1 к опыту и +1 к скорости реализации следующих задач.
Разбивайте задачу на более мелкие для ускорения обдумывания и реализаци. Например, если вы хотите написать Хабр, то разделите задачу на, например, такие:
1. создание регистрации пользователя
2. создание записи
3. создание комментария
и т.д.
Визуализируйте задачу. Делайте простые блок-схемы каждого мелкого блока и общую блок-схему для всей задачи.
Записывайте взаимодействия мелких блоков задачи между собой. Например: блок «А» принимает от блока «Б» параметр «Ц». Соответственно вносим изменение в описание блока «Б», что он отдает параметр «Ц» блоку «А».
(Кстати, может подскажете программу автоматизирующую эти действия?)
Записывайте свои успехи. У меня каждая задача имеет версию и дату. И есть файл у каждой задачи в котором по датам расписано что я сделал. Так же это поможет откатиться на рабочую версию если Вы что-то сломали в текущей =)
И не забывайте сохранять изменения задачи. Если у Вас нет CVS то можно просто создавать директории по датам и копировать файлы туда. Совместно с предыдущим пунктом данное действие поможет быстро вернуться к рабочему образцу. И лучше всего делать резервные копии еще где-нибудь на другом носителе.
Кстати иногда у меня бывает несколько разных копий за день. Я их делаю если собираюсь вносить глобальные изменения, которые могут сделать неработоспособной версию за сегодняшний день. В итоге у меня получается следующая структура папок:
project/300408-1
project/300408-2
project/300408-3
Записывайте все идеи, которые пришли к Вам в процессе создания очередной версии. Эти идеи можно реализовать в следующих версиях. А если идея «А вот это можно было бы сделать так...», то она может быть полезна и в совсем другой задаче.
Записывайте где-нибудь отдельно всё, что Вы узнали нового. Например, узнали как работать с новым (для себя) плагином jQuery — запишите сразу же. В notepad, notebook (бумажный или электронный) или в блог.
Если решение задачи зависит не только от Вас, то тоже запишите кто за что отвечает и как и когда должно быть это сделано.
И последний пункт. самый сложный, наверное. Доведите вышеописанные действия до автоматизма — привычки. Не жалейте времени на запись всех действий и взаимодействий. В будущем это поможет Вам сэкономить много времени, когда придется возвращаться к старой и забытой задаче или решать новую с применением существующих наработок.
Как стать хорошим программистом
Когда я был маленьким и только начинал заниматься программированием, начал ходить в кружки. Помню, в одном из первых кружков были компьютеры Sharp с магнитофоном в одином блоке. (Точнее не магнитофоном, а устройством хранения информации на магнитной ленте). Позже были занятия в школе.
В первом кружке мы решали задачи, далекие от практического применения. В школе задания были уже ближе к реальности — мы начинали решать олимпиадные задачи. У меня дома до сих пор есть две книги с такими задачами по программированию тех лет. Они и помогли мне достичь хороших результатов на одной из олимпиад.
Сейчас всё гораздо проще и практичнее. Чтобы научиться программировать нужные на рынке “вещи”, можно заглянуть на сайты для фрилансеров и выбрать задачу по вкусу, интересу, сложности и направленности, а также на интересующем языке программирования.
Но я не призываю сразу же брать работу. Я говорю о том, что надо посмотреть, что требуется, и попробовать это сделать самому. Самому — это значит не спрашивать у друзей, знакомых, в форумах, а искать недостающие знания самостоятельно. Это поможет Вам научиться искать нужную информацию быстрее и более правильно.
Научитесь продумывать задачу до того как начнете её реализовывать. Я понимаю, что это легко говорить, но нелегко сделать. Но научившись продумывать задачу вы получите +1 к опыту и +1 к скорости реализации следующих задач.
Разбивайте задачу на более мелкие для ускорения обдумывания и реализаци. Например, если вы хотите написать Хабр, то разделите задачу на, например, такие:
1. создание регистрации пользователя
2. создание записи
3. создание комментария
и т.д.
Визуализируйте задачу. Делайте простые блок-схемы каждого мелкого блока и общую блок-схему для всей задачи.
Записывайте взаимодействия мелких блоков задачи между собой. Например: блок «А» принимает от блока «Б» параметр «Ц». Соответственно вносим изменение в описание блока «Б», что он отдает параметр «Ц» блоку «А».
(Кстати, может подскажете программу автоматизирующую эти действия?)
Записывайте свои успехи. У меня каждая задача имеет версию и дату. И есть файл у каждой задачи в котором по датам расписано что я сделал. Так же это поможет откатиться на рабочую версию если Вы что-то сломали в текущей =)
И не забывайте сохранять изменения задачи. Если у Вас нет CVS то можно просто создавать директории по датам и копировать файлы туда. Совместно с предыдущим пунктом данное действие поможет быстро вернуться к рабочему образцу. И лучше всего делать резервные копии еще где-нибудь на другом носителе.
Кстати иногда у меня бывает несколько разных копий за день. Я их делаю если собираюсь вносить глобальные изменения, которые могут сделать неработоспособной версию за сегодняшний день. В итоге у меня получается следующая структура папок:
project/300408-1
project/300408-2
project/300408-3
Записывайте все идеи, которые пришли к Вам в процессе создания очередной версии. Эти идеи можно реализовать в следующих версиях. А если идея «А вот это можно было бы сделать так...», то она может быть полезна и в совсем другой задаче.
Записывайте где-нибудь отдельно всё, что Вы узнали нового. Например, узнали как работать с новым (для себя) плагином jQuery — запишите сразу же. В notepad, notebook (бумажный или электронный) или в блог.
Если решение задачи зависит не только от Вас, то тоже запишите кто за что отвечает и как и когда должно быть это сделано.
И последний пункт. самый сложный, наверное. Доведите вышеописанные действия до автоматизма — привычки. Не жалейте времени на запись всех действий и взаимодействий. В будущем это поможет Вам сэкономить много времени, когда придется возвращаться к старой и забытой задаче или решать новую с применением существующих наработок.