Наскільки загальним є команда, щоб написати все по-своєму? [зачинено]


53

У своєму недавньому інтерв'ю я запитав інтерв'юерів: "як ти займаєшся оцінкою нових технологій та бібліотек (наприклад, SignalR) та залученням їх до використання?". Вони сказали, що цього не роблять, а натомість вони все пишуть самі, щоб їм не довелося покладатися ні на кого іншого.

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

Моє запитання: наскільки загально командам все писати самі? Чи повинні мене турбувати команди, які це роблять?

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


58
Величезний червоний прапор Ідіть спокійно і не робіть різких рухів.
tdammers

16
Я не думаю, що це так смішно, як кажуть люди ... Останнім часом я витратив неймовірну кількість часу, фіксуючи покинуті бібліотеки для нових версій фреймворку, нових версій бібліотек з серйозними порушеннями, які не були задокументовані і навіть великі прогалини у таких значних рамках, як jQuery, які роблять їх невідповідними за призначенням. Люди не докладають достатньо зусиль для того, щоб вирішити, чи додаватимуть компоненти третьої частини величезні витрати на технічне обслуговування і часто опиняються щукою незбагненної залежності від спагетті.
Danny Tuppeny

4
NuGet є приголомшливим, але робить це так просто. Нещодавно я встановив якусь тривіальну бібліотеку помічників від NuGet, і вона затягнула в Замок та всілякі інші роздуті лайно. Впевнений; відверта заборона дивна, але це не дурніше, ніж дозволяти кожному деві та його собаці випадковим чином затягувати речі без реальної думки.
Денні Туппені

13
Все? Це включає в себе власні браузери, операційні системи та компілятори? Інакше вони просто обманюють себе.
Мухаммед Алкарурі

4
Звичайно, це так само смішно, як кажуть люди. Те, що а) можна вибрати неправильну бібліотеку для роботи та б) існують ситуації, коли жодна наявна бібліотека не задовольнятиме ваші потреби краще, ніж внутрішня: не означає, що бланкова політика ніколи не використовує сторонніх бібліотеки правильно.
user16764

Відповіді:


76

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

Більш раціональною і ґрунтовною відповіддю може бути те, що вони будуть використовувати лише сторонні бібліотеки, які:

  • Відповідайте потребам коду, який вони інакше писали б самі
  • Були доступні за ліцензією, сумісною з бізнес-моделлю компанії
  • Включені тести
  • Пройшов перевірку коду

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

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

Більше того, відраза до створених сторонніх бібліотек серйозно заважає продуктивності програмістів. Скажімо, компанія писала веб-додатки і відмовилася використовувати (наприклад) jQuery, тому натомість написала власну альтернативну бібліотеку крос-браузерів для спрощення маніпуляцій з DOM. З майже впевненістю можна припустити, що їх реалізація:

  • Буде API іноземним для розробників, уже знайомих jQuery
  • Не буде настільки добре задокументованим, як jQuery
  • Не матимуть відповідних результатів Google при зіткненні з проблемами використання бібліотеки
  • Не буде настільки тестованим, як jQuery

Усі ці моменти є головними перешкодами для продуктивності програмістів. Як бізнес може дозволити собі відмовитись від такої продуктивності?


Ви оновили своє запитання, щоб запитати, чи підходить це для другого інтерв'ю. Це абсолютно так.

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

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

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

1
+1, але я думаю, ви мали на увазі приватний сектор, а не державний сектор.
MarkJ

6
"Якщо код з відкритим кодом, тоді в гіршому випадку стороння бібліотека стає непідтримуваною. Але кого це хвилює? Тести доводять, що бібліотека підходить для ваших потреб!" У вас також є вихідний код, який ставить вас у становище мати те, що ви зараз використовуєте, і мати можливість оновити його для задоволення будь-яких майбутніх потреб. (Так, для звикання до «чужої» кодової бази потрібен час, але так само і прокат.)
CVn

34

Це здається неймовірно неконкурентоспроможним. Я працював у магазинах, які вирішили пропустити стандартні бібліотеки з відкритим кодом, як Hibernate, і передати свої власні через деяку "критичну" відсутність функції. Зрештою, програмне забезпечення було надзвичайно дорогим для створення та обслуговування. Звичайно, вартість внутрішньої бібліотеки була занижена. І поки писалася внутрішня бібліотека, стандартні бібліотеки швидко розвивалися, додаючи нові функції, які були недоступні у власній бібліотеці. Зрештою, робота, яка займе годину, використовуючи стандартну бібліотеку, замість цього зайняла два дні. І це було погано для кар’єри розробника, оскільки світ їх пройшов повз. Я б уникнув такого магазину. Мені подобається поставляти, і не маю терпіння переписувати, коли я можу повторно використовувати.


2
Оскільки розробники більше не мали відповідних навичок для інших робочих місць, гроші компанії, втрачені протягом тривалого часу розробки, були заощаджені, не потребуючи заміни членів команди, що відходять! #stratgey
Michael Paulukonis

@Michael: Єдиними людьми, яких вони могли утримати, були люди, які були присутні для оригінального рішення про створення внутрішніх рамок. Нові працівники, як правило, залишали приблизно через рік.
Кевін Клайн

</itwasaweakjoke>
Michael Paulukonis

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

@MarkJ: але якщо зміна буде відхилена, у когось виникне синє его.
Кевін Клайн

20

У магазині є захворювання, яке називається Not Invented Here . Це вагомий привід припинити співбесіду на місці та негайно залишити. Це можна вилікувати лише за допомогою прибирання будинку зверху вниз, що малоймовірно.

Щоб відповісти на ваше запитання, це, на жаль, набагато частіше, ніж ви могли б подумати, і це, безумовно, причина для занепокоєння.


15

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


11

У мене є пара друзів, які обоє (коротко) працювали в програмних будинках із не винайденим тут синдромом. Тож менталітет там.

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


+1 одна з головних причин, по якій я перейшов від свого попереднього роботодавця!
Антоні Скотт

5

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

Я не буду відрегулювати вже зроблені хороші моменти, але додам одне.

Вони щойно ускладнили роботу з наймом.

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

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

І однаково, будуть деякі компанії, які працюють в "масштабах Інтернету", Amazon, Facebook тощо, де вони мають божевільні потреби на замовлення, але вони знову в меншості.


4

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

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

З огляду на те, що ви написали, цей сценарій, мабуть, не лежить в основі цього питання.


4

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

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

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

Деякі компанії дозволяють свободу створювати власні проекти з відкритим кодом, що здається більш доцільним.

Я особисто не ходив би до місця з такою культурою.


1

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

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

Можливо, хоч, можливо, ти саме людина, яка запровадила ці зміни. Успіхів у всьому.


-3

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

Уявіть собі, що на наступному інтерв'ю вони запитують, з якими технологіями ви працювали, і ви можете згадати лише голі кістки C ++ .. Це звучить як рівень випускника


"Я не бачив, щоб це згадувалося тут" - ви подивилися інші відповіді, наприклад, на цю ?
гнат

3
Ви не отримаєте багато навичок? Це недоречно. Це справедливо, лише якщо ви бачите програмування як гру з блоками Lego, складання компонентів разом. Якщо вам доведеться «винаходити» бібліотеку, ви дізнаєтесь дуже багато про певну тему.
ГрандмайстерB

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

-9

Великі компанії все пишуть самі.

Є кілька переваг, коли писати це самостійно:

  1. Ви гарантовано володієте програмним забезпеченням самостійно
  2. Ви можете правильно розрахувати обсяги робіт, які пішли на його створення
  3. Повторення ваших кроків стає можливим, навіть якщо наступного разу ваги не будуть доступні
  4. Це скорочує вашу вимогу
  5. Ви не повторюєте те, що вже зробили інші
  6. Ви гарантовано матимете достатньо людей для його обслуговування
  7. Ви можете змінювати кожну частину програмного забезпечення
  8. Розмір програмного забезпечення обмежений кількістю наявних у вас ресурсів

Ось як порушується кожен із пунктів, якщо ви користуєтеся бібліотекою хтось інший:

  1. Хтось ще є власником
  2. Ви не знаєте, скільки зусиль пішло на створення лібу
  3. Наступну версію продукту неможливо створити на новій платформі, оскільки ті ж лінзи більше не доступні
  4. Здатність реалізувати вимогу залежить від того, чи реалізувала її ліга років тому
  5. Хтось ще також використовує ту саму вкладку, отримуючи однакові обмеження та функції
  6. Оскільки ви не створили вкладки, у вас не вистачає людей, щоб підтримувати все програмне забезпечення у вашому продукті
  7. Терези - двійкові, немодифікуються. Навіть якщо джерело доступне, вам не вистачає людей, щоб змінити велику кількість коду.
  8. Підтримка створеного вами коду + libs - це більше зусиль, ніж ви спочатку оцінювали

7
Чи не логічним розширенням цих аргументів було б також написати власний компілятор (можливо, для вашої мови), запустити це програмне забезпечення на власній ОС та, можливо, також створити свій власний HW?
тайм

4
1: Так, і я можу сплатити гонорар за його використання (не витрачаючи грошей на його складання, різницю у вартості). 2: Якщо я його не будую, мені все одно. 3: У бізнес-платформах повільно змінюватися. Перебування ріжучої межі рідко є вимогою. Але хороше програмне забезпечення перемістилося легко. 4: Неправда. Ви просто переносите набряк із зовнішнього на внутрішній. 5: Не має сенсу. 6: Неправда. 7: Це правда, але означає, що вам потрібно перенаправити дорогоцінні програмісти (найдорожча частина проекту) з реальної роботи на виправлення помилок на те, що можна було б підтримувати в іншому місці. 8: Це погано.
Мартін Йорк

5
Багато великих компаній широко використовують відкритий код у різних формах (у тому числі ліб), часто вдосконалюючись у відповідних проектах. Пункти здебільшого не мають значення або неправильні.
Метт

7
@ tp1: Я працюю в Google, і можу запевнити, що Google дуже багато використовує сторонні бібліотеки, коли вони відповідають нашим потребам. У Google багато разів виникають потреби, які є унікальними або відрізняються від багатьох інших програмних компаній, тому з тих чи інших причин Google часто розробляє речі вдома. Але Google також використовує велику кількість бібліотек з відкритим кодом та / або безлічі внутрішніх бібліотек, тому не все є власним. Більшість ваших пунктів більше не застосовуються до програмного забезпечення з відкритим кодом, оскільки, маючи джерело, ви гарантуєте, що ви завжди зможете його налагоджувати та виправляти, якщо це необхідно.
Даніель Приден

5
"Ні, значення походить від точної реалізації вимог. Якщо вона була побудована до того, як вимоги були відомі, вона не може точно реалізувати ці точні вимоги." Підказка: Якщо ви вважаєте, що цей аргумент взагалі має якусь заслугу, то ви не зрозуміли розділення проблем.
user16764
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.