Програмиране на мислене или писане, мислене и писане, член

„Ако не знаете как да мислите, може да изглежда, че програмирането е просто въвеждане на команди на клавиатурата“.

Уорд Кънингам, от предговора към Прагматичния програмист


Разработка на софтуер - проектиране, решаване на проблеми, измисляне на нови оптимални алгоритми, изучаване на нов програмен език, рефакторинг на объркан код и превръщането му в нещо по-леко и красиво - всичко това е тежка умствена работа.

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

Когато програмирането просто пише код, а когато не е

Но когато разработвате софтуер, трябва да решавате други проблеми, които изискват не толкова психически стрес, колкото набор от цели листове код. Когато вече е ясно какво трябва да се направи и как да се направи, остава само да въведете ръчно много код, необходим за изпълнение на задачата. Правили сте това и преди и просто трябва да го направите отново: друг скрипт, друг екран, друг отчет и т.н. В същото време някой вече е свършил по-голямата част от умствената работа за вас: каркасите са подготвени, вие знаете точно как трябва да изглежда и работи приложението, как е организиран потокът от задачи в него, API е описан подробно в спецификации. Просто трябва да напишете всичко това и, ако е възможно, да направите по-малко грешки.

Отстраняването на грешки е мислене. Поправянето на грешка и гарантирането, че ревизията е тествана и доставена, е основно въвеждане. Проектирането и ранното разработване, техническото изследване за утвърждаване на качеството на технологиите, развитието на архитектурата е психически стресираща работа. Подготовката на третия, четвъртия или стотния екран, както и всеки отчет, е писане на код. Потребителски опит (UX) Дизайн и прототипиране: Мислене. Поддръжка за планиране на CRUD операции и екрани за конфигуриране: набор от кодове. Раждането на страхотна идея за ново мобилно приложение: мислене. Неговото изпълнение е набор от код. Решаването на често срещани бизнес проблеми изисква много код за писане. Когато оптимизирате бизнес процесите на ниво код, трябва да мислите много и усърдно.
Сред нашите колеги има такива, които мислят много и такива, които пишат предимно код. Работата е там, че те се занимават с коренно различна работа и следователно те също трябва да бъдат управлявани по различни начини.

Понякога програмирането е просто въвеждане на код

„Първо, ние сме наборници и едва след това програмисти“.

Много бизнес приложения по своята същност са плитки. Те имат много таблици с бази данни, файлове с много информационни елементи, много екрани и отчети, които много приличат на други екрани и отчети, огромно количество интеграция работи с куп полета, които трябва да се показват между различни точки в програмата. И накрая, има определени ограничения, необходими за спазване на разпоредбите, както и оперативни зависимости, за които трябва да се погрижи. Дълги списъци с функционални изисквания, тонове въпроси, на които да отговорите и да сте сигурни, че всички разбират правилно изискванията, тонове подробности, които да запомните и проследите.

Банкиране, застраховане, счетоводство, финансово отчитане и фактуриране, управление на запасите и ERP системи (планиране на корпоративни ресурси), CRM системи (управление на връзките с клиенти), приложения за бек офис и други счетоводни и счетоводни системи - толкова разнообразен е този бизнес софтуер. Както и много уеб портали и онлайн магазини. Не забравяйте за техническата поддръжка; актуализации на платформи и работа по системна интеграция, промени в правила и данъчни промени - всичко това е рутинна старателна работа.

Да предположим, че изграждате къща, мост, търговска аркада или може би ремонтирате такава конструкция. Това са големи, често нарастващи проблеми, които могат да бъдат скъпи за решаване. Трябва да подготвите много документация (въведете текста). Но такива задачи вече са били изпълнявани много пъти преди; обикновено тази работа включва решаване на проблеми с помощта на добре разработени модели, добре познати инструменти и методологии.

Когато дизайнът приключи, основната работа се свежда до разбиране на всички детайли и способността да се борави с тях, както и управление на хора и координиране на усилията - тоест писане на готовия код. Това е класически пример за управление на проекти: бюджетиране, планиране, проследяване на разходите и промените и ефективно делегиране на задачи. Основните аспекти на работата са логистика, мащабиране, последователност и ефективност - така че целият проект да не "излиза извън релсите".

Има и други задачи: проектиране на игрален механизъм, алгоритъм за търговия, логистична схема, онлайн система за управление на риска или, например, оптимизиране на системите за контрол в реално време. В такива случаи програмистът се занимава не толкова с въвеждане на код, колкото с умствена работа. Тези системи имат много високи нетехнически изисквания (мащабируемост, производителност в реално време, надеждност, цялост на данните и точност) и имат сложна логика. Независимо от това, такива програми се използват за решаване на ограничен кръг от проблеми. Няколко умни хора могат да разберат подобни проблеми и да намерят решения за повечето от тях. В такива случаи трябва също да въведете определено количество код. По-специално, това се отнася за рамкиране на код, полезност и лепило код, но по-голямата част от работата обикновено се извършва в изненадващо малко код. За да се убедите в това, е достатъчно да отхвърлите всички неуспешни експерименти и прототипи.