Нали се сещаш, че и "как мисля" мога много лесно да те излъжа!? 😏
Хайде, сенсей Един, покажи ми как ще ме излъжеш. Пример за интервю трябва да реализираш тикет система с CRUD операции. При създаване на всеки тикет трябва да се вика външен оценител през някаква услуга и в зависимост каква е оценката ти се задават произволни правила, които ти трябва да обработиш. Аз те питам как ще реализираш солюшъна си, какви проекти ще има, какви архитектурни шаблони ще използваш, какви концепции би спазвал, каква база данни би избрал, как ще я достъпваш. И ако ми хареса какво си ми отговорил ще ти дам с по-конкретни детайли да ми я имплементираш с юнит и ацептанс тестове за примерно 3 часа, което е предостатъчно. Не звучи сложно нали? Та чакам да ме излъжеш :) Като за теб ти предлагам 45 долара на час!
Мислех, да ти реша задачата с картинки, детайли и т.н. ама като виждам ти колко си постен в детайлите относно въпросите, които питаш, ще си ги спестя и аз. Но за разлика от "Golden Gega" дето държи на "детайли", аз съм свикнал да предлагам "опции" когато "детайли няма" (че съм бачкал за бая тъпи клиенти дето требе да им предложиш неколко решения и те да си изберат).
Опция 1 - експертно решение (на база "липса на детайли"):
1. Ще ти планирам нацъкване на едно ASP.NET Core Web API с CRUD операцийки. Ще планирам връзване с Azure SQL DB. Ще планирам deploy-ване като Container в Azure Container Registry (кеф ти скалиране, кеф ти load balancing).
2. Ще ти сметна тея неща с Azure Pricing Calculator.
3. Ще ти сметна човеко-дни работа, че и Project Management планче ще ти направя на Microsoft Project със Sprint-ове (айде ще е 1 Sprint, ама да сме гъзари). Ще ти пусна оферта.
4. Ще го нацъкам там за некви дни (щото бачкам бавно).
5. Ще ти напиша документацийка - техническа и бизнес. Ще ти напиша QA Management план (за по-нататъшно добавяне на тестчета), Risk Management план (къде какво може да се счупи, при повишаване на "трафик", "големина на данни и др.".
6. Ако се кефиш - ще ти направя и UML диаграмки - sequence, process и др. да гледаш и да си представяш "как се въртят лайната".
Подобрение към опция 1:
7. Ще пазя некви setting-и в Azure Key Vault (connection string-ове и др.), ще пазя некви статични ресурси като картинки и др. в Azure CDN.
8. Ще ти напиша некви unit и acceptance тестчета.
9. Ще ходя на коври.
Опция 2 - по-сложно решение (ако случайно ми кажеш, че ticket системата нема да е за "гаражна фирмичка"):
1. Ще ти планирам малко "архитектурни шаблони" - влизам ей тука в "Cloud Design Patterns". И правя това, което Краси - CTO-то на Scale казваше, че е "най-добрият анти-pattern". Планирам да ти правя "комбинация от pattern-и". 😁
2. Планирам ти да ти правя решение с Angular frontend + Microservice backend. Pattern-ите ще са CQRS + Event Sourcing + Materialized View, Gateway Aggregation, Static Content Hosting, External Configuration Store, Circuit Breaker + Retry и Valet Key. Нема да навлизам в детайли, че ще изпиша още 2 коментара тука. Представи си детайлите. 😄
3. Ще ти го изчисля пак с Azure Calculator, ще ти изчисля човеко дни работа (+ тестинг, миграция на данни, като ще си сложа и буфери... т.е. както го правят "белите хора") и ще ти направя PM план с няколко Sprint-a, като ще се старая на края на Sprint-овете да виждаш "неква промяна" и "нещо работещо" (както би трябвало да е в "истинския SCRUM").
4. Ще го нацъкам в срок (ако требе ще бачкам по нощите). Ще добавя оркестратор (оркестър нема да добавям), load balancer да не се трупа трафика много. А за база ще си мина на MongoDB, щото и се кефя повече, а и май е по-подходяща за такъв тип приложенийца.
5-9 си остават същите (като за документацийките, QA Management и Risk Management плановете сроковете ще се вдигнат, щото вече не е "софтуерче за гаражна фирма"). За коврите - сроковете и разходите са същите.
Опция 3 - решение тип Захата, топ погромист и чистач на лайна (ако случайно ми кажеш, че решението ще е за мултимелеонна курпорация):
1. Ще ти бутна покрай другото и Azure Service Bus, ще ти бутна Queue-Based Load Leveling и Health Endpoint Monitoring (та лесно да провериш "живо ли е туй животно или не").
2. Solution-а си остава същия със същите други pattern-и.
3-9 си остават същите, но с extra кинтите дето ми дадеш, ще ходя да поря коври от по 300 лв. нагоре
Опция 4 - решение тип "иновации в крак с времето" (ако случайно ми кажеш, че искаш да се използват най-модерни технологии, тип Blockchain, Deep Learning, интеграция със SAP и др.; имахме такъв хамерикански клиент в Scale дето май переше пари):
1.1. Ще ти планирам On-Premise Blockchain архитектурка, даже некви dApps-ове с frontend - React и backend - Enthereum Blockchain Smart Contracts ще планирам да ти напиша, ако те кефи и плащаш.
1.2. Ще ти планирам Deep Learning-a да е в Google Cloud (та да ти излезе по-скъпичко) и ще ти планирам една TensorFlow архитектурка с доста service-чета (ще ти я сметна с Google Cloud Pricing Calculator; ти съмняваш ли се). 😎
1.3. Ще ти планирам интеграция със SAP, по методология ASAP (Accelerated SAP). Като стига да плашаш и SAP ABAP езика ще науча, та да ти въртя доработки по SAP базите. Нали ти казвам - за пари, всекви "IT свирки" правя!
2. Решението си оставя същото, просто през Azure Service Bus-a ще теглиш данни от Blockchain-a, Google Cloud service-ите и SAP-a.
3. Ще ти сметна всички тея неща и ще ти планирам "програма от проекти", като пак ще ти нацъкам Sprint-ове и срокове в PM план (като ще взема в предвид, кой проект "реалистично" след кой може да се започне или да се "работи паралелно"). Ще ти водя екипа от хора, ако решиш да си вземеш още (като ще съм отворен 24/7 за въпроси и за идеи, стига нещата да се случват в срок). Ще обучавам новите хора, също съм и махал хора от екипа си, та не ми е проблем изобщо (може и да ги поръчам на ВИС-аджиите).
4. Ще ти го нацъкам в срок.
5-9 си остават същите, но най-вероятно целата шитня ще я бачкаме с екипа за 2-3 години и с парите дето ми платиш, ще ходя да поря миските на Баце. 😁