uses
Ваши коды, выраженные в мириадах строк, зашиты в мультиварках, холодильниках, телевизорах и телефонах. Вы пытаетесь обучить машины думать и работать во благо людей, высвобождая тем самым человеку время для более глубокого познания себя. Ваши творения обыгрывают нас в шахматы, предсказывают погоду и подсказывают, как объехать пробку. И наконец, вы просто пишите здесь статьи, от одних названий которых я чувствую себя неандертальцем с палкой-копалкой в руке. Но задумывались ли вы о том моменте, когда к вам пришло осознание того, что вы программист? Или этот момент ещё не настал?
private
14 лет назад, я устроился на работу инженером-конструктором. Кроме прямых обязанностей, мне приходилось делать заявки на приобретение материалов (металл, комплектующие) для того, что я проектировал. Были пустые бланки в Excel, которые распечатывались и заполнялись руками в двух экземплярах, для службы снабжения и склада.
Позже, через 3 года, я введу для себя понятие «рациональная лень». Это когда делаешь всё, для того чтобы меньше уделять времени задаче, а результат от этого не страдает.
В соседнем здании НИИ, на территории которого мы арендовали помещения, был отдел программистов. Возвращаясь из столовой, я зашёл к ним и попросил мне показать что-нибудь, в чём я могу создать программу. Так я познакомился с Delphi7. Выпросив у них книгу по программированию, я начал рационально лениться.
procedure
Hello, world! Теперь мне нужно научиться хранить данные. Поставщики, материалы, количество, единицы измерения. «Ну, можно по-разному, можешь в Registry хранить» – отмахнулись от меня старшие товарищи. Так появилась моя первая программа с базой данных основанной на регистрах. Улыбнулись? Form1.Print – так я распечатывал свои заявки, которые теперь хранились на компьютере, а их составление было одним удовольствием, по сравнению с заполнением руками. Потом добавил в программу конвертор единиц металла. Следует отметить, что интернета тогда у нас не было.
Со временем, когда стало необходимо наладить доступ к данным с нескольких рабочих мест, я начал искать варианты решений. Интернет уже появился, и я познакомился с настоящими базами данных. Но сервер (по примерам) поднять ума не хватило, поэтому создав dbf таблицы и выложив их в локальную сеть, я на коленке организовал корпоративную паутину. Заявки, складское хозяйство, табели рабочего времени.
Двигаясь по карьерной лестнице и развиваясь профессионально, я развивал и своё детище. У меня новые обязанности – у программы новые функции. Когда понимал, что в рамки уже не влезаю, то начинал всё заново. New project – и я использую возможность сделать что-то лучше, чем было.
Я изучил основы SQL, и три года назад программа переехала с расшаренных папок на полноценный MySQL. Два года назад программа научилась залазить в базы 1С. Год назад подружилась с Android приложениями, которые шлют ей различные данные из цеха. И много, много чего ещё. Я делал и делаю это всё один. Кто же я теперь? Ответ — на сегодня моя программа затрагивает все сферы деятельности моего предприятия. В ней есть всё.
end
Вот мы с вами и подошли к самому главному. Задайте мне любой, самый простой вопрос из области программирования. И я вам не смогу ничего ответить. Я понятия не имею, как устроены базы данных. Даже не знаю/не запоминаю, как расшифровывается SQL. Как работает поток? Эээээ. Создай класс. А что это? И так далее. С самого начала я всё делал по примерам, экспериментируя с кодом. Не совсем бездумно, но и, не вникая в те тонкости, с которыми вы (программисты) на короткой ноге, которым вы посвящаете свою жизнь.
Совсем недавно я задал себе вопрос. Могу ли я, хотя бы частично отнести себя к программистам? Или я жалкий подражатель? Программисты создают программы. Но ведь я тоже создал программу, даже целую IT вселенную в рамках своего предприятия, которой пользуются люди. C другой стороны, если вы научились лечить простуду или определять, что у человека инсульт, говорит ли это о том, что вы врач? Где та черта, переступив за которую, человек может относить себя к тому или иному профессиональному сословию?
А может дело в окружении? Для своих коллег я конечно человек с функцией программиста. А вот для вас, наверное, нет. Что это за программист, который не знает, зачем в коде строка implementation. Дело в том, что я и не хочу знать всего этого.
Кто же он, настоящий программист?
UPD: Мне не платят за программирование, это не моя деятельность, я не жалуюсь на тяжёлую судьбу современных кодеров (понятия не имею про что это). Всё это — побочное увлечение, которое помогло мне подняться выше, стать профессиональнее, сделать моё предприятие сильным и самое главное доказать себе, что человек может всё.
Комментарии (140)
Evgeny42
31.03.2017 13:32+8Для чего такие посты пишутся? Чтобы автора пожалели, похвалили, сказали что он очень умный и красивый? Я вот такого не скажу.
fastwit
31.03.2017 15:52+6Если вы прочли этот пост, заглавие которого довольно точно отражает содержание, то вам не чужд вопрос самоидентификации. Значит пишется это для вас, в том числе. А практическая польза — вещь субъективная и если нет конструктивной критики, то эмоциональная оценка никому не поможет. Софтостроительная отрасль молодая и развилась настолько стремительно, что самоидентификация отдельных личностей, так и вообще идентификация профессий внтутри нее подотстали. Такие крайние случаи дают повод задуматься о том, как относиться к менее заметным ситуациям. Я работал с компанией, в которой разработчики под мобильные приложения назывались конфигураторами, как специалисты по 1С. Так как модуль предоставляющий расчеты писался отдельной основной командой программистов (для бэкенда). А потом уже его использование обрастало UI и конфигурацией под конкретные мобильные платформы. И в какой-то момент они тоже стали задаваться вопросами самоидентификации.
А задаются люди подобными вопросам не от праздной жизни. В отрасли много технологического «расизма». Людей высмеивают и возносят за используемые технологии. Есть сообщества специалистов по определенной технологии, но кроме Хабра (в России) нет сообществ для тех, кто делает результаты. Из-за этого трудно самоидентифицироваться. Это плохо потому, что создается окружение, в котором возносится сложность, когда нужно просто делать свое дело.comerc
31.03.2017 16:36Браво! С удивлением наблюдал зашкалившую виральность собственной корявенькой заметки по теме https://habrahabr.ru/post/323460/
Кажется я понимаю, почему Минаев продал столько экземпляров повести о ненастоящее человеке.
Каждая моя попытка самоидентификации (а таковых было несколько) заканчивалась кризисом и последующим перерождением в новое качество. Полезное занятие, хотя болезненное.
Comlan
31.03.2017 16:37+2пожалели
нет
похвалили
нет
сказали что он очень умный и красивый
нет
просто было очень интересно мнение профессиональных программистовkhim
31.03.2017 17:53На самом деле всё просто. Программисты — они ведь разные. У Гугла, скажем, есть две похожие вакансии: software engineer (основаная задача: дизайн, разработка и создание программ) и application engineer (основная задача: работа с аналитиками для того, чтобы превратить требования бизнеса в технические решения).
Так вот на software engineer'а — вы и близко не тяните. На application engineer'а — вполне.MacIn
31.03.2017 19:05Тут очень зависит даже от части света. Если взять формальные требования и задачи человека, имеющего квалификацию инженера, учащегося по специальности «программное обеспечение» в России, то это будет как разработка, так и преобразование тех самых требований, потому что основная задача инженера в этом случае это как раз посмотреть, как организованы процессы на данный момент, найти изъяны, предложить и или реализовать какие-то улучшения средствами программной автоматизации.
Woit
01.04.2017 12:43Формально, если не зарабатываете этим ремеслом, то программист-любитель. Если зарабатываете — программист-профессионал. Если решили посвятить этому жизнь — Программист.
Comlan
01.04.2017 16:15А если косвенно зарабатываю этим? И не только деньги, но и уважение. Я операционно управляю предприятием оринтируясь на свою программу. А вот последний предложенный вами вариант мне понравился.
daiver19
31.03.2017 13:48+8Большинство как-то так и начинали, разница только в том, что они потом всё-таки попытались систематизировать знания. Да, вы написали программу, но что-то мне подсказывает, что это трудноподдерживаемая лапша (если не так — заранее извиняюсь). Это, в принципе, тоже вариант создания программ, но большинство продуктов разрабатываются в команде и требуют некоторого понимания теоретических основ, как минимум ради эффективной коммуникации.
comerc
31.03.2017 16:46Из моей практики. Камрад лабал поделки на Delphi 3 для бухгалтерии с невероятной скоростью ни разу не задумываясь об освобождении памяти, мотивируя тем, что ресурсов и так хватит до конца рабочего дня.
terrier
31.03.2017 17:04Это, кстати, абсолютно логично. Никого не интересует, что делает система, обеспечивающая, например, биржевые торги, когда биржевые торги закрыты. Пусть перезагружается, пусть хоть питание серверам отключают, лишь бы во время торгов все было нормально.
Так же и поставить условие работы системы для бухов — «Раз в день перезагружайте компьютер» вполне нормально.
MacIn
31.03.2017 19:07Это, конечно, несколько забавно. Но вот недавно, для специфических задач, конечно, появился GC для JVM, который просто ничего не делает, чтобы не иметь издержек на сборку, когда heap большой.
mayorovp
01.04.2017 12:11Этот GC появился там скорее как эталон для сравнения, а не для реального использования.
Comlan
01.04.2017 16:19-1Вот например. Не понимаю о чем вы пишите сейчас. Сейчас посмотрю, что такое GC и JVM. Любознательность — признак программиста?
MacIn
04.04.2017 23:26+1Потому что это относительно узкоспециальные термины из мира программирования Java. Ну, в NET тоже есть такое. Оно никак не показывает/не отрицает «программистость» человека.
MacIn
04.04.2017 23:24Разумеется, это очень специфичное применение, о чем я и написал. Но тем не менее, такое чудо есть.
Gexon
31.03.2017 13:55+1Тронут статьей, мужик молодец!
Не каждый выпускник, с корочкой программист, напишет программу охватывающую все предприятие.Elsedar
31.03.2017 14:15+2На мой взгляд, здесь влияет фактор неопытности. Опытный специалист видит весь объем работ и понимает, что для качественного выполнения нужна сильная команда. А новичок видит лишь самую вершину и просто работает над задачей, все больше погружаясь в нее, но не отступая, т.к. никогда не видит сколько еще предстоит сделать.
Что-то в духеВсе знают, что это невозможно. Но вот приходит невежда, которому это неизвестно — он-то и делает открытие.
CrazyNiger
31.03.2017 14:25-1Как старый анекдот про большой алмаз и профессиональных ювелиров.
comerc
31.03.2017 16:49Не слышал.
NeonMercury
31.03.2017 16:56+7Достался в наследство одному мужику от жутко богатой умершей тётки большой алмаз. Ну, что с ним делать? Решил пойти к ювелиру. Тот внимательно осмотрел и воскликнул:
— Это — уникальный камень! Он стоит бешенных денег! А вдруг я что-то не так сделаю, вдруг ошибусь! Нет, не возьмусь я его делать, и не уговаривайте!
Пошёл мужик к другому мастеру. Тот тоже отказался, сославшись на те же причины. Пошёл к третьему. Им оказался старый еврей Циперович. Он осмотрел алмаз и крикнул мальчику, сидевшему в углу и обрабатывающему какое-то колечко:
— Моня, мальчик мой, сделай-ка вот этот камушек!
Мужик, с испугом:
— Послушайте, как вы можете доверять вашему юному подручному?! Разве вы не знаете, что это за алмаз?! Его отказались обрабатывать самые опытные ювелиры!
— Ша, ша, любезный! Вы знаете, шо у вас за алмаз и сколько он стоит. Я знаю, шо у вас за алмаз и сколько он стоит. А Моня не знает, и он таки сделает!comerc
31.03.2017 17:00-2Я сам уговорил инвестора не тратить 15 млн. долларов на стартап, в котором был техлидом. :)
AlexMal
31.03.2017 13:57+2Желание расти и двигаться вперед. Желание постигать новое и утверждаться в уже достигнутом. Стремление решать нестандартные задачи и мыслить логически. Желание получать опыт и делиться им с другими. Желание творить… Вот признаки настоящего программиста.
Comlan
31.03.2017 19:09Согласен. Вообще это признаки любого мужчины, стремящегося к самореализации. Это у нас в природе.
smallplushbear
31.03.2017 13:57+2>>Могу ли я, хотя бы частично отнести себя к программистам?
Да. Не частично.
И не поверишь, но таких больше 50%.
А наличие диплома и владение терминологией не делает человека программистом.
tehSLy
31.03.2017 13:58+4"У меня есть фотоаппарат, я делаю снимки, которые нравятся людям, но я не знаю, как работает фотоаппарат, сколько лепестков в диафрагме моего объектива и почему из байонета виднеется зеркальце (Что такое байонет??) — могу ли я называться фотографом?"
Суть аналогии очевидна,- если ты делаешь продукт, который устраивает конечного пользователя, и при этом даже получаешь за это деньги, то КМК, ты можешь назвать себя программистом, трубочистом, кем угодно, лишь бы продукт был качественный (Правда, это понятие сильно размазано и не имеет четких границ, но думаю, мы в той или иной мере можем объективно оценить качество своего продукта).DnV
31.03.2017 20:43Правильной тут скорее будет аналогия, если фотограф не знает, например, что такое экспозиция. Получение какого-то продукта и даже успешная его продажа не делает из человека специалиста по производству. Мало того, с большой вероятностью, проблемы ещё всплывут позже.
aslepov78
31.03.2017 13:58+2Но ведь я тоже создал программу, даже целую IT вселенную в рамках своего предприятия
ох, как же мы любим себя хвалить на хабре ).
Кто же он, настоящий программист?
Да никто, нет его.comerc
31.03.2017 16:53-1Мне ближе определение "кодер". Можно еще "разработчик". Скромность украшает.
echi
31.03.2017 14:03+3Архитектор-любитель может спроектировать себе дачу, применить лучшие и современные подходы. Профессиональный архитектор может случайно построить такой же дом.
Наблюдатель скажет — я не могу понять, кто это сделал. Предположим, что рынок домиков рухнул. В таком случае любитель не может прыгнуть на ступеньку выше, проектировать небоскребы. Архитектор-профессионал доучится, освежит знания и начнет зарабатывать на проектах небоскребов. Мало того, он сможет в команде разрабатывать санузлы, парковки, внешнюю оболочку, что угодно.
Сможет ли ваша программа быть поставлена на несколько предприятий? Продана как продукт и отдана на поддержку группе разработчиков? Возможно ли как-то оценить качество кода?
Профессионал существует в рамках рынка, если ваш рынок — это единственное предприятие, то вы профессионал в решении своих задач.
PapaBubaDiop
31.03.2017 14:12-13Программист — который свои проекты в GitHub выкладывает. Остальные — жлобы.
MacIn
31.03.2017 19:08А если я листинги распечатываю и на забор клею, но вот гитхаба нет — это считается?
PapaBubaDiop
31.03.2017 19:14-5Нет. В этом случае Вы — типограф и маляр. Я, кстати, жлоб, как и большинство)
JekaMas
31.03.2017 19:16Ваш комментарий заставил меня грустно улыбнуться.
Не понимаю минусов по отношению к нему.PapaBubaDiop
31.03.2017 19:38+1На Хабре серьезные пацаны, иронию не любят в пятницу 31. 31 — 13 в польской нотации)
alligator_one
31.03.2017 14:49-3Интересно, сможет ли автор пройти собеседование на должность программиста на открытом рынке труда? имхо это и есть ответ на поставленный в заголовке вопрос.
tentakle
31.03.2017 14:56Уж что что, а оценка HRом подходит или не подходит человек на должность — одна из самых субъективных оценок.
Dreyk
31.03.2017 15:03-1почему HRом? как на счет непосредственного начальника? или вы думаете, что во всех конторах исключительно от HRa зависит, возьмут человека на работу или нет
tentakle
31.03.2017 15:37Во-первых, собеседование с непосредственным начальником в крупной организации нынче редкость. Разделение задачи и все такое.
Во-вторых, это никак не отменяет факта субъективности и на хабре это уже не раз обсуждалось. Человеческий фактор всегда играет свою роль. Как объяснить такие ситуации, когда по одной вакансии человек собеседование не проходит, а по другой точно такой же проходит? За время, которое прошло между собеседованиями человек успел вырасти как специалист?
Woit
01.04.2017 12:50+1HR:
— Не-не, вы не знаете и 10% процентов от того, что должен знать программист, вы нам не подходите. Сортировать пузырьком не умеете, переменные местами поменять — тоже. Досвидос.
Ведущий:
— Ого, ничего не зная сам написал? По примерам из книжки? А быстро обучаешься? А вот такую задачу за сколько решишь? Велкам.
nckma
31.03.2017 15:24+9Я вот 25 лет работаю программистом C/C++ и не уверен пройду ли я собеседование хоть на какую-то должность программиста и смогу ли порешать их тестовые задачи. Вот даже тесты http://www.quizful.net/test для junior иногда не могу пройти.
Comlan
31.03.2017 16:43-1Посетители клуба «Рыбаки», знают друг друга по клубу «Анонимные алкоголики» )
Значит всё таки есть такие как мы.
ripandtear
31.03.2017 16:20Если автор после того, как покинет свое текущее место работы попадет на собеседование в условное предприятие/условную контору, где программистов нет или у них примерно такой же уровень знаний как у автора, то пройдет. Проф-пригодность проверить будет некому.
Comlan
31.03.2017 16:33сможет ли автор пройти собеседование на должность программиста на открытом рынке труда?
нет
почему? уже объяснил в своей заметке
умение составить запрос с LEFT JOIN мне не поможет
fastwit
31.03.2017 16:03+1Вы программист. Настоящий программист. Вы написали рабочую программу на языке программирования — это делает вас программистом. Хороший ли вы программист — это другой вопрос. Сможете ли вы работать программистом в специализированной софтостроительной компании — это еще один вопрос, но скорее всего сможете, не во всех, но все же.
Если у вас нет желания развиваться в этом направлении — это ваш выбор. Однако, замечу, что создание программного продукта — это не прогулка в парке и нужно иметь достаточную мотивацию для этого. Поэтому задайте себе честный вопрос: а может все-таки вы хотели бы быть хорошим программистом и заниматься именно этим?Comlan
31.03.2017 16:31а может все-таки вы хотели бы быть хорошим программистом и заниматься именно этим?
нет
теперь я могу нанять себе людей, которые хотят быть хорошими программистами и заниматься этим16tomatotonns
31.03.2017 23:42Рыбак — тот кто рыбачит, тот кто охотится — охотник.
Программист — тот кто пишет программы. Пока пишет программы — программист. Пока управляет другими программистами — менеджер или глава проекта. Не надо цепляться за слово или ярлык, это всё изменяется в течение дня. Но при этом невозможно найти «настоящего программиста», как и «настоящего мужчину», потому что тут только повод для спекуляций.
romanegunkov
31.03.2017 16:06Умение пользоваться толковым словарем, навык не обязательный, но полезный.
pro·gram·mer\?pro-?gra-m?r, -gr?-\
noun
: a person who creates computer programs
Full Definition
: one that programs: as
a: a person who prepares and tests programs for devices (as computers)
b: one that programs a mechanism
c: one that prepares an instructional program
d: a person who plans or prepares entertainment programs Variants: less commonly pro·gram·er
First use: circa 1889
kumaxim
31.03.2017 16:20+2Любое корпоративное приложение может находиться только в двух состояниях: оно либо решает задачу компании либо нет. Третьего я не знаю.
Программа автора решает задачу компании, на сколько я смог понять.
Если автору что-то нужно будет дописать, я уверен что он это сможет сделать.
Вопрос является ли он профессиональным программистом? Лично я думаю что да, т.к. он написал программу, которая была интегрирована в бизнес-процесс компании и успешно эксплуатируется.
Можно ли ее дальше расширять? Сможет ли ее поддерживать другой программист? Сможет ли эта программа использоваться за пределами компании автора? Ответить на все это сможет только сам автор.Comlan
31.03.2017 16:29+2Можно ли ее дальше расширять?
да
Сможет ли ее поддерживать другой программист?
да
Сможет ли эта программа использоваться за пределами компании автора?
в таком виде нет
ssz84
31.03.2017 16:20Есть куча гпту, техникумов и вузов, чьи выпускники бьют себя пяткой в грудь крича «Я программист» и им никто этого не запрещает, при этом о программировании они не знают ничего даже понаслышке
basili4
31.03.2017 16:42Есть отличное слово «Говнокодер» Некоторые не далекие личности обижаются когда их так называют.
По моему тут ничего обидного нет. Когда человек делает что бы работало, но при этом кроме него в его коде разобраться не кто не может. Что бы, что то изменить нужно жмакать «new Project» то он Говнокодер.Comlan
31.03.2017 16:46Да, знаком с вашим сленгом. Не знаю, сможет ли кто-нибудь разобраться в моём коде или нет. Но, на самом деле это не очень важно для меня.
DnV
31.03.2017 21:17Если некоторые личности обижаются — значит они претендуют называться программистами, что в этом недалёкого? Код не просто же так пишется читаемым и расширяемым: есть опасность, что иначе работать он будет плохо.
gFanis
03.04.2017 07:11+1И Вы тоже не обижайтесь…
По поводу самоидентификации — Вы перечитайте все свои комменты в хабре (их 36, если не ошибаюсь), там нехорошо пахнет (вроде shit, однако)
user4000
03.04.2017 07:12Нельзя с вами согласиться.
У любого программного продукта есть конкретные граничные условия эксплуатации и определённая степень гибкости и при желании можно выставить такие требования, что не останется ничего другого, как жмакнуть «New Project».
degs
31.03.2017 16:54Я тоже не знаю зачем в коде строка implementation, однако я — программист. Наверное и вы тоже тогда? Успокойтесь и пишите код, самоидентификация отдельно а программирование отдельно.
basili4
31.03.2017 17:48+1>Я тоже не знаю зачем в коде строка implementation, однако я — программист
Как мила Ваша наивность.
У меня сынок тоже порой залезает на водительское кресло в машине держится за руль и такой кричит мне
— «Папа, папа смотри я гонщик».
Гонщик сынок говорю я.SamVimes
31.03.2017 18:17Ну, слушайте, я вот знаю, допустим, несколько языков программирования, и ни в одном из них нет ключевого слова implementation (если, конечно, автор не перепутал с implements). Хотя я безусловно догадался бы что это значит, если бы увидел =)
Comlan
31.03.2017 18:27+1Ничего не перепутал. Delphi.
SamVimes
31.03.2017 18:35А, ну вот Delphi я как раз не знаю =)
khim
31.03.2017 19:43А к чему тогда ваш комментарий к статье в которой есть строка «Так я познакомился с Delphi7»?
Впрочем ключевое слово implementation ещё в Turbo Pascal 4.0 появилось, так что конкретно Delphi знать даже и необязательно…SamVimes
01.04.2017 12:17Ну, так получилось, что с паскалем тоже не знаком. Как-то больше по С-подобным (джавы, свифты и прочие с ними)
Comlan
31.03.2017 18:31+2Думаю, Хакинен не знает, какая посадка подшипников на вал у него в машине. Однако он гонщик. Ваше сравнение не совсем к месту.
degs
31.03.2017 18:53+1Секундочку, вы правда считаете что если кто-то не знает Вашего любимого языка то он совершенно точно — не программист?
Я не для того чтобы спорить, просто уточнить хочу, вы правда так думаете?khim
31.03.2017 19:48Можно я цитату поправлю, а?
Секундочку, вы правда считаете что если кто-то не знает
И таки да — я правда так думаю. Это вот как раз про них ведь написано если достаточно долго месить чан с перловой кашей, в синтаксическом мусоре можно рано или поздно узреть лик Ларри Уолла.Вашего любимого языкаязыка программирования, на котором он пишет программы, то он совершенно точно — не программист?
Я не для того чтобы спорить, просто уточнить хочу, вы правда так думаете?
К сожалению подобных программистов больше, чем хотелось бы. И не все они создают поделки, которыми пользуются только у них в компании…
comerc
31.03.2017 17:12Лучший разработчик, которого принял на работу был самоучкой со скромным набором инструментов. После автомобильной аварии проблемы с моторикой и речью, но любящая жена не бросила. Мотивация — хватит на пятерых.
worldmind
31.03.2017 18:39+1Это называется прикладной программист — человек который решает конечную задачу.
Чем дальше развивается ИТ отрасль, тем меньше знаний требуется для использования программерских инструментов и это правильно, растёт уровень абстракции, приближаемся к тому чтобы говорить с компьютером на языке как можно более близком к человеческому (DSL навроде 1C). Глубокие знания того как оно работает внутри теперь нужны в основном системным программистам, которые создают эти инструменты. Просто в отрасли, со времён когда все программисты были системными, осталось мнение, что все должны знать алгоритмы сортировок и т.п.
Другое дело, как заметили выше, быть хорошим программистом — хороший прикладной программист должен писать понятный и расширяемый код, понятный это значит как можно ближе к человеческому языку в данной предметной области, а расширяемый это значит позволяющий добавить практически любой новый функционал без полной переделки или без копипаста и иных костылей порождающих ошибки в будущем.
Хотя знание того как оно работает внутри полезно для хорошего специалиста из-за протекающих абстракций, но, во-первых, знание это не обязательно должны быть слишком детальным, а во-вторых, можно быть прикладным программистом и без этих знаний и это тоже востребовано.
sbnur
31.03.2017 19:13+2Бравирование невежеством — это признак воинствующего дилетанта
Профессионал демонстрирует вежество или стремление к нему
В первом случае он конченный профессионал (в смысле final), в втором развивающийся (в смысле developer).
Для сведения невежество — это липкое вонючее болото, а вежество — прозрачная до ясности высотоComlan
31.03.2017 20:22Подставлю ваши переменные в ваш код.
Бравирование липким вонючим болотом — это признак дилетанта. При всей своей завышеной самокритичности, не вижу как применить это к себе.sbnur
31.03.2017 20:29Есть казахская пословица (привожу на русском)
Когда два мудреца спорят — их слова, как горы, высоки.
Когда мудрец с дураком спорит — они на врагов похожию
Когда два дурака спорят — ничего не меняется.
Думаю вы сделаете удобную для себя подстановку (я же свою)
Comlan
31.03.2017 21:36Какой уж я вам враг. Да и на мудреца я не тяну. А вы под 3-й вариант не подходите. Мораль. Народная мудрость, она в ауле хороша. Ведь не каждая баба коня остановит.
drafterleo
01.04.2017 00:47Что это за программист, который не знает, зачем в коде строка implementation… я и не хочу знать всего этого
Вот прямо-таки совсем неинтересно? :) Кстати, чего-то подобного (модулей) очень не хватает в C++.Comlan
01.04.2017 05:18Вы раскусили меня. Я знаю пару английских слов. Поэтому implementation совсем не наскальная надпись для меня. Да и перед написанием публикации я ходил по вашей ссылке. Этот принцип я использую везде. Беру/узнаю/изучаю/пробую только то, что мне нужно конкретно сейчас. Это позволяет невероятно расширять кругозор, не засоряя его.
drafterleo
01.04.2017 13:22-1Это конкретно-операционный подход. На ступеньку ниже магическое мышление (культ карго). Уровнем выше — формальное оперирование (создание моделей исходя из понимания общих принципов с учётом перспективы развития). Насколько я понял, Ваши задачи и технологическая среда, в которой работают Ваши решения, позволяют оставаться в рамках конкретно-операционного подхода, т.е. вполне хватает силового, горизонтально-кругозорного расширения (грубо говоря, школьнику третьего класса проще посчитать площадь треугольника по квадратикам на миллиметровке, чем вникать в геометрию Евклида, а такому же школьнику постарше — с хорошей памятью — проще запомнить формулы, чем разбираться, откуда и как они выводятся). Хотя, даже по тексту статьи видно, что Ваше приложение потихоньку, на ощупь выкарабкивалось из горизонтального растекания (Excel -> Delphi + dbf -> MySql), пару раз перерождаясь в новом качестве. Следующий этап — удалённый доступ, распределённая аллокация, микросервисы :).
Comlan
03.04.2017 07:48+1Следующий этап — удалённый доступ
пока не вижу необходимости
распределённая аллокация
о таком вообще не слышал, прочитал, перевариваю
микросервисы
ушёл от этого, не прижилось, не удобно в рамках моего предприятия
mayorovp
04.04.2017 08:46+1В целом с вами согласен, но вот со следующим этапом вы как-то хватили лишнего… Микросервисы — это архитектура для бакенда, а тут еще я не увидел упоминаний о разделении мега-программы на клиент и сервер!
Следующим этапом тут должно стать именно это разделение, которое позволит держать оперативные данные в оперативной же памяти, а не обращаться к общей базе за каждый чихом.
Comlan
04.04.2017 08:55а не обращаться к общей базе за каждый чихом
А если это не играет особой роли, если система справляется?
У нас около 20 раб мест (производство, служба снабжения, бухгалтерия, КТО, менеджеры).
У каждого клиент обращается к MySQL серверу, за каждым чихом.
Наблюдаю за всем этим и не вижу пока никаких проблем.
Но видимо где-то есть предел развития, после которого мне придётся воспользоваться вашими наводками. Спасибо вам за советы.mayorovp
04.04.2017 09:01+1Тут предел не столько в объемах информации (уж с этим-то любая нормальная СУБД справится, если схему нарисовали правильно и нужные индексы развесили) — а в отзывчивости интерфейса. Пока программа работает в парадигме "загрузить данные — отредактировать — сохранить" — проблем с СУБД нет.
Но если появляется задача реагирования на события или оперативного мониторинга каких-либо показателей — то СУБД внезапно оказывается очень медленной средой передачи данных.
Comlan
04.04.2017 09:10+1реагирования на события или оперативного мониторинга
Да, я держу на заметке этот момент. В последней версии программы увлёкся созданием виджетов для рабочего стола (см. картинку в публикации). Раз в 30/60 сек они обращаются к базам SQL запросами за актуальной информацией и переварив её выдают текущее состояние дел. Теперь я понял про какой развитие вы говорите.
Daniro_San
01.04.2017 04:10Программиста определяют написанные им программы.
Вы — самый настоящий программист.
А по поводу незнания некоторых вещей, так целая куча программистов постоянно что-то спрашивает на StackOverflowComlan
01.04.2017 16:23Здесь есть мнение, если программа здорово справляется с тем, для чего она создана, но написана "говнокодом", то это не считается. Значит человек не програмист.
Daniro_San
01.04.2017 16:27Ох, да забейте вы на снобизм и самовозвышение некоторых товарищей.
Видели бы вы исходники некоторых популярных продуктов, WordPress например.Comlan
03.04.2017 07:43Исходники не видел/не смотрел, а вот продуктом довелось воспользоваться. Мне, как обычному пользователю понравилось, ощущение, что сделано для людей, всё просто (не могу сказать того же о Bitrix).
mayorovp
04.04.2017 08:51Нет такого мнения. Есть мнение что говнокод:
- является источником багов (увеличивает цену отладки и тестирования);
- увеличивает цену поддержки программы.
Если программа уже отлажена, протестирована, работает и не требует доработок — никому не интересно что там внутри.
Но тут есть две тонкости.
- говнокод очень редко находится в состоянии "отлажено и не требует доработок";
- выкладывать говнокод в открытый доступ — дурной тон, потому что сама идея открытого кода подразумевает доработки.
khim
04.04.2017 19:37На самом деле вы упускаете из виду один весьма принципиальный момент: пока программа разрабатывается одним человеком — она вполне может содержать в себе кучу говнокода и при этом вполне себе нормально работать и модифицироваться. Ну просто потому что её разные формочки будут напрямую лазать в базу данных и там всё править без «всяких протоколов и схем», но так как это писалось одним человеком — то это будет сделано всегда одинаково.
А вот как только изменения туда начинать независимо вносить человек 10… вот тут-то все «видеоэффекты» и начнутся.
fpinger
01.04.2017 08:27А насколько предприятие зависит от вашей разработки?
И сможет ли всё это работать и развиваться без вас?Comlan
01.04.2017 09:19+1В ней вся жизнь предприятия. Она везде. На нее подсажено 90%. Остальные 10% — 1С. Если ее вдруг не станет, для ведения бизнеса остануться ручка, бумага и Excel. Без меня работать будет. Нужно только за базами данных ухаживать. Развиваться без меня — нет.
VYakushev
01.04.2017 14:57-1По-моему, именно так в эпоху развития Linux понимали пользователя компьютера. Использует софт, а, если чего-то то не хватает, то в консоли соединяет выводы нескольких комманд, чтобы получить нужный результат. А, если этого не хватает, то открывает Emacs и решает задачу программно.
Современные программы сделали из пользователей потребителей-кнопкодавов, а раньше не было так.
Считаю, что программист это значительно больше, чем то что описал автор. Мой отец сам себе построил дом, но от этого он не стал строителям. И любой строитель из тех что я знаю, говорит о том какие ужасные решения заложены моим отцом при постройке. Сейчас дом выполняет свои функции, но лет через 5 начнутся проблемы. А лет через 10 будет проще и дешевле снести и всё построить заново. А может, если не хватит ресурсов, придётся жить и мучиться. Именно поэтому, — насколько качественно и гибко твоё решение со временем, определяет тебя как профессионала, человека профессии, — мой отец не строитель, а автор не программист. Но молодец и заслуживает уважения.
Comlan
01.04.2017 16:31А хрущевки создали строители или нет? Вроде сносить собираются. А зачем Microsoft выпускает новые ОС? Неужели Win98 не гибко и не качественно? А ведь в 98 было все иначе. Сейчас легче быть профессионалом. Сейчас доступны знания. Я например смогу построить дом сам. Мне только проект купить.
VYakushev
01.04.2017 17:41Хрущевки отстояли 60 лет, и ещё бы простояли. Но в их фундаменте не заложена достройка этажей. Да и эту аналогию считаю некорректной.
А с Windows мы видим как раз не переписывание заново, а развитие софта. А это возможно потому, что архитектура спроектирована грамотно и достаточно гибка для роста.
Comlan
01.04.2017 18:45Невозможна достройка этажей? А где тогда здесь гибкость? Но ведь строили их строители. Что касается моей программы, то за более чем 10 переписывал ее около 4 раз. И с каждым разом новая версия живет все дольше и дольше. Поэтому озвученные вами принципы, все более мне близки. Приближаюсь к постройке своего дома. А ваш отец заслуживает уважения, семейный дом — это великое достижение.
khim
01.04.2017 20:48+1Невозможна достройка этажей? А где тогда здесь гибкость?
Что заказали — то и построили. Почему у аэропорта Шереметьева столько терминалов? А потому что в своё время решили экномию устроить и выбрали проект «подешевше» — но без расширяемости. То же самое — и с «хрущёвками».
В программировании мы можем себе позволить устраивать «гибкость» потому что современные компьютеры — чудовичщо, невероятно, мощны. Какая-нибудь Undertale имеет графику, сравнимую с Commander Keenом — но требует на три порядка более мощного компьютера. Да-да, не «в три раза более мощного компьютера», а «на три порядка (то есть в тысячу раз) более мощного компьютера».
У производителей хрущевок такого запаса, как бы, не было…
VYakushev
01.04.2017 18:58Когда-то я рисовал графику в Paint. А теперь использую Photoshop и Sketch. И проблема не в том, что код Paint не гибок, а в том что:
- У него другая сфера применения
- Нерационально развивать его до уровня Photoshop.
Также и с хрущевками. Есть много способов усилить фундамент, нарастить его в ширь, чтобы увеличить плоскость основания и достроить этажи. Но это нерационально и дешевле снести и построить новые дома.
Может это ваш случай, но, чаще всего в разработке ПО полное переписывание софта — это что-то из ряда катастрофы.
khim
01.04.2017 20:41+2Может это ваш случай, но, чаще всего в разработке ПО полное переписывание софта — это что-то из ряда катастрофы.
Ничего подобного. Любой «живой» софт — переписывается неоднократно, но… по частям. А катастрофа — это попытка снести всё к чертям собачьим и сделать всё с нуля.
Создание современных программных систем лучше всего сравнить не со строительством дома (где, как правило, один архитектор и всё делается по типичной каскадной модели), а со строительством города — и людей, в общем-то, задействовано сравнимое количество и проблемы те же.
Тут у нас новая магистраль, но… вьезды-выезды пока недоделаны, потому весь трафик пошел в обьезд. А тут — новый монорельс, но поскольку пропускной спосодности не хватает, то под ним ездит автобус. И так далее и тому подобное.
А дальше — вопрос настоящести/ненастоящести программиста смешон: да — есть архитекторы, которые могут грамотно спроектировать микрорайон, а есть такие, что не могут. И что — те, кто не могут быть Главным Архитектором Москвы — уже ненастоящие, что ли? А люди без образования, строившие Собор Василия Блаженного — они архитекторы или нет?
По моему не в названии дело. Главное — понимать чего ты можешь, чего нет. И не браться за строительство многокилометрового подвесного моста если у тебя опыта — только строительство семейного домика…Comlan
01.04.2017 22:44+1Вопрос настоящести не смешон. Знаете, я внимательно вчитываюсь в каждый ответ, оставленный всеми вами. И теперь я точно знаю. Приносишь пользу людям — ты настоящий. Программист, инженер, архитектор и человек.
Comlan
03.04.2017 07:38Катастрофы для кого? Для того, кто вкладывал деньги? Или самого исполнителя?
Начинать с нуля — прерогатива смелых и не только в разработке ПО.
Ведь каждый молодой специалист/человек когда-то начинает с нуля.
А с годами рисковать хочется всё меньше и меньше.khim
03.04.2017 12:30+1Катастрофы для кого? Для того, кто вкладывал деньги? Или самого исполнителя?
Для того, кто это затеял, в большинстве случаев. Это настолько банальная вещь, что уже как бы и не обсуждается. Вот тут перевод статьи на эту тему.
Но тут — аналогия с городом проявляется черезвычайно выпукло: снести дом и отстроить на его месте другой — нет проблем. А снести полгорода и заново проложить все коммуникации и дороги… редко когда кончается добром.
Проект, сделанный одним человеком, как правило, переписывается «с нуля» без проблем. И получается только лучше. А вот большие проекты — нет. И понятно почему: если проект переписывает тот человек, который делал его изначально — то он реально помнит все крупные грабли и может их избежать. А если в проекте участвует человек 100 — то такого понимания нет, а потери от переписывания — есть.
VYakushev
01.04.2017 20:52Как раз о полном перерисывании я и говорю. А, то что вы описали, это и есть развитие продукта.
Yurik17
02.04.2017 03:18Я закончил специальность оптика (оптические системы и приборы), но еще во время учебы меня взяли на профильное предприятие программистом, за это время «научился» программировать на ассеблере, даже местами для ПЛИС (ни одного диплома нет, так что это пустые слова), в свободное время помогаю другу разрабатывать правила для ДнД и сам же пишу компьютерную игру по этим правилам (моделируя нужные модели в 3ds Max)…
Так вот, к чему я. Определяться в жизни? А зачем?Comlan
03.04.2017 07:32Ваша точка зрения имеет место быть. Не всем требуется искать смысл жизни. Некоторые просто наслаждаются самой жизнью.
Zoomerman
03.04.2017 07:13Программист — человек, создающий программы.
Программист выстраивает цепочку событий, используя доступное множество ресурсов.
Программы бывают компьютерные, музыкальные, поведенческие, обучающие и т.д.
Программа начинает создаваться в тот момент, когда человек определяет начальную и конечную точки процесса.
И если менеджер говорит «у меня есть товар, хочу его поменять на деньги» — он превращается в программиста и строит алгоритм этого процесса.
Для меня программист — это не каста и не профессия. Программист — это состояние ума.Comlan
03.04.2017 07:30Если совсем подключить философию бытия, то вы правы. Возможно такого ответа как ваш, мне и не хватало. Я согласен с вами.
Lyuba23
03.04.2017 07:13Проработала разработчиком ПО на крупном предприятии 13 лет. Иногда мне кажется- я с этим родилась. Хотя я и себе самой не всегда могу объяснить… как это, но программы же созданные мной существуют же. Это как дар писать стихи, только математическими символами.
Comlan
03.04.2017 07:28Мне кажется, что писать стихи сложнее, а хорошие стихи — удел избранных. Попробуйте написать что-нибудь. А вообще приятно увидеть женское мнение здесь.
pset
03.04.2017 07:13По моему вы программист больше чем многие) Не каждый выпускник вуза может программировать, и не каждый кто работает программистом может программировать)
uploadfor
03.04.2017 07:13Никто за шквалом критики почему-то не заметил, что автор, не мудрствуя лукаво и не будучи семи пядей во лбу, с помощью элементарного объектно-ориентированного программирования создал самый что ни на есть яркий пример именно прикладной программы. И что программа эта, несмотря на всю её кажущуюся простоту и бесполезность, судя по всему, отлично решает свои задачи и сильно помогает в организации работы, пусть и в рамках всего лишь одного предприятия. Что же ещё бизнесу нужно, если не «быстро, просто, эффективно»?
Comlan
03.04.2017 07:16Зря вы так, нет здесь особо критики. Все по делу.
автор, не мудрствуя лукаво и не будучи семи пядей во лбу
за это конечно спасибоuploadfor
03.04.2017 10:07за это конечно спасибо
Прошу прощения, если я неправильно понял Ваши слова в Вашей же статье:
Задайте мне любой, самый простой вопрос из области программирования. И я вам не смогу ничего ответить.
Comlan
03.04.2017 10:14Да нет, всё хорошо. Я просто не успел переключиться, когда писал ответ. Вы имели ввиду меня как программиста, а не как человека. Программист не семи пядей во лбу, да это про меня.
Swiftarrow7
03.04.2017 07:13Как по мне так, программист — это обучаемый человек, который в своей работе использует компьютер с инструментом (будет немного узко), называемый язык программирования! Так вот, вы скорее программист-любитель) Обычный такой) Ленивый) Человек, которые готов ради того, чтобы полениться: изучить язык и среду разработки, написать программу и всё с помощью неё автоматизировать =)
Comlan
03.04.2017 07:24Только вы обратили внимание на слово «лень». А это был один из ключевых моментов в моей заметке.
KoToSveen
03.04.2017 07:13Склоняюсь считать автора статьи инженером, которому в руки дали инструмент автоматизации Delphi7.
Comlan
03.04.2017 07:20Из всех комментаторов, вы ближе всех, кто прочувствовал мою ситуацию.
Только не дали инструмент. Я сам беру.KoToSveen
03.04.2017 13:47Ближе всех, т.к. я тоже инженер-конструктор, но занимаюсь программированием. Программистом себя не считаю, не вдаюсь во многие тонкости типа implementation и т.д. Но периодически приходится кодить на Delphi, vb6, c++, php, sql (не знаю, относить его к программированию или нет?).
drafterleo
03.04.2017 15:50У меня в трудовом договоре написано «инженер-программист» :). Кстати, по этой логике получается, что «чистый» программист — это тот, кто разрабатывает программно-инструментальный софт (компиляторы-интерпретаторы, IDE, фреймворки и т.п.).
JekaMas
На мой взгляд все просто. Зарабатываешь программированием? Если да, то «профессиональный программист». Иначе «программист любитель». Ничего нового.
R0V3R
В данном случае, автору могли не платить за созданную им программу, но это могло сказаться на продвижении по службе и поднять материальное благополучие. Он полупрофессиональный программист?)
JekaMas
В данном случае, он явно ей зарабатывает. Значит, профессиональный программист.
Comlan
не платили, не заставляли
32bit_me
Причём к уровню квалификации это не имеет прямого отношения.
HandleX
В точку! «Многим нравится заниматься сексом, но немногие решаются заниматься им профессионально!» ;)