пятница, 16 октября 2015 г.

Курсы - нужны ли они ?

Т.к. я сам веду курсы, то данная заметка наверно несколько субъективна, но тем не менее постараюсь написать честно плюсы и минусы курсов.

Практикуйтесь

Наверно так будет всегда - почему-то часто люди думают, что для изучения программирования достаточно просто прочитать много-много книг, прослушать какой-то курс и навыки программиста появятся сами собой. Видимо, ждут чуда.

НЕ ЖДИТЕ ЧУДА. Это равносильно считать, что чтение книг по тренировке пресса позволит вам иметь кубики на животе. Умственная деятельность требует тренировки не меньше, а возможно и больше. Пишите код, заставляйте его делать то, что вы хотите, сталкивайтесь с трудностями и решайте их. Ошибайтесь. Опыт работы вам никто не расскажет - его надо нарабатывать самому, как кубики на животе. И чем раньше вы начнете это делать, осознавая, что иначе никак - тем будет лучше для вас. Удачи.

вторник, 25 августа 2015 г.

Не обманывайте себя

Вспомнился китайский автор Лу Синь:
"А-лянь уже бежал ему навстречу, а подбежав, почтительно вытянулся, опустив руки по швам, и воскликнул:
— Учитель! — После чего продолжал с легким раздражением: — Я отказался работать. У них слово расходится с делом: обещали тысячу мер проса, а дали пятьсот. Я вынужден был уйти.
— А если бы тебе дали не тысячу, а больше, ты бы тоже ушел?
— Нет, — ответил А-лянь.
— Значит, причина не в том, что слово расходится с делом, — просто тебе мало дали!"

Вы конечно можете пытаться обмануть работодателя, своих коллег, но во-первых, это будет временно, через какое-то время все все равно узнают вам цену, как специалисту, а во-вторых - уважать самого себя тоже надо уметь. И начинается это с того, чтобы не врать самому себе - если что-то не знаете или что-то не умеете, то надо над этим работать, а не обижаться на судьбу и других. Удачи.

Решайте задачу

Крайне часто, читая вопросы на форумах, на память приходит история из учебника английского языка - диалог двух студентов:
- Как по-английски будет "у" ?
- Зачем тебе ?
- Хочу написать фразу "У студента нет денег"

Для тех, кто пока не уловил идею:
Во-первых, надо понимать саму задачу - что именно вы хотите получить, надо увидеть картину целиком.
Во-вторых, решений для задачи может быть несколько и не факт, что решение, для которого вы задаете частный вопрос, является хорошим - особенно это касается начинающих программистов

Поэтому для начала постарайтесь увидеть задачу "с высоты птичьего полета". Вам необходимо сначала понять, ЧТО надо сделать, а не КАКИМ ОБРАЗОМ. Вот когда точно поймете - тогда уже выбирайте решение и задавайте вопросы для его реализации.
Вполне может быть, что для начала лучше узнать варианты решения - и для этого надо хорошо описать, ЧТО вы хотите получить. Удачи.

пятница, 31 июля 2015 г.

Прочувствовать инструмент

Постоянно убеждаюсь в таком факте - не надо изучать инструмент (технология/пакет/библиотека) ради самого инструмента. Изучайте ради решения задачи. Пусть даже пока она вас не заботит, но задача должна как минимум выглядеть реальной (лучше конечно, чтобы была реальной).
Это своеобразная трактовка изречения: "Практика - критерий истины".
Если не указано, для какой задачи применим инструмент - не нужен этот инструмент.
Если при попытке решить задачу инструмент "выкидывает коники" - не нужен этот инструмент. Но идея такого инструмента уже может быть ценной.

Проблема в том, что нередко ты просто не сталкивался с такими задачами. И это бывает большим разочарованием в будущем - оказывается, что инструмент классный, а ты не увидел. Печалька.

четверг, 30 июля 2015 г.

Сомнения в примерах

Все-таки зацепило :) В процессе жаркого разговора я понял, что не всегда получается донести следующую мысль - для меня важно определить в демонстрации какой-то идеи самую суть и я сознательно (в какой-то степени) игнорирую возможно интересные (и даже существенные) моменты.

вторник, 21 июля 2015 г.

Инструменты и задачи

Задумался :) Когда-то давно на лекции по экономике нам говорили о производстве средств для производства средств производства и производства средств для производства средств потребления. Если переиначить - кто-то создает станки для производства станков, а кто-то  станки для производства мороженого.

В программировании это тоже можно увидеть - кто-то создает сервера приложений, библиотеки (Spring, Struts, GWT, Drools, jBPM), а кто-то пользуется этими средствами для создания потребительских систем.

понедельник, 20 июля 2015 г.

SQL vs NoSQL

Как сказал Маяковский: "Если звезды зажигают - значит это кому-нибудь нужно".
Действительно ли нужны NoSQL в таких количествах, как об этом сейчас говорят или это очередной всплеск, который утихнет и возможно погаснет совсем ?

пятница, 17 июля 2015 г.

Выбор инструментов и сложность программ

Опять я про инструментарий программиста и задачи. Как определить, что надо выбрать для конкретного проекта и где заканчивается возможность управлять сложностью задачи ?

Если рассуждать , то очевидно - выбор надо делать так, чтобы инструмент подходил для решения задачи. Но когда речь идет о сверлении дырок в бетоне, то в общем выбор достаточно прозаичный - перфоратор определенной мощности с учетом того, сколько времени мы собираемся сверлить. Решение может быть найдено достаточно быстро. Потому что задача простая.

Но когда только формулировка требований является весьма сложной задачей, да и сам инструмент тоже требует на изучение иногда несколько недель или месяцев - тогда как выбирать ?

четверг, 16 июля 2015 г.

Что надо знать начинающему программисту

Предварительные слова сказаны (я имею в виду статью Что надо изучать перед программированием), так что пора попробовать описать те инструменты, которые на мой взгляд, нужны программисту.

В принципе вряд ли подготовка программиста сильн оотличается от подготовки инженера - не факт, что все изученное вам пригодится и не факт, что вам не придется изучать что-то совсем новое (тут скорее ответ "придется однозначно"). Но тем не менее есть несколько областей, которые надо знать в любом случае.

вторник, 14 июля 2015 г.

Стандартные инструменты против уникальных

Вопрос в общем-то достаточно нужный и в тоже время неопределенный, но для меня "царапающий мозг". Вот и покопаемся :)

Что лучше при создании программы - использовать доступные инструменты с ограничениями и возможным снижением эффективности или создание уникальных инструментов (может быть и на основе существующих, но с серьезной модификацией), которые решат задачу лучше. Это просто занятная мысль, с которой можно поиграть.

понедельник, 13 июля 2015 г.

Что надо изучать перед программированием

Вопрос достаточно сложный и каждый начинающий программист (и не только начинающий) себе его задает.
Сложность в том, что сам по себе объем используемых знаний, технологий, пакетов, платформ настолько широк, что глаза разбегаются и мозг начинает кипеть.
Я попробую высказать свое мнение, которое тоже появилось в результате попыток ответить на этот вопрос. Насколько он будет удачным и соответствующим истине - не берусь судить. Но может эти рассуждения кому-нибудь покажутся заслуживающими внимания.

Сначала определимся со школьными (и студенческими) предметами - математика, физика и много чего еще. С самим программированием разберемся в другой раз.

вторник, 7 июля 2015 г.

Куда пойти учится - выбираем ВУЗ


Конечно же не могу говорить за все ВУЗы России и международные - только за те, с которыми сталкивался. Т.к. живу в Санкт-Петербурге, то могу судить только о местных учебных заведениях, а именно:

СПбГУ, ИТМО, СПбГЭТУ «ЛЭТИ», ГУАП, Политех, СПбГМТУ, БГТУ (Военмех)

Я общался с преподавателями, студентами и выпускниками этих ВУЗов, читал программы, решал домашние задания. Подозреваю, что выборка достаточна для того, чтобы судить об общем состоянии системы обучения программированию в РФ. Исключения из правил само собой возможны. В итоге мой вывод такой:

понедельник, 6 июля 2015 г.

Алгоритмы и инструменты

В принципе важны оба пункта, но многое зависит от того процесса, который вы собираетесь автоматизировать (для которого вы программу и пишите).

За историю программирования было создано (и до сих пор создается) немалое количество распространенных алгоритмов (можно какую-то часть посмотреть здесь - Список алгоритмов). Их конечно же неплохо держать в голове - не сами алгоритмы, а то, что они есть и какие они, что они делают. Также надо уметь придумывать свои алгоритмы и понимать процесс создания и анализа - этому можно научится только постоянно практикуясь. Как и в любой области.

Программирование - это что ?

Наверно самый главный вопрос, на который надо сначала ответить, такой:

Что такое программирование ?

На просторах интернета можно найти тысячи статей, обсуждений на форумах, в блогах, которые пытаются ответить на этот вопрос. Вот как лично я сформулировал ответ:
Программирование - это инженерная дисциплина, которая учит писать программы. Сами программы предназначены для решения разнообразных задач.