Як ви справляєтесь з динамічним характером розробки програмного забезпечення високого рівня? [зачинено]


25

Я вважаю себе розробником програмного забезпечення високого рівня. Мені подобається багато читати, і це мені допомогло протягом моєї кар’єри. Я думаю, що мені добре.

Зараз я проводжу багато часу, вивчаючи нові речі. Я зараз не смоктаю, коли справа доходить до написання коду, але я збираюся створити сім'ю, і я регулярно бачу багатьох людей похилого віку з досвідом 14-15 років, які - оскільки вони скорочують навчання нових речей - тепер смокчуть при програмуванні. Вони надихали фігури в якийсь момент часу, але їх більше немає.

Ви можете стверджувати, що основи ніколи не змінюються, але, схоже, це має значення, коли ви кодуєте на Delphi протягом 10 років і раптом усі користуються .NET рамкою. Це правда, що досвідченому розробнику знадобиться менше часу для вивчення нового фреймворку, але це все ж вимагає часу та зусиль.

Яким чином розробник програмного забезпечення керує потребами роботи, зберігаючи при цьому зосередження уваги на речах, які обов'язково виводять вас з роботи, як, наприклад, створення сім'ї?


1
Що, ти не думаєш, що ти можеш керувати Сингулярністю? Будь-який хороший розробник може! - жартуйте, не слухайте мене ...
Клаїм

Відповіді:


30

Щось, що ви сказали, виділялося: "Я регулярно бачу багатьох людей похилого віку зі стажем 14-15 років ... вони зараз смокчуть програмування". Це досить широкий штрих пензля, який ви використовуєте для малювання людей із досвідом. Я хотів би зазначити кілька речей, які слід врахувати:

  • Молодші / менш досвідчені практики люблять вказувати на те, як їх старші люди не роблять X або Y, коли вони не розуміють, що досвід показав, що це були погані ідеї. Але, схоже, кожне нове покоління практикуючих хоче повторити ці помилки. Це явище є загальним для всіх професій, не лише програмування.
  • Не всі люди, які працюють кілька років, є досвідченими, зрілими чи хорошими. Щоб стати кращим, потрібні зусилля. Багато зусиль, докладених у молодшій перспективі, створює хороший досвід, з якого можна скористатися пізніше.

Можливо, люди, яких ви посилаєтесь, ніколи не були добрими. Можливо, вони дивляться на тебе, думаючи, чому ти наполягаєш на те, щоб робити справи важким шляхом?

Однак правда, що коли ви створюєте сім'ю, у вас є набагато менше часу, щоб не відставати від нових іграшок. У вас насправді менше часу, коли ваші діти старші, ніж у вас, коли вони молодші. Іграшки не роблять вас кращим програмістом. Ні інструменти не роблять. Те, що робить тебе хорошим, - це можливість розбити проблеми та створити робоче рішення. Те, що робить тебе чудовим, - це вміння навчити інших бути добрими. Ось де досвід починає світитися.


1
Ви хочете детальніше розглянути питання про нижній план? Можливо, вам не сподобається те, що я сказав, але це правда.
Берин Лорич

4
Сприйняття , що у нього є велика частина його загадки. Все, що я робив, було безпосередньо боротися з цим сприйняттям. Коротше кажучи, я більше переймаюся переслідуванням інструменту, ніж я його здатністю стати досвідченим добрим розробником. Він навіть може стати великим . Це не відбудеться, якщо весь його досвід говорить про те, що старші розробники смокчуть. Це жахливий демотиватор, щоб докласти зусиль, щоб потрапити туди, де він хоче бути.
Берин Лорич

1
@Berin Loritsch: Це справедливий момент. Ваш намір був добрий. // У Сполучених Штатах занадто багато людей подорожують над собою, щоб лаяти інших за те, щоб зробити узагальнення. Я взяв виняток із вашої відповіді, бо здавалося, що ви це робите.
Джим Г.

1
Сподіваємось, з часом ви дізнаєтесь, коли вкласти час у вивчення нових технологій та коли їх ігнорувати. Суть полягає в тому, що час є дорогоцінним ресурсом. Коли SOAP / XML RPC вперше вийшов, було ще рано говорити, що це насправді буде робити. Зараз за кілька років на поясах ми засвоїли кілька болісних уроків та змінили підхід із послугами на базі REST. Крім того, нам, старим хлопцям, потрібні молоді хлопці з безмежною енергією, щоб зрозуміти, на що варто вкласти час на навчання. Ми можемо трохи повільніше натиснути на спусковий гачок, але нам не потрібно багато часу, щоб досягти швидкості.
Берин Лорич

2
@Berin Loritsch: Можливо, я все-таки зрозумію. Насправді я бачив деяких людей похилого віку (включаючи мого нинішнього начальника), які просто розгойдуються, коли йдеться про вирішення проблем. Він не стрибає від радості, коли я кажу, що ти можеш легко зробити X, використовуючи цей фреймворк, але він не боїться його використовувати, коли бачить, що це насправді корисно. Тож, можливо, інші сеньйори, які не добрі, не добрі, бо ніколи не були. Не тому, що вони поза зв’язком через нові технології. Зараз я відчуваю себе набагато краще. (Сподіваюся, те, що я написав, має сенс)
Хемант

20

Важко передбачити майбутнє. Але одне - найцінніше напевно незалежно від технології.

Це здатність розробника вирішувати проблеми .

Багато якісних розробників не залежать від технології. Наприклад, аналітична здатність - це найважливіша якість, про яку я знаю. Це як навчання математиці. Це просто позачасовий час.


1
Так, плюс здатність / чесність знати, коли наявні інструменти / навички не вирішують проблему. Тож ви підете вивчити нові речі, а потім поверніться до "вміння вирішувати проблему".
Пітер Роуелл

1
е-е ... Це трохи розпливчасто, і тбх, це трохи коп. Якщо розробник все ще цілком задоволений "вирішенням проблем" в vb6 ... ну, я не дуже хочу працювати з їх кодом. Залишатися поточним не передбачає майбутнього, вимагає часу / роботи, і менше можливостей для цього, коли у вас є сім'я.
Стівен Еверс

5

Мені б хотілося, щоб у мене були позитивні чи конкретні думки - але я думаю, як програміст постійно в курсі та рівноваги між роботою / сім’єю дуже відрізняється від програміста до програміста.

Випадкові думки:

  • Не кожен програмний проект чи компанія потребує абсолютно новітньої технології - навіть у програмному забезпеченні. Зміна найбільш драматична на межі кровотечі - у компаній, які злегка бігають за кров, що кровоточить, часто є багато можливостей для зростання та змін, але не поширений нагальний попит на постійні зміни негайно.
  • Чим досвідченіший програміст отримує більше, тим більше вони зможуть використовувати досвід замість останнього / найбільшого слова. Я помітив, що люди, яким я найбільше захоплююсь за 20 і більше років у цій галузі, мають багато метафор, як остання річ C # - це ідеальна відповідь на проблему, яку вони мали наприкінці 80-х років з C. Використовуючи попередні проблеми та рішення, вони принесіть більше розуміння до таблиці з меншим рівнем досліджень.
  • Кожен раз, коли мені доводилося оцінювати програмістів у команді, вміння робити справи та грати добре з іншими надихало спектр технологій, з якими програміст прийшов на роботу. Хоча галузь розвиватиметься багатьма, конкуруючими, новими мовами, API та інструментами, великі шанси, що проект одночасно використовуватиме конкурента. Але все, що робити, і допомагати іншим робити те саме, ніколи не виходить із стилю, і як це робиться, розвивається набагато повільніше - не те, що чат, соціальні медіа, смартфони та все інше в цифрову епоху не змінюють цей аспект програмування , теж.

Також може бути цікаво працювати в компанії, яка працює трохи далі за кровотоком, скажімо, 3-4 роки. Ви можете чіткіше бачити помилки, які інші допустили, і мати перевагу у більш зрілих інструментах та реалізаціях.
Майкл К

Я згоден. Я фактично працюю трохи позаду краю, і мені подобається знати, що інші трохи побили голови проти цього, перш ніж мені доведеться спробувати. :)
bethlakshmi

5

По-перше, Microsoft займається продажем інструментів та платформ для розробки програмного забезпечення, на яких запускає це програмне забезпечення. Це стимулює їх внести зміни, потрібні вони чи ні. Це не означає, що всі їх зміни марні, лише те, що в нашій професії є багато областей, які є набагато стабільнішими. Маючи досвід, ви краще зможете зрозуміти, на які вагонки варто негайно перейти, а які ви можете чекати, щоб дозріти.

По-друге, досвід просто вимагає часу. Більшість розробників з 15-річним досвідом, які зараз погані, були погані 15 років тому. Не розподіляйте неправильно за віком те, що можна адекватно пояснити некомпетентністю.

По-третє, не плутайте застарілі знання з тим, що не можете використовувати найновіші та найбільші, коли виникає потреба. Зазвичай достатньо просто знати, що там є. Наприклад, донедавна мої знання з веб-програмування були вінтажними наприкінці 90-х, але коли я хотів створити веб-сайт для свого брата, я знав достатньо, щоб перевірити "новомодні" технології, такі як CSS, jQuery та системи управління контентом, і був досить до швидкості за пару тижнів. Іншими словами, якщо вам щось не потрібно було протягом останніх 10 років, ви навряд чи матимете надзвичайну ситуацію там, де хочете, щоб ви швидко пройшли зараз.

Нарешті, бути батьком справді є великим зобов'язанням у часі, але менше часу, ніж багато бездітних людей, здається, думають. Батьки все ще встигають читати книги, дивитись телевізор, грати в ігри, веб-серфінг і навіть брати заняття з нагоди. Шокер, я знаю. Ви просто робите це меншими порціями та визначаєте пріоритети. Про єдине, що я повністю відмовився - це перегляд повторів.


3

Я можу запевнити, що люди, які проявляють погані навички програмування після десяти-п’ятнадцяти років, ніколи насправді не інтерналізували розробку програмного забезпечення. Оволодіння набором інструментів не те саме, як оволодіння мистецтвом розробки програмного забезпечення.

Я пишу код вже понад тридцять років. Я пройшов кілька періодів, коли мені довелося покласти свою кар’єру на автопілоті через зовнішні зобов’язання та / або інтереси. Те, що потрібно навчитися робити в одному віці, це уникати ранніх стрибків на технологічній стрічці. Більшість технологій не в змозі відповідати їхньому шуму. Як старший практикуючий, який має обов'язки поза роботою, треба бути скупим на свій час. Досвідчений практик може дозволити собі почекати пару років, щоб нова технологія дозріла, оскільки він / вона вже освоїв мистецтво розробки програмного забезпечення.


Тож вам не складно залишатися в курсі нових технологій, коли вони дозрівають?
Хемант

1
Ця галузь циклічна. Більшість нових технологій - це трохи більше, ніж перепаковані старі ідеї. Якщо основи людини є сильними, у них не буде проблем із кроком. Пам’ятайте, що не потрібно бути на передовій технології, щоб заробити гідне життя на практиці програмного забезпечення.
біт-трейдлер

2

За мій багаторічний досвід:

  • Мови змінилися (як правило, відносно повільно).
  • Коло проблем, які можна практично вирішити, зросла (дещо швидше);
  • Розмір та складність рішень збільшились (порівняно швидко);
  • Було щось таке flavor of the day(іноді добре, часто погано).

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

На відміну від багатьох інших галузей, існує ще багато, що не є звичайною практикою. Я бачив, як багато передових речей приходять і йдуть. Багато з них перефразовували методики вже на практиці, а ті, як правило, досягали певної міри. Інші більш-менш відійшли, і більшість, де нові підходи. (Хтось бачив мову 5-го покоління останнім часом?)

Програмісти, яких я бачив, які є найбільш ефективними, можуть вибирати та збирати перевірені компоненти в робоче рішення. Це рідко пов'язане з чимось найсучаснішим, що, як правило, збільшило б ризик проекту. Здатність нарощувати роботу, яка вже була зроблена, дозволяє нам розширити сферу можливого.

Мови програмування, як правило, потрапляють у відносно мало сімей. Ознайомлення з однією мовою в сім'ї полегшує роботу з подібними мовами. Розуміння наявних у мові бібліотек та використання їх може значно підвищити продуктивність та надійність. Взагалі я б вибрав стару мову з відповідними бібліотеками над новою мовою без відповідних бібліотек.

При застосуванні нових технологій важливо уникати Because We Canсиндрому. Додавання нової технології, оскільки це аромат року, як правило, викликає більше проблем, ніж вирішує. Знати, коли технологія вирішить справжню проблему, а коли це просто додасть складності, - корисний навик.

Дійсно хороший програміст вирішить нові проблеми та використає існуючі рішення для решти. Мало кому потрібні крайові технології, всі потребують твердих розчинів.

Зазвичай я шкодую, що ковзаю по леза бритви. Я не пригадую, щоб ніколи шкодували про використання перевіреної технології. Однак багато що описується як newперепаковка чогось існуючого. Зазвичай таке перепакування полегшує розуміння та застосування відповідним чином.


2

Ніхто не може йти в ногу з усім. Напевно, ви були дуже зайняті, щоб не відставати від пропозицій Microsoft. Ви подивилися на Ruby на базах даних RAILS та Python та NoSQL, а також на створення Hadoop та мобільних додатків та CSS та HTML5 та jQuery та ExtJS та ...?

Я досить довго займався програмним забезпеченням. Я намагаюся йти в ногу з дійсно новою технологією, як нові ідеї для масово паралельних баз даних, і максимально ігнорую потворні (наприклад, MFC, WinForms, SOAP, XML, EJB) та тривіальне. Здебільшого ми просто бачимо, як великі старі ідеї були перепаковані та нарешті прийняті. Функціональне програмування? Я використовував INTERLISP у 1977 р. Додатки для мобільних телефонів? Це той самий інтерфейс інтерфейсу та двовимірної графіки, який ми робимо принаймні 30 років. Звичайно, існує розробка застосунку для маленького сенсорного екрану, але програмування зовсім не нове.


1

Я погоджуюся з @Amir, що ваша майстерність вирішує проблеми не вашим доменом lanaguage, але я ціную вашу стурбованість, так що:

Якщо у вас є свобода вибирати поточну ланагу, тоді вибирайте такий, який максимально наближений до перших принципів (наприклад, ланагуга типу C ++), так що, коли ви запускаєте роботу в новий домен, крива навчання стає меншою - оскільки це просто абстракції над тобою. Якщо ви зараз інвестуєте лише у мови високого рівня, просунути абстракцію набагато важче (навіть якщо тільки у сприйнятті).

Якщо у вас немає цього феодо, тоді просто повною мірою використовуйте свої 8 годин на роботі .. якщо у вас захоплення велике, ви не зациклюєтесь, і ви завжди знайдете цікаві проблеми, з якими вирішувати, природно, змусить вас дізнатися більше .


1

Це буде залежати від вашої роботи та ваших робочих місць. Є позиції, де розробники досі використовують старі технології. Ще багато COBOL, щоб продовжувати роботу (я впевнений, що щось змінилося.)

Робота в компанії, яка робить основний перехід, як ви описали, може позбавити людей без роботи. Іноді компанія вкладає гроші в підготовку, а не вимагає, щоб ви дізналися її самостійно.

Наявність сім'ї може обмежити вибір вашої роботи. Може зробити вас менш мобільними. Чи можете ви йти на роботу на половину зарплати в надії на велику зарплату - можливо, не з дітьми та іпотекою.

Новіші не завжди кращі, і багато хто не триває.


1

Я не в галузі медицини, але як щодо аналогії між розробником та лікарем? В обох полях за останні 20 років відбулися величезні зміни, і темпи змін все швидші. Чи всі лікарі не відстають? Ні. Чи всі розробники не відстають? Ні. Чи можете ви зробити якесь узагальнення щодо розробників чи лікарів зі стажем 14-15 років? Більше досвіду означає, що ви маєте більший набір відповідей на подібні проблеми. Чи має досвід козир? Не в довгостроковій перспективі.

Подумайте, як акула, якій доводиться тримати плавання чи вмирати. Продовжуйте вчитися чи вмирати (або переходьте до менеджменту, саме там більшість людей просувається в напрямку розвитку кар'єри розвитку приблизно в 10-15 років).


Я не впевнений у ситуації, де ви живете, але в Австралії є вимога до медичних фахівців, які мають постійну освіту та обстеження, щоб зберегти свою реєстрацію (а отже, і здатність займатися медициною).
Присяжний інопланетянин

0

У мене є ті ж самі проблеми, але я нещодавно міркував над цим, щоб перестати намагатися передбачити власну здатність до адаптації та просто адаптації. Я вважаю, що якщо я припускаю, що можу йти в ногу, я зазвичай просто так роблю. Якщо я хвилююся про застарілість, це може зробити це самореалізованим пророцтвом.

Як ви вже говорили, залишайтеся на ногах. І якщо ви не можете не відставати, не потійте це занадто сильно. Технологія має смішний спосіб пройти повне коло, і ви можете опинитися прямо в мейнстрімі, працюючи чудово.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.