협업(Cooperation)과 경쟁(Competition)을 합쳐 Coopetition 협쟁(協爭)이라는 표현을 처음 쓴 것으로 알려진 인물은 에릭 슈미트 전 구글 최고경영자(CEO)입니다. 그는 삼성과 애플이 오랫동안 앙숙으로 지냈지만 결국 협력할 것은 협력하고 경쟁할 것은 경쟁하는 관계로 진화를 했듯이, 패권을 놓고 미국과 중국 역시 그렇게 가야한다고 말한바 있습니다. 또 하버드대의 그레이엄 앨리슨은 11세기 중국의 송나라와 요나라의 관계를 친구이자 적인 우적(Frenmity)으로 묘사하기도 했고요.
경쟁자끼리 협력하는 이유는 무엇일까요. 두 가지만 꼽는다면 (1) 경쟁 비용이 너무 많이 든다 (2) 프로젝트를 한 회사에서 관리하기에는 너무 크다.하버드비즈니스리뷰의 설명입니다.
예를 들어 IT업계에는 스마트홈 표준 규격인 매터(Matter)를 도입할 움직임이 있는데요. 구글 아마존 삼성 LG 애플 필립스 등 수많은 기업들이 참여를 선언했어요. 스마트홈 디바이스 표준이 제각각이라 고객은 늘 불만이죠. 삼성 갤럭시폰으로 LG 디오스냉장고를 조작 못하니까요. 한 회사가 스마트홈 전체 시장을 독점할 수 없으니 협쟁이 필요할 것입니다. 예를 더 들어 보겠습니다.
독일 물류업체인 DHL은 미국의 물류업체인 UPS를 향해 이런 제안을 했어요.
🛺DHL: 미국 내에서 물류 배송을 UPS 네가 해주면 안 될까? 너희가 해주면 우리 회사는 약 10억달러를 아낄 수 있을 것 같아.
🚌UPS: (경쟁사 좋은 걸 내가 왜 해야하지??? 한데 내가 거절하면 FedEx에 달려가 제안을 하겠지?) 콜!
UPS 입장에선 DHL의 제안을 거절했다면, 아마 미국내 배송이라는 추가 수익을 FedEx에 빼앗길 수 있었겠죠? 이는 단적인 사례입니다. 애플은 사실 삼성과 LG의 경쟁자인데요. 하지만 삼성과 애플은 디스플레이 패널, 적층세라믹콘덴서, 카메라 모듈 등을 판매합니다. 왜? 두 회사 부품이 우수하지만, 꼭 삼성과 LG만 파는 것은 아니거든요.
🔎크게보기
협쟁이 이뤄지려면 경쟁사간에 두 가지가 필요합니다. 각각 자신의 분야에서 최고일 것. 기울어진 운동장이 아닐 것. 예를 들어 포드는 자신이 투자한 자율주행 업체인 아르고AI를 폭스바겐에 소개를 시켜서 투자를 받도록 했어요. 이유는? 어차피 폭스바겐 역시 자율주행 업체들을 찾고 있을 텐데, 그럴 바엔 포드가 투자한 자율주행 기술이 표준이 되도록 하는 것이 옳다고 생각한 것입니다. GM 넌 안 돼! 중요한 점은 협쟁을 하려면 CEO의 사고방식이 매우 유연해야합니다. 욕먹어도 괜찮다는 태세전환이 필요합니다. 애플의 스티브 잡스는 1997년 마이크로소프트가 더 이상 적이 아니라고 선언을 하고, 1억5000만 달러에 달하는 투자를 받습니다. 하지만 스티브 잡스나 빌 게이츠 모두 야유 세례를 받은 바 있습니다.
나무에 가위질을 하는 것은 나무를 사랑하기 때문이다. 부모에게 꾸중을 듣지 않으면 똑똑한 아이가 될 수 없다. 겨울 추위가 한창 심한 다음에 오는 봄의 푸른 잎은 한층 푸르다. 사람도 역경에 단련된 후에야 비로소 제값을 한다. - 벤자민 프랭클린
인간미의 본질은 자신을 희생해서라도 상대방을 진심으로 아끼고 보살피는 마음입니다. 무조건 부드럽고 싫은 소리를 안 하는 것이 인간미라고 착각해서는 안 됩니다. 상사가 부하의 잘못을 지적하고 지도하기 위해 꾸짖는 것이야말로 진정한 인간미의 말로입니다. (이건희 회장) 단, 질책은 정말 그 사람을 키우기 위해 자극이 필요하다고 판단될 때만 할 수 있는 자제력이 필요합니다.
덴마크에서 온 두 청년도 기억에 남는다. 산티아고 순례길을 다 걸은 후 요트를 타고 대서양을 건너 미국으로 갈 계획이라고 했다. 그때쯤에는 무역풍이 불기 시작해 바람을 이용하여 큰 바다를 건널 수 있다고 했다. 바이킹의 기질이 핏줄에 흐르고 있는 게 분명했다.
- 김인식의《자유로운 영혼으로 혼자서 걸었습니다》중에서 -
* 산티아고 순례길을 걷다 보면 참으로 많은 사람들을 만나게 됩니다. 각각의 이유로 세계 도처에서 온 사람들입니다. 덴마크에서 온 청년도 만나고, 호주에서 온 아흔 넘은 할아버지도 만납니다. 공통점이 하나 있습니다. 저마다 남다른 꿈이 있다는 사실입니다. 대체로 건강한 꿈이고, 그 도전 정신과 열정에 우연히 함께 걷게 된 사람도 대서양을, 큰 바다를 건너는 꿈을 꿉니다.
"몰입이 좋은 것은 알겠어. 페이스북이 구성원들의 몰입도를 높여서 잘 된 것도 알겠어. 그런데 몰입은 어떻게 만드는거야?" 라고 물으실려고 그러셨죠? 아래에 몇 가지 대답이 있어요.
몰입을 촉발하는 22가지
여러분이 잠든 사이, '몰입'에 대해 실리콘밸리 엔지니어들에게 강연을 했던 스티븐 코틀러 작가는 몰입을 촉발하는 요소에 22가지가 있다고 했어요. 궁금증, 자율적인 상태, 완전한 집중이 가능한 상태, 분명한 목표, 도전과제에 비해 충분한 능력 등등이 그런 요소들이에요. (자세한 것은 위의 사진을 참조해 주세요) 하지만 그는 이런 요소들을 세세하게 강조하지는 않았어요. 대신 그는 이 세 가지를 강조했어요.
"첫째, 몰입이 가능하려면 신체적으로 정신적으로 건강한게 좋습니다. 하루에 7~8시간 정도 충분한 수면을 취하시고 몸을 최상의 컨디션으로 유지하세요. 그리고 가정과 직장에서 긍정적인 에너지를 주고 받으세요.
둘째, 몰입이 가능하려면 목표가 분명해야 합니다. 당신이 평소에 성취하지 못했지만, 최선을 다하면 성취할 수 있는, 그러한 불가능에 가까운 어려운 목표를 분명하게 설정하는 것 만으로 몰입이 이뤄질 수도 있습니다.
셋째, 두뇌가 몰입에 들어가려면 최소한 90분 정도가 필요합니다. 그 기간 동안 다른 방해요소 distraction 들을 제거하세요. 저 같은 경우 모든 컴퓨터 모바일 앱을 꺼 둡니다. 메일 메신저 등은 다 꺼 두고요.
Each of them can be configured with its own custom text and you can decide if the addon should attempt to split the name of the method according to its case.
Trailing
Templates
Auto-complete doxygen commands
Config options
// The prefix that is used for each comment line except for first and last. "doxdocgen.c.commentPrefix": " * ",
// Smart text snippet for factory methods/functions. "doxdocgen.c.factoryMethodText": "Create a {name} object",
// The first line of the comment that gets generated. If empty it won't get generated at all. "doxdocgen.c.firstLine": "/**",
// Smart text snippet for getters. "doxdocgen.c.getterText": "Get the {name} object",
// The last line of the comment that gets generated. If empty it won't get generated at all. "doxdocgen.c.lastLine": " */",
// Smart text snippet for setters. "doxdocgen.c.setterText": "Set the {name} object",
// Doxygen comment trigger. This character sequence triggers generation of Doxygen comments. "doxdocgen.c.triggerSequence": "/**",
// Smart text snippet for constructors. "doxdocgen.cpp.ctorText": "Construct a new {name} object",
// Smart text snippet for destructors. "doxdocgen.cpp.dtorText": "Destroy the {name} object",
// The template of the template parameter Doxygen line(s) that are generated. If empty it won't get generated at all. "doxdocgen.cpp.tparamTemplate": "@tparam {param} ",
// File copyright documentation tag. Array of strings will be converted to one line per element. Can template {year}. "doxdocgen.file.copyrightTag": [ "@copyright Copyright (c) {year}" ],
// Additional file documentation. One tag per line will be added. Can template `{year}`, `{date}`, `{author}`, `{email}` and `{file}`. You have to specify the prefix. "doxdocgen.file.customTag": [],
// The order to use for the file comment. Values can be used multiple times. Valid values are shown in default setting. "doxdocgen.file.fileOrder": [ "file", "author", "brief", "version", "date", "empty", "copyright", "empty", "custom" ],
// The template for the file parameter in Doxygen. "doxdocgen.file.fileTemplate": "@file {name}",
// Version number for the file. "doxdocgen.file.versionTag": "@version 0.1",
// Set the e-mail address of the author. Replaces {email}. "doxdocgen.generic.authorEmail": "you@domain.com",
// Set the name of the author. Replaces {author}. "doxdocgen.generic.authorName": "your name",
// Set the style of the author tag and your name. Can template {author} and {email}. "doxdocgen.generic.authorTag": "@author {author} ({email})",
// If this is enabled a bool return value will be split into true and false return param. "doxdocgen.generic.boolReturnsTrueFalse": true,
// The template of the brief Doxygen line that is generated. If empty it won't get generated at all. "doxdocgen.generic.briefTemplate": "@brief {text}",
// The format to use for the date. "doxdocgen.generic.dateFormat": "YYYY-MM-DD",
// The template for the date parameter in Doxygen. "doxdocgen.generic.dateTemplate": "@date {date}",
// Decide if you want to get smart text for certain commands. "doxdocgen.generic.generateSmartText": true,
// Whether include type information at return. "doxdocgen.generic.includeTypeAtReturn": true,
// How many lines the plugin should look for to find the end of the declaration. Please be aware that setting this value too low could improve the speed of comment generation by a very slim margin but the plugin also may not correctly detect all declarations or definitions anymore. "doxdocgen.generic.linesToGet": 20,
// The order to use for the comment generation. Values can be used multiple times. Valid values are shown in default setting. "doxdocgen.generic.order": [ "brief", "empty", "tparam", "param", "return", "custom", "version", "author", "date", "copyright" ],
// Custom tags to be added to the generic order. One tag per line will be added. Can template `{year}`, `{date}`, `{author}`, `{email}` and `{file}`. You have to specify the prefix. "doxdocgen.generic.customTags": [],
// The template of the param Doxygen line(s) that are generated. If empty it won't get generated at all. "doxdocgen.generic.paramTemplate": "@param {param} ",
// The template of the return Doxygen line that is generated. If empty it won't get generated at all. "doxdocgen.generic.returnTemplate": "@return {type} ",
// Decide if the values put into {name} should be split according to their casing. "doxdocgen.generic.splitCasingSmartText": true,
// Array of keywords that should be removed from the input prior to parsing. "doxdocgen.generic.filteredKeywords": [],
// Substitute {author} with git config --get user.name. "doxdocgen.generic.useGitUserName": false,
// Substitute {email} with git config --get user.email. "doxdocgen.generic.useGitUserEmail": false
// Provide intellisense and snippet for doxygen commands "doxdocgen.generic.commandSuggestion": true
// Add `\\` in doxygen command suggestion for better readbility (need to enable commandSuggestion) "doxdocgen.generic.commandSuggestionAddPrefix": false