One of the best Systems Programming in C++ course/book ever

This course is very very deep and very simple, about modern C++, and besides C++ about its ecosystem.

It is the best single learning C++ source that I saw (except learncpp.com for beginners).

One-file PDF is here or is below in the attachments.

It is from Technical University of Munich (TUM)

How to cross traditional project management and Agile

I was thinking about how to combine traditional project management and Agile, and what I came up with is in this post:

Principles

I think we should follow these principles:

  1. There should be one responsible person per topic, otherwise the manager will end up playing the role of a project manager for all projects.
  2. The combination should be based on an accessible methodology, so that employees have a reference point. This will allow the manager to avoid spending all their energy explaining, and instead simply say “read it there”. This will also prevent reinventing the wheel.
  3. Agile practices should be preserved, as at the beginning of the project, it is often unclear what needs to be done.
  4. All roles should be one of two types: “business” (responsible for some business outcome) and “service” (measured by satisfaction).

Management structure

I’m currently thinking that we need to introduce three levels of management (with role descriptions based on SAFE):

1️⃣ At the project level:

  • Business owner – responsible for the success of the project (timelines, budgets, satisfaction) to the company and the client. Has overall responsibility. May use project manager practices (as it makes sense since their object is the project). Can create a hierarchy of business owners for their areas or sub-projects.

2️⃣ At the Solution (IT solutions) level. There may be several of these in a project.

  • Product and Solution Management – responsible for meeting the client’s needs and satisfaction of the client and business owner. Forms the product feature list.
  • Solution architect – responsible for the technical solution development, feature implementation and satisfaction of Product and Solution Management, Business Owner.
  • RTE – responsible for the process execution and improvement, team synchronization, and satisfaction of all parties.

3️⃣ At the team level. There may be multiple teams for one IT solution.

  • Product Owner – responsible for creating the backlog (a prioritized list) for the Agile team (including optimal feature splitting into user stories) and satisfaction of all parties above.
  • Agile team – execution of backlog and satisfaction of Product Owner (may include architects, team leads, etc., the process can be organized as you wish).
  • Scrum Master – responsible for process execution and improvement, and satisfaction of Agile team and Product Owner.

Comments

One employee may perform multiple roles.

Related to design and construct (in terms of leadership) in this article.

The slogans of the article are: “Don’t know how to do an Agile project? You just don’t know how to cook it”, “You can’t not manage projects if you’re selling them, and Agile is a way of production”, “How to cross a project hedgehog with an Agile snake.”

In Russian

Думал я над тем как скрестить руководство классическими проектами и Agile, что надумал в этом посте

Принципы

Думаю надо исходить из таких принципов:

1. Должен быть один ответсвенный по темам, иначе руководитель будет выполнять роль руководителя проекта по всем проектам.

2. Скрещивание должно быть по доступной методологии, чтобы сотрудникам было где почитать. Это чтобы руководителю не тратить на объяснение все силы, чтобы мог просто сказать «читать там». И чтобы «не изобретать велосипед»

3. Сохранить Agile-практики так как в проектах в начале реально не понятно что делать.   

4. Все роли должны быть одним из двух типов – «бизнес» (отвечают за какой-то бизнес-результат) и «сервисные» (меряются удовлетворенностью).

Структура управления

Пока думаю что надо вводить три слоя управления (по ссылкам описание ролей из SAFE):

1️⃣ На уровне проекта:

– Сотрудник Business owner – отвечает перед компанией и Заказчиком за успешность проекта (сроки, деньги, удовлетворенность). Отвечает “за всё”. Может использовать практики руководителя проекта (что резонно т.к. его объект – проект). Может делать иерархию business owner по направлениям у себя в «подпроектах» или уровнях ниже.

2️⃣ На уровне Solution (ИТ-решения). В проекте может быть их несколько

– Оргфункция Product and Solution Management – отвечает за удовлетворение потребностей Клиента и за удовлетворенность Клиента и Business owner. Формирует список фич продукта.

– Оргфункция Solution architect – отвечает за разработку технического решения по реализации фич и удовлетворенность Product and Solution Management, Business Owner

– Сотрудник RTE – отвечает за выполнение и улучшение процесса, синхронизацию команд и удовлетворенность всех

3️⃣ На уровне Команды. Для одного ИТ-решения может быть несколько команд

– Сотрудник Product Owner – отвечает за формирование бэклога (приоритизированного списка) Agile team (включая оптимальное разбиение фич на user story) и удовлетворенность всех на уровне выше

Agile team – выполнение бэклога и удовлетворенность Product Owner (внутри могут быть архитекторы, тимлиды и т.д., можно организовывать процесс как хотите)

– Сотрудник Scrum Master – отвечает за выполнение и улучшение процесса и удовлетворенность Agile team и Product Owner

Комментарии

Один сотрудник может выполнять несколько ролей

Связано с design и construct (в части leadership) в этой статье

Лозунги статьи: “Вы не знаете как делать в Agile проект? Вы просто не умеете его готовить”, “Вы не можете не управлять проектами если вы их продаете, а Agile – способ производства”, “Как скрестить проектного ежа с agile-ужом”

Tell me who your enemy is, and I’ll tell you who you are

Once a top manager told me the phrase “Tell me who your enemy is, and I’ll tell you who you are.”

To better understand a person’s level, it’s better to look at who they are fighting with rather than who they are friends with:

  • with their 10-year-old child?
  • with their department head?
  • with their department manager?
  • with their industry?
  • with the minister?

It’s significantly easier to see who a person is fighting with rather than who their friends are. You never really know who their friends are, but you are more likely to see who they are battling with at work.

In Russian

Когда-то фразу “Скажи кто твой враг, и я скажу кто ты” сказал мне один топ-менеджер.

Чтобы понять уровень человека лучше смотреть не с кем он дружит, а с кем он воюет:
– со своим 10-летним ребенком?
– с уровнем начальника отдела?
– с уровнем начальника департамента?
– с отраслью?
– с министром?

С кем человек воюет – значительно легче увидеть, чем кто его друзья. Вы же не знаете на самом деле кто у него друзья, а с кем он борется на работе вы скорее всего видите)

It’s very important not to be an idiot

This is one of the most important tests in my professional and personal life.

When I need to make a decision to do or not to do something, I ask myself, “Are you an idiot?” The answer to this question leads to the right decision.

Sometimes, I train my closest subordinates in this way (after explaining the method beforehand). For example, recently I trained someone on what is more important: “deadline, quality, scope.”

I said, “Today we need to send 4 files.”

Later that night, I called him and asked, “How’s it going?”

He replied, “I only have 3 out of the 4 files; I thought I could send it tomorrow.”

I said, “Test yourself with the ‘idiot test’.”

He realized, “Right, I need to send the 3 files now and then send the fourth one tomorrow if needed.”

The scientific and strategic background for why this behavior yields positive outcomes can be found here.

Additionally, the strength of the question itself motivates me to mobilize and make a decision. Taleb originally framed it as “don’t be a sucker,” but I made it stronger.

So, “don’t be an idiot,” as no one needs such people.

In Russian

Это один из самых тестов в профессиональной и личной деятельности у меня.

Когда мне надо сделать выбор делать или не делать, я спрашиваю себя: “Ты, что идиот?”. Ответ на этот вопрос дает правильное решение.

Также я иногда так тренирую своих ближайших подчиненных (предварительно рассказав прием). Вот например, недавно тренировал на предмет что важнее “срок, качество, скоуп”:
– я: “Сегодня надо отправить 4 файла”
– я звоню в 21 вечера: “Как дела?”
– он: “у меня только 3 из 4, я думал завтра”
– я: “проведи тест “на идиота”
– он: “точно, нужно отправить 3, потом если что дослать завтра четвертую”

Научно-стратегическая подоплека почему поведение в сумме дает выйгрыш см. здесь.

Еще сама сила вопроса, сподвигает к мобилизации и принятию-таки решения. У Талеба изначально звучит “не будь лохом”, но я усилил)

Так что “не будьте идиотами”, такие никому не нужны”

Don’t say “no”. Always say “yes, if”.

Once I read the book “Getting to Yes”, and the most important thing I took from it is that you should always say “Yes”, or more precisely, “Yes, if”.

In my practice, I try never to say “no” at all. I always try to come up with a “Yes, if such and such”. This way, I build relationships instead of destroying them, and that is very important. And, at the same time, I still manage to do something useful for people, by providing them with the minimum help they need to solve their problems.

“For example, can you extend the warranty for another month?” “Yes, if you pay an extra fee.”
“Can you evaluate this?” “I suggest bringing in a vendor instead of us, they are better.”
“Can I have a raise?” “Yes, if you do this and that in two months” (and it’s good if the person does it, which means they deserve the raise)
“Can you estimate this request from the customer for a spaceship?” “Yes, 200-400 million, if you need more precision, let me know”…
And so on.

“You are not a prickly hedgehog, you are a wise owl, who at the very least one can always turn to for advice.”

In Russian

Когда-то прочитал книгу “Договориться можно обо всем“, самое главное что я из нее вынес: нужно всегда говорить “Да”, а точнее “Да, если”.

В своей практике я стараюсь вообще никогда не говорить “нет”, я всегда стараюсь придумать “Да, если то-то”. Таким образом я создаю отношения, а не разрушаю их, а это очень важно. ну и все равно я людям делаю что-то полезное, минимально помогая их проблеме.

“А вы можете расширить гарантию еще на месяц?”, “Да, если вы доплатите “
“А вы можете оценить то-то?”, “Предлагаю привлечь вендора вместо нас, они лучше”
“А можно больше зарплату”, “Да, если через 2 месяца ты сделаешь то-то” (ну и хорошо если сделает, значит соответствует новой)
“А можно оценить вот этот запрос от заказчика на звездолет”, “Да, 200-400 млн., если нужно более точно – скажите”..
И так далее.

“Ты не колющийся ёж, ты – мудрая сова, к которой как минимум можно прийти за советом всегда”

What is “capability” in Enterprise architecture?

“Capability” (оргвозможность) = “orgunit” (оргзвено) + practice + “order that allows the orgunit to carry out the practice at its discretion or in response to certain events”

Practice = discipline (knowledge from textbooks – “methodology of sawing logs”) + technology (“saw”, “IT system where we learned how to saw logs”)

P.S. Nothing happens without an order, keep that in mind. You can take people trained in Kanban, set up boards for them in Jira, but they won’t work without an order because they will simply be afraid that “they will punish us, we weren’t told to do that”.

In Russian

“Оргвозможность” (Capability) = оргзвено (orgunit) + практика + “приказ, что оргзвено может выполнять практику по своему желанию ну или по таким событиям”

Практика = дисциплина (знание из учебников – “методология пиления бревен”) + технология (“пила”, “ИТ-система, где мы учили, что мы спилили”)

P.S. Без приказа ничего нет, это надо иметь в виду. Можно взять людей, обученных Kanban, настроить им доски в JIra, но работать они без приказа не будут там т.к. просто будут бояться “нас же накажут, нам же не сказали”

How to develop a good strategy

One should honestly try to see their potential opportunities and organizational possibilities, and then choose a strategy in the middle. Otherwise, organizational possibilities, i.e. people, will resist “problems/opportunities”. It’s impossible to pursue opportunities without considering organizational possibilities. After all, you are managers, not shareholders who can simply provide money and create completely new organizational possibilities that did not exist before.

P.S. It’s important to understand that opportunities are not just “possibilities”, but also “problems/opportunities”. We don’t know in advance whether it’s a problem or an opportunity – that’s our problem. See here for more information.

A good strategy is not just a matter of management. As written here about managers, I have not seen good managers who are not visionaries.

In Rusian

Надо честно пробовать видеть потенциальные свои opportunity и видеть свои оргвозможности. Ну и посередине выбирать стратегию…

Иначе оргвозможности, люди, будут сопротивляться “проблемы / возможности”.

Ну и opportunity совсем в отрыве от оргвозможностпй не сделаешь. Вы же все-таки менеджеры, а не акционеры, которые просто денег могут дать и сделать совсем новую оргвозможность, которой раньше не было.

P.S. Надо понимать, что opportunity – на самоме деле не “возможности”, а “проблемы / возможности”. Мы заранее не знаем это наша проблема или возможность – см. здесь

Хорошая стратегия это не предмет менеджмента, Но как написано здесь про менеджеров – не видел я хороших менеджеров, которые не визионеры.

Why do your own blog?

Translation:

personal brand marketing

marketing for your department

improves team manageability

  • enhances your image
  • they see how you think and act similarly if they are for you

“Like the bat signal in the sky – if it’s on, Batman’s coming soon” – see why I wrote it here

Related to leadership, see here

In Russian

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

“Как знак бэтмена в ночи – если он горит, значит бэтмен скоро придет” – почему написал см. здесь

Связано с лидерством , см. здесь

In management, it is very important to “ignite people’s hearts with words”.

We often communicate with a top manager who tells me that I am too structured and that I don’t pay enough attention to people’s emotions.

He says that people like me, who analyze everything through their brain, are very rare.

The top manager believes that people should be managed through images and metaphors, such as “letting out the child” or “growing a flower”. Then they will respond positively.

I will try to incorporate more imagery into my articles first, and then use it in my communication with others.

This is related to leadership-construct, see here.

In Russian

Мы часто общаемся с одним топ-менеджером, что я слишком структурирован, что мне не хватает обращения к чувствам людей.

Он говорит, что как я табличками нельзя, что таких людей как я, цитата: “которые все через мозг” ну очень мало…

Топ-менеджер говорит, что людьми надо управлять через образы! “Выплеснуть ребенка”, “растим цветок”. Тогда они пойдут!

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

Связано с лидерством-construct , см. здесь