Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

FAANG компанії призупиняють найм. Чому це не дуже хороші новини для глобального ринку найма і України

Gergely Orosz, радник в mobile.dev, автор текстів у The Pragmatic Engineer, написав у своєму твіттері про «замороження» найму у великих компаніях.

І Google, і GitHub через економічні умови негайно призупиняють прийом на роботу. Це впливає на всіх учасників найму.

Щодо GitHub: інженери, які беруть участь у співбесіді, отримують такі повідомлення:

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

Цій діаграмі лише кілька днів, і її вже потрібно оновити, поставивши Google у мінус, а також частину Microsoft (GH). Twitter і Meta заморожують найм на кілька місяців. Amazon є єдиним місцем, де все ще більш-менш, проте там теж не все так добре.

У Big Tech буде більше заморожувань.

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

«Чому мене хвилює те, що Big Tech уповільнює наймання, я там не працюю».

Так, Big Tech є одним із багатьох роботодавців. Проте вони тягнуть верхівку ринку. Ця тяга зникне. Простіше кажучи: працівнику буде набагато важче отримати вищі пропозиції, ніж раніше.

Верхню частину ринку винагород займають Big Tech, швидкозростаючі стартапи та хедж-фонди, що фінансуються венчурним капіталом (останні наймають відносно мало в порівнянні з першими двома групами).

Читайте також статтю Gergely Orosz «Який вплив матиме війна на європейську технологічну сцену та міжнародні компанії»

Також ми писали про:

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Найкращі коментарі пропустити

Netflix почав звільняти людей не просто так.
А тому що доходи просіли на 30%+

А доходи просіли, бо раніше був лише Netflix — а тепер додатково Hulu, Apple+, Disney+, Amazon Prime, Youtube Premium, HBO Max. і на кожну платформу потрібні IT’шники і творці контенту. В реузльтаті за останні декілька років кількість задіяних людей в мультимедіа бізнесі не зменшилась на 30% — а збільшилась суттєво

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

наскільки пам«ятаю, літом взавжди «призупиняють найм», так як сезон відпусток... але чомусь я все пересуваю в джинні планку кожен квартал на +300...500 а мені все пишуть і пишуть

Викинь VB та AngularJs з резюме, перестануть писати ;)

спробую пошукати серед c/c++/rust

Ой, максимум с сентября все вернётся на круги своя.

якого року і на які саме «круги своя» — до- чи пост- ковидних реалій?

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

Потребность в сеньорах никуда не денется, разве что придется поумерить аппетиты по зп и нос не воротить от легсаси, и то временно

В мене на пошту іноді приходить розсилка з часів коли жив у Європі.
до війни: 4к євро брутто
після початку: 6к євро брутто, вдвічі більше розсилок

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

до війни: 4к євро брутто
після початку: 6к євро брутто

Стрибок зарплат в Європі відбувся в 2020 році, якраз в розпал ковіду.

до війни: 4к євро брутто
після початку: 6к євро брутто, вдвічі більше розсилок

я заїкався?)

таки наплив ... хіба 3х+ дітних сенйорів з Харкова

VMWare на днях приходили рекрутери, аж двоє. Або набрехали, що вони з VMWare або тут щось не те в данних.

Може то залежить від локалізації. Рекрутація в Америці призупиняється, бо перегрітий ринок. В европі активізується, бо дешевий евро, менші ставки?

Навіть якщо станеться криза, буде перерозподіл ринку зі зміненими правилами, виникнення нових стартапів на нових нішах і знову все налагодиться. Та не залишимося ми без роботи точно

Мої ліди в 2008, розповідали як воно було при .COM у 2003-му. Можливо і доволі довго доведеться посидіти без роботи і зарплатні — аж до півроку, чи доведеться підти на legacy support, release management 24/7 чи в стартап де із зарплатнею не дуже тощо (краще йдіть в стартап, принаймі цікаво буде і не так токсично).

Как остановят так и возобновят. В гугле вообще можно увольнять пачками и никак это не повлияет на доходы.

Тре було йти зварювальника того року, як я і хотів, щоб «працювати руками» (((

А нефига. Ну или я хуже обезьяны.
Как оказывается, мои глаза не видят шов, не успевают перенастроится или не хватает градиента яркости.

В пiдводнi зварювальники, кажуть, там жирнiше насипають

І в Європах оплачувана спеціалізація

це тільки тренд

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

dou.ua/forums/topic/35930

Работы станет меньше. Уже сейчас происходит сдувание пузырей, а кастомеры закрывают проекты бо нема грошей

Не ждем, а готовимся!

Netflix почав звільняти людей не просто так.
А тому що доходи просіли на 30%+

А доходи просіли, бо раніше був лише Netflix — а тепер додатково Hulu, Apple+, Disney+, Amazon Prime, Youtube Premium, HBO Max. і на кожну платформу потрібні IT’шники і творці контенту. В реузльтаті за останні декілька років кількість задіяних людей в мультимедіа бізнесі не зменшилась на 30% — а збільшилась суттєво

Но тут основной бизнес это контент, не знаю зачем им столько ИТшников. Сервис написали, он работает и хорошо масштабируется, дальше только поддерживать. Разве что только VR какой-то прикручивать.

1) відображення контенту під кожну платформу (веб, мобілки, TV, desktop OS)
2) сервіси оплати
3) пошуки оптимального контенту на основі вподобань клієнта і попередньо переглянутих творів
4) Окремо підрозділи для дорослих/для дітей
5) Локалізація в кожну країну
6) Netflix games
7) адміністрування контенту і вищеозвучених речей
І це лише те, що зараз приходить в голову.

Вищеозвучені речі тягнуть на сотні спеціалістів

а ще відсотків 50% працюють над неанонсованими речами, більшість з яких ніколи не побачать світ

Множимо на 2 оскільки все це додатково спирається на внутрішні інфраструктурні компоненти і системи + регуляція + безпека + дані.

Не забувайте що вони не тільки стрімлять, но і знімають. Левова частина софта Нетфлікса — тулінг для меджменту зьйомок із плануванням, розподілом бюджетів і т.д.

Плюс якість контенту сильно впала, знімають все підряд.

Netflix почав звільняти людей не просто так.

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

Завжди цікавило чому IBM не в Big Tech?

Потому что старый взрослый бизнес а не юркий единорог

я якраз і питаю чому там I немає, хіба працювати в IBM не круто?

A майкрософт нокію купила.
А нокія чоботи фашистам шила

А фашистм падлюки антибіотики придумали. На людях експерементували

На нокію працювати теж не круто, а IBM наче ніхто не купляв?

Nokia окрема компанії, її ніхто не купляв, мережевим обладнанням займається.

Некоторый немецкий автоконцерн, который аутсорсит в Украину автомотив, газенвагены делал...

А вони є в чомусь лідером крім квантового компютера? Більше нічо не чув про їх розробки останнім часом просто...

Питання лише в тому, хто займе їхнє місце.

Не пофіг. Бо треба вже зараз на них орієнтуватися.
А перше що зробить москаль з гарним IT-проектом — то винесе його за межі ерефії, так само як і сам поїде, і команда. Бо ж можливості нормально працювати у країні Роскомпозора є хіба що в КҐБ. Чи тобі нагадати, чий Телеграм? Чий Гугл?

Та де тобі, мізантропу. Подивися під ліжко, а раптом там москаль? Або пульт, щоб самому вимкнути телевізор.

Біда пічаль, я тільки дійшов до middle завдань у літкод =(
Зупинятись або продовжувати вирішувати і далі?

Фсьо пропало. Айтішники більш нікому не потрібні. Нас замінять роботи. Амінь.

А роботам хто код писатиме? А ну не розслабляти булки, нам ще треба вбити всіх людей!

Продовжуй, бо дрючити лiткодом будуть хардкорнiше

Взагалі вірно пишеш, дякую))
Потроху буду вирішувати, зайвими знання не будуть

leetcode.com/...​-linked-list/description
Ось таке все одно бiсить. Задачка легка та тупе рiшення буде O(n) + пам’ятi стiльки ж. Рiшення з розворотом половини списку теж не складне, але ж це мутабiльнiсть.

Так
Деякі задачі треба видалити з літкоду ))

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

в фаангах приймуть неоптимальне рішення бтв, з розворотом

пс, дякую порішав двума способами, дуже весело) потім глянув о(1) рішення і аж згадав олімпіади з математики для молодших класів

мое решение на Rust

// Definition for singly-linked list.
// #[derive(PartialEq, Eq, Clone, Debug)]
// pub struct ListNode {
//   pub val: i32,
//   pub next: Option<Box<ListNode>>
// }
// 
// impl ListNode {
//   #[inline]
//   fn new(val: i32) -> Self {
//     ListNode {
//       next: None,
//       val
//     }
//   }
// }
impl Solution {
    pub fn is_palindrome(head: Option<Box<ListNode>>) -> bool {
        let len = Solution::len(&head);
        
        let (n1, mut n2) = Solution::split_at(head, len / 2);
        
        if len % 2 == 1 {
            n2 = n2.unwrap().next;
        }
        
        let n2 = Solution::reverse(n2);
        
        Solution::equals(n1, n2)
    }
    
    fn len(mut node: &Option<Box<ListNode>>) -> usize {
        let mut count = 0;
        
        while let Some(n) = node {
            count += 1;
            node = &n.next;
        }
        
        count
    }
    
    fn split_at(head: Option<Box<ListNode>>, n: usize) -> (Option<Box<ListNode>>, Option<Box<ListNode>>) {
        let mut n1_phantom = Box::new(ListNode::new(0));
        n1_phantom.next = head;
        
        let mut node = &mut n1_phantom;
        
        for _ in 0..n {
            node = node.next.as_mut().unwrap();
        }
        
        let n2 = node.next.take();
        
        (n1_phantom.next, n2)
    }
    
    fn reverse(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {
        let mut result = None;
                
        let mut node = head;
        
        while let Some(mut n) = node {
            node = n.next;
            n.next = result;
            result = Some(n);
        }
        
        result
    }
    
    fn equals(mut node_1: Option<Box<ListNode>>, mut node_2: Option<Box<ListNode>>) -> bool {
        loop {
            match (node_1, node_2) {
                (Some(n1), Some(n2)) => {
                    if n1.val != n2.val {
                        return false;
                    }
                    node_1 = n1.next;
                    node_2 = n2.next;
                },
                (None, None) => {
                    return true;
                },
                _ => {return false},
            }
        }
    }
}

Не догнал.
Ты же все равно делаешь реверс, то-ли строишь копию с реверсом (в расте не шарю)

А що робить?

fn reverse(head: Option>) -> Option>

Вона реверсить частину вхідних данних чи ні?

на вході список на кучі, і вертається взад, тільки mut , так що не копія,

Ну тобто копія все одно, яка з’їсть память. Там як не крути. Або копія данних на стеку, або в кучі або поломана мутабельність.

мені якось пох, це не для 8біт атмеги із 8К RAM

Ну, на початку Артьом стверджував що

Задача решается с константной памятью

Виявилося що память не зовсім константна ))

константа,
ти взяв Х пам"яті на кучі і потім вивільнив Х по завершенні.
Х+(-Х) = 0

чи ти тіпа про const в смислі немутабельна?
const void * const *

константа,
ти взяв Х пам"яті на кучі і потім вивільнив Х по завершенні.

Коли ти взяв а потім віддав — це не константа. Бо по пам’яті пікове значення (the worst case) буде O(N/2). З таким самим успіхом можна зробити копію списку на стеку, яка звільниться при виході з функції.
Точно такий фокус буде з використанням рекурсії (якщо ми першу половину списку пройдемо рекурсивно, а потім почнемо порівнювати з другою половиную при розмотуванні рекурсії назад) або ж std::stack. Тільки у першому випадку буде від’їдатись стек, а в другому — куча. А ось у випадку з мутабельним списком память буде константна. Але мутабельність

взяв на кучі Х2 пам"яті і .... весь час верчуся на Х2, то константа чи не константа?
до чого тут рекурсія? є передбачення по виділенню пам"яті на рекурсії?

взяв на кучі Х2 пам"яті і .... весь час верчуся на Х2, то константа чи не константа?

Ніт. Якщо ти робиш копію данних, розмір яких не знаєш.
Оціни в O нотації space complexity для списку розміром наприклад в 2GB з умовою що в тебе усього в системі 3GB RAM для алгоритму з мутабельним списком та алгоримом з використанням кучі.

до чого тут рекурсія?

Наводжу приклад що те, що на перший погляд є константною пам’яттю, насправді може бути нефіга не константною.

ясно, спор заради спору.
не константа, і шо?
в ФААНГ не візьмуть Артема, біда біда

не константа, і шо?

this

в ФААНГ не візьмуть Артема, біда біда

Він вже там ))

Він вже там ))

отже розмір не має значення

Оціни в O нотації space complexity для списку розміром наприклад в 2GB з умовою що в тебе усього в системі 3GB RAM для алгоритму з мутабельним списком та алгоримом з використанням кучі.

if avalableRAMatHeap() < list.size() *2
exit (-100500)

одну з"їсть інша звільницця, баш на баш

або поломана мутабельність

Мутабельность как раз не поломана, так как is_palindrome принимает Option<Box<ListNode>>, значит с ним можно делать что угодно — после вызова этого метода он будет дропнут никто им все равно воспользоваться не может.

А, то есть уже копия присутствует.

покажи в каком месте создается копия.

Да хз, мож под капотом где-то

Под капотом только:

* zero cost abstractions
* fearless parallelism
* blazingly fast

Оставьте эти сказки евангелистам.
Если на вход функции дали нечто, что безнаказанно дропается и невозможно переиспользовать, значит это уже где-то скопировано.

В холивар мне не интересно соваться

Вот тебе под капотом: rust.godbolt.org/z/WshTGGzMj

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

Так оно скопировано до вызова.
Если нет, то предоставить аналогичное на старом добром С, в котором вообще никакой магии не происходит, не будет вопросом

Можешь попробовать закинуть код в github.com/thepowersgang/mrustc и он тебе выдаст C.

Ты в принципе можешь передать в функцию данные тремя способами:
— по ссылке/указателю. Тогда ломается мутабельность при реверсе
— по значению, разместив копию данных на стеке
— по ссылке/указателю разместив копию данных в куче.

Поскольку мутабельность, как ты утверждаешь, не нарушается, то выбери правильный вариант для раста из двух последних. Чудес не бывает. Если ты меняешь данные, но оригинал этих данных не меняется, значит ты изменяешь копию данных.

Если ты меняешь данные, но оригинал этих данных не меняется, значит ты изменяешь копию данных.

rust.godbolt.org/z/qf65YnT5s

Покажите инструкцию, которая создает копию.

про копию непонятно но вот реверс функция
jne .LBB9_24
mov r15, qword ptr [rsp + 32]
lea r14, [rsp + 8]
mov qword ptr [rsp], r15
mov qword ptr [rsp + 8], rdi
test r15, r15
Т.е. память мутируется, т.е. решение не иммутабельно

Нигде не написано, что решение должно быть имутабельынм. Более того, сигнатура

pub fn is_palindrome(head: Option<Box<ListNode>>) -> bool {

подразумевает, что решение может модифицировать данные. Если бы явно требовали что-то другое, была бы другая сигнатура.

подразумевает, что решение может модифицировать данные.

Но постой, а как же
«Задача решается с константной памятью и без мутабельности.»
?

Сообщение, на которое ты отвечал.


Задачка легка та тупе рiшення буде O(n) + пам’ятi стiльки ж

Какая у твоего алгоритма

dou.ua/...​rums/topic/39197/#2451560

time complexity?

P.S.: ты можешь еще поиграться словами, но решения без поломаной мутабельности, со сложностью по времени O(N) и по памяти O(1) (которая обсуждается в исходном посте) — нет.

Я и не писал, что там O(N) рантайм.

Можешь дать ссылку где написано что такое «поломаная мутабельность»?

Можешь дать ссылку где написано что такое «поломаная мутабельность»?

Сформулировал коряво. Читай как «без изменения входных данных»

Можно, например, после проверки развернуть список обратно и склеить его — в однопоточном приложении не будет observable side effects с точки зрения того, кто вызывает код — входные данные не изменились.

в однопоточном приложении

Пошли отмазки

Очередная попытка сумничать с последующим включением дурака)

Покажи инструкцию, из которой следует, что Some() в строке

result = Some(n);

не создает копию n, которая потом вставляется в связанный список, голова которого была создана раньше с помощью ListNode::new(0)

Если в

#[derive(PartialEq, Eq, Clone, Debug)]
pub struct ListNode {
  pub val: i32,
   pub next: Option<Box<ListNode>>
 }

убрать Clone и код скомпилируется, это значит, что в твоем коде нигде не спрятано неявное клонирование этого типа данных.

Также можешь посмотреть что чем именно является Some(n) — rust.godbolt.org/z/fxf6rM7sY — за счет 🚀 Null
🚀 Pointer 🚀 Optimization 🚀
конвертация из

Box<T>

в
Option<Box<T>>

это no-op.

И какая у тебя space complexity в момент когда он ещё не дропнут?

Space complexity O(1). Это видно, так как код нигде не делает аллокаций массивов, размер которых зависит от входных данных, не аллоцирует ничего в куче в циклах и не имеет рекурсии.

Я делаю реверс. Есть и другое решение без реверса.

impl Solution {
    pub fn is_palindrome(head: Option<Box<ListNode>>) -> bool {
        let len = len(&head);
        
        for i in 0..len/2 {
            if get_at(&head, i) != get_at(&head,  len - i - 1) {
                return false;
            }
        }
        
        true
    }
    
    
}

fn len(mut node: &Option<Box<ListNode>>) -> usize {
    let mut count = 0;

    while let Some(n) = node {
        count += 1;
        node = &n.next;
    }

    count
}

fn get_at(mut head: &Option<Box<ListNode>>, idx: usize) -> i32 {
    for i in 0..idx {
        head = &head.as_ref().unwrap().next;
    }

    head.as_ref().unwrap().val
}

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

Подскажи плиз, какой шанс что на интервью скажут что все ок, но давай уберем лишние итераций, или главное что оно упроститься до O(n)? Если убирать, не лучше сразу обсудить до имплементации?

Это достаточно годная реализация, одна из самых оптимальных, при этом легко объяснить как она работает и доказать, что она корректна.

Ее можно ненмого дооптимизировать за счет усложнения, снижения читабельности кода и использования unsafe rust, что вряд ли принесет дополнительные поинты — более реалистично, что тебе не хватит времени чтоб пройти по всем corner cases.

Это достаточно годная реализация, одна из самых оптимальных,

Она годная только на неискушенный взгляд сферического литкод кодера.
Настоящие годные реализации строятся как каскад алгоритмов. Впереди этого каскада идут легковесные копеешные алгоритмы, которые могут дать фолс позитив. Например, если сумма чисел слева и справа не равна, то точно не палиндром и незачем заниматся реверс камасутрой на расте. Можно еще пройти по маске, скажем в 5 элементов. Если внутри большого палиндрома нет палиндрома на 5 чисел, тоже гудбай.
Какой прирост производительности это даст на сферическом наборе рандомных строк, где сгенерировать палиндром вероятность примерно как выиграть в национальную лотерею, думаю сам посчитаешь.

talk is cheap, show me the code

Ну да, нечего мне делать кроме как палиндромы решать.
Даже вот здесь, можно было бы добавить две строчки

fn len(mut node: &Option>) -> usize {
let mut count = 0;
let mut sum = 0;

while let Some(n) = node {
count += 1;
sum += n.val;

node = &n.next;
}

count
}

и далее если

if(count%2==0 && sum%2 == 1)
return false; //not palindrom

Вот тебе уже третья оптимизация, которая в 25% случаев возвращает результат почти сразу.

и далее если

if(count%2==0 && sum%2 == 1)
return false; //not palindrom

Для данных 1-2-3-1-2-3 вернет true, хотя это не палиндром

А вообще хорошо моя ветка пошла )) ещё есть порох в пороховницах

Для данных 1-2-3-1-2-3 вернет true, хотя это
не палиндром

Эта оптимизация никогда не возвращает true. Она может сказать только то, что это точно не палиндром и дальше реверсом заниматся не имеет смысла (в 25% случаях).
Это примерно как оптимизация на входе сортировки, если там 0 или 1 элемент, то хули там сортировать, сразу возвращаешь отсортировано.

Нє
А треба? Мені і у продактах з cтоками норм

Життя один раз дають
А дівок у мене було вже достатньо :-)

мілф не мілф, аби яка баронеса хоч чи герцогиня, а там як пройдеш фейс контроль, то вже і до принцес зможеш залицятися

забей
гоу в какой нибудь Deutsche Renteversicherung, там тарифная сетка и не увольняют

о я так думав, десь так в років 65 піти допротирати штани в таку контору

навіть не знаю шо краще у 65, пенсія та відпочинки, пенсія та лячкати опенсорц, лячкати на кораблі, лячкати у продакті або сидіти у ферзіхерунгу якомусь та розкладати minesweeper ))

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

пенсія та відпочинки,

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

Простіше кажучи: працівнику буде набагато важче отримати вищі пропозиції, ніж раніше.

Наскільки ця новина актуальна для України? Тут Фаанг вже п’ятий місяць не наймає

Наприклад, нашому клієнту в США було минулого року набагато важче знайти Сініор Дева на 120к в рік в США, бо більшість девів там ішли в ФААНГ, тому він готовий був тут доплатити.
Якщо через те що в ФААНГ набирають менше і/або звільняють то клієнт зі знайчно більшою ймовірністю зможе знайти там Сініор Дева за 120к, тоді і в Україні він захоче заплатити менше, а не більше як раніше.

А синьоры, которых уволили, создают свой стартап и сами начинают нанимать.

Сініор Дева на 120к в рік в США

такие вообще бывают?

Цифри відносні, але зп не у ’популярних’ штатах на порядок менші.

Місцеві галери свято вірять що це цінник і десь таки знаходять не амбітних середнячків.
Це як 3 різних світи.

До мене індуси ломилися.
Навіть цінник злили
На 1099 продамо тебе за 90 на годину.
Нам 20 відсотків. Тобі 72 на годину.
А якщо на w2 то ось вони 120.
Причому що 7 років тому 120 що зараз.
Якась капсула часу в них.

Стосується і не хайпових місць і відлаленої роботи.

Наступна категорія це 150 180

І ще одна 180 250

І всі те саме шукають

Бонуси — як пощастить

120к — это 7к на руки после налогооблажения в США.

І після звільнення з 350к вони підуть працювати за 120к, ага.

Наприклад, нашому клієнту в США було минулого року набагато важче знайти Сініор Дева на 120к в рік в США, бо більшість девів там ішли в ФААНГ, тому він готовий був тут доплатити.

на мій не скромний погляд це популярний міф буцімто «більшість девів у фхтанг тому їм хто залишився так багато платять» по перше не так багато по друге фхтанг все одно на всіх не вистачить по третє купа народу на справді не йде у фхтанг по четверте дев на 120к і дев на 250к+ це по суті два різні деви і вони мало де насправді конкурують

дев на 250к+ справді залежить від ситуації у фхтанг але дев на 120к вже лише від загальної економічної ситуації і то навіть у своїй сфері бізнесу своєї компанії

як гарний приклад усе того ж американського це бум вебу а потім різкий крах і що і нічого на справді усі ті люди навіть «програмістами» толком не були я знаю бо я особисто знаю декількох

на приклад мене більше турбує остання цифра озвученного $416,000 Median Housing Price according to NAR ))

ЗЫ: доречі вже прилітає спам «ремоте ворк і юс з топтут за $30,000» і там навіть applicants є )) для порівняння мінімальну з.п. не збільшили і вона здебільшого $8 за годину і лише за багатих містах на зразок NYC $15 за годину з розрахунку 2080 годин на рік ото якраз і є $30,000 то таки багато людей я знаю ведуться але слід розуміти що то є за «програмісти»

фхтанг

Що то за покемон?

Підписатись на коментарі