-
Notifications
You must be signed in to change notification settings - Fork 10
/
0389.txt
408 lines (408 loc) · 18.2 KB
/
0389.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
예 안녕하세요 포프입니다
저번 편에는 책 광고를 열심히 했죠
책 광고를 열심히 한 김에
그냥 언어 관련 얘기를 조금 더
이제 얘기를 할려 그래요
그 이거는 이제
최근에 제가 있는 대학교에서 이제 C++ 강좌를
없애자 좀 빼자 뭐 이런 얘기가 많이 나오면서
저랑 다른..
그분도 교수라고 해야죠
그 다른 생각 없는 교수랑 그리고
기타 중립이 많은 사람들
그런 사람들하고 쭉 토론을 하면서
생각이 정리된 거를 말할려고 해요
음 어떻게 말하는 게 제일 좋을까
뭐 이건 테크트리하고도 약간의 관련이 있을 수 있고
아니면 내가 정말 훌륭한 프로그래머가 돼서
나중에 엔지니어급이 되고 나중에 뭐
나이가 차서도 직장을 잃지 않는
그런 정말 나중에 노후가 편한
그런 개발자, 엔지니어, 아키텍트
이런 사람이 가기 위한..
생각을 한 그 과정을 다 정리한 건데
예전에 제가 한번 폴리글랏이라는 거에
대해서 되게 뭐라고 한 적이 있어요
한 언어를 제대로 하는 게 훨씬 중요하다고
그거랑 다르지 않아요
근데 이제 중요한 거는
그 한 언어가 어떻게 되냐라는 얘기었고
많은 얘기가 오갔죠
학교에서는 단기적인 성과를 보고
애들한테 단순한 것만 가르치자
당장 최저 시급의 프로그래머 직종을 잡을 수 있는
거의 학원화로 가자
이런 쪽의 주장을 하는 사람도 있었고
저는 그거는 충분히 할 수가 있고 그 외에 추가로
이제 애들이 발전할 수 있는 충분히 기본기가
되는 것들을 많이, 기초를 많이 가르쳐 놓고
그럼 애들이 일을 해 나가는 동안
솔직히 직장을 가지는 순간 추가로
공부를 한다는 거 학교로 돌아가서
아니면 자기 짬을 내서 공부한다는 건
되게 힘든 일이에요 사실은
뭐 하면 당연히 좋지만
그럼 그런 일이 없게끔
얘네들의 기본을 충실히 잡아 주고
얘네들이 그냥 직장 일을 하면서부터
그 기본이 뭔지를 점점 느끼게 돼서
성장할 수 있는 기반을
잡아 줘야 된다가 제 입장이에요
그래서 이런저런 얘기가 오가다가 결과적으로는
전에도 노조 파업 비디오 만들면서 얘기했지만
지금 현재 학교 상태가 별로 안 좋은 이유가
닷컴 버블 때 그거 터지고 직장을 못 가진 애들이
꽤 많이 학교에 남아 있어서라고 생각을 하는데
그 사람들이 이제 굉장히 많은..
한 10년 머물렀으니까 꽤 말도 안 되는
헛소릴 하면서 자릴 잡고 있죠 사실은
결과적으로 이런저런 얘기가 오갔는데
제가 주장한 내용 쪽에는 굉장히 많은 쪽의
industry 사람들이 동의를 하는 내용이었고
저쪽 주장은 industry에서 이제..
뭐라 그럴까..
industry를 이끄는 아니면 거기서 평판이 좋은
명성이 좋은 그런 회사들의 입장은 아니고
오히려 잠시 약 팔고 사라지는
그런 회사들의 입장이 반대 쪽 입장이었죠
그래서 결과적으로 얘기하면은
한 언어를 파는 게 좋다고 제가 얘기했어요
근데 그게 약간 수정을 하면은
두 언어를 잘 아는 게 중요한 것 같아요
두 언어
그니까 폴리글랏처럼 무슨 50만 가지
언어를 아는 게 중요한 게 아니라
뭐 처음 시작은 한 언어고
결과적으론 두 언어를 잘 알면은
나중에 어떤 것도 다 할 수 있다
라는 게 제 생각이에요
그럼 두 언어가 뭐냐
저는 이제 영어로는 이렇게 설명을 했어요
한 언어는 managed 언어고
다른 하나는 unmanaged 언어다
managed라는 거는 관리가 되고 있는 언어
다른 거는 관리가 안 되는 언어라는 얘긴데
이 관리가 메모리 관리를 의미하는 거에요
그니까 managed 언어는 언어 자체에서
메모리 관리를 해 주는 언어에요
가비지 컬렉터 들어가는 언어들
자동 레퍼런스 카운팅 들어간 언어들
그러면 결과적으로는 자바, C#, 파이썬
온갖 언어들? 쓰기 쉬운 언어들?
그게 이제 managed 언어고
unamanaged 언어는 제가 직접
메모리를 가져오고 풀어 주고
손수 해 줘야 되는 언어들
즉 하드웨어와 좀 더 가까운 언어들
그러면 C, C++
러스트는 잘 모르겠어요
그 언어라고 봐야 될지 말지는
C, C++, 어셈블리
이 정도라고 얘기를 해야겠죠 사실은
그래서 이 세 가지 언어가 unmanaged에요
그러면 왜 두 개를 다 아는 게 중요하냐
이렇게 보면 될 것 같아요
일단 제가 무수히 많은 얘기를 했지만
정말 엔지니어급에 올라가고
정말 아키텍트급에 올라가는 사람들은
추상적인 소프트웨어가 어떻게 돈다는 걸로
거기에 올라가..는 경우도 있겠지만
힘들고
올라가더라도 거기서 성공하기는 되게 어려워요
왜냐하면은
제가 예전에 그 얘길 한 적이 있는지 모르겠지만
제가 만약에
그 정도 급으로 올라가는 사람이 된다면
그게 어느 분야든 간에
저는 이제 레이서를 얘기를 많이 해요
운전하는 사람들 그니까 경기, 자동차 경주하는 사람들
그 사람들은 기본적으로
자기가 쓰고 있는 엔진이 어떻게 돌고
그 내부가 어떻게 발전이 되고
어떻게 했을 때 이게 좀 더 효율이 높아지고
이런 개념을 알 수밖에 없어요
그거를 알아야만 남들이 못 하는 추가적인 10%,
20% 효율을 더 낼 수가 있는 거거든요
그거를 이해하는 게 unmanaged 언어라는 거에요
왜냐하면 결과적으론 메모리 관리해 주는 언어도
그 메모리 관리하는 코드를 누군가가 짜 준 거에요
그것도 일반적으로 누군가가 쓸 수 있게 짜 준 거죠
그러면 그런 언어를 내 쪽에 돌리는 순간
그거에 대한 비효율성이 들어올 수밖에 없고
실제 아키텍트 레벨까지 올라가면은 그 비효율성
10% 20%의 비효율성 없애는 것도
굉장히 중요한 일일 수도 있고
아니면 그 비효율성 때문에 어떤 문제가 생긴다 그럼
그거를 고칠 수 있는 사람은
그거 내부를 이해해야 되거든요
그 사람들이 바로,
세상에 프로그래머가 1000명이 있다면
그 중의 10명 정도가 올라갈 수 있는
탑 1% 사람들이 그 사람들이에요
그래서 정말 프로그래밍 쪽에서
대단한 일을 하는 사람들을 보면은
C, C++ 모르는 사람이 없어요
그게 재밌는 거에요
아니면 어셈블리까지
그러면은 그 unmanaged가 중요하다는 거는 알았죠
그럼 managed는 왜 중요하냐
그니까 메모리 관리 직접 해 주는 것들
재밌는 건 뭐냐면
저도 시작은 unmanaged였거든요
그럼 그 코딩을 하다 보면은
어떻게 해야 이 메모리 관리를
자동으로 할 수 있을까?
이거를 자동으로 처리하는 법은 없을까?
어떻게 실수를 줄여 줄 수 있는
새로운 코딩 패러다임은 없을까?
이런 것들을 많이 간과하게 돼요
왜냐하면은 나는 할 수 있으니까
훌륭한 프로그래머는 해야지라고 생각을 하는데
정작 내가 뭐 아키텍트 레벨까지 올라가서
밑에 천 명 프로그래머를 다뤄야 되면
그 중에서 그거를 정말 잘하는 애들이
10%도 안 되거든요
그럼 나머지 900명이 실수를 맨날 만드는
코드 베이스를 두고 있을 수는 없잖아요
그러면 그런 걸 없애기 위해선
어떤 practice를 채용해야 되는지
이런 것들에 대한 답이
managed programming에 많이 있는 거에요
그래서 거기서 보면서 새로운 아이디어를 얻고
아 이런 건 이렇게 할 수 있구나
근데 여기서 끝나면은
아 이건 마법처럼 도는구나
아무 차이가 없죠
아 이걸 하기 위해서 내부적으로 이렇게 했겠구나
내부적으로 이렇게 만들었을 때
아 이런 또 다른 문제가 있구나
그럼 이건 아무리 좋지만
이런 부분에 쓰면 안 되겠다
이런 판단도 내려져요
그래서
이런 판단을 못 내리는 프로그래머,
엔지니어가 헤드로 있는 회사들은
새로운 기술 들어왔을 때
아 이거 대단한데
그리고 막 썼다가
여기저기 터져 갖고
오히려 더 돈 낭비하고
회사에 누를 끼치는 경우도 많죠
그래서 managed하고 unmanaged는
솔직히 둘 다 아는 게 좋긴 좋아요
그러면 되게 재밌는 거는
이제 학교로 돌아가서
과연 학교는 어떤 거를 해야 되냐는 거에요
일단 학교의 입장에서는
내가 정말 교육의 품질보다는
단순히 애들을 빨리 직장을 잡게 하고
니들 직장 잡은 순간 나하고는 상관없어
나는 80%, 90% 학생이 취업을 했다는
그 숫자만 있으면 돼라는 생각을 하면은
당연히 갈 길은 뻔해요
자바, C#, 모바일, 웹 이런 것들 후딱후딱 가르쳐서
CSS 할 줄 알고 HTML 할 줄 알고
대충 코딩 얼기설기 짤 줄 아니까
가서 최저 임금으로 돈 받으면 돼
이거면 끝인 거에요
그런데 중요한 거는
이 모든 언어들이 다 managed 언어죠
근데 얘네들이 이제 나가서 일을 하다 보면은
뭐 메모리 관리 누가 다 해 주잖아요 어차피 코드에서
그러면 생각을 잘 안 해요 원래 되던 거니까
그러면서 코딩을 짜면서도 새로운 거를 하면서도
그냥 내부가 어떻게 도는지 깊이 이해를 못 하니까
그냥 그 순간 그 순간에
그 기능을 만들기 위해서 코딩을 짜고 있을 뿐이지
그거를 하면 할수록
그 뒤에 있는 컴퓨터가 어떻게 도는지를
점점 경험적으로 이해해 가는 게
늘어나질 않아요 많이 늘어나질 않아요
그래서 10년이 지나도 20년이 지나도
별로 차이가 없는 거에요
뭐 당연히 나아졌지 이것저것 많은 일을 했으니까
그러나 정말..
야 니가 지금 35살인데
내가 지금 대학 졸업한 30세..
아니, 대학 졸업하면 몇 살이지?
한국은 군대 가니까 서른쯤 되나?
스물여덟?
스물여덟 애가 2년 지나 삼십 된 애들보다
니가 나은 게 뭐 있어? 이러면
없는 경우가 되게 많아져요
그리고 이제 회사에서 승진하는 직급을 보면은
어느 순간까지는 다 승진을 하다가
거의 이제 위에 가면은 더 이상
승진할 곳이 없는 경우가 있어요
그럼 거기가 사람들이 정체돼 있다가
밑의 사람이 올라오면
갈아치워지는 그런 부분이 있어요
많은 사람들이
그 위에 올라가는 게 굉장히 작은,
bottleneck이라고 저는 하는데
뭐, 10명 중의 1명?
그것도 안 될 수도 있고
거기에 올라가기 위해서는
컴퓨터를 훨씬 더 잘 이해해야 되는 거에요
왜냐면 뭐를 던져 줘도 너는
할 수 있는 사람이어야 되니까
근데 재밌는 건 이거에요
저는 학교가 단순히 취업률을
높이기 위해서 그짓을 하더라도
1년은 unmanaged 언어를
가르쳐야 된다고 생각을 해요
그리고 누구나 1년은, 1년 동안은 정말
unmanaged 언어를 충분히 써 봐야 된다고 생각을 해요
그게 한 학기에 한 과목 해서 두 학기 동안
그 언어를 열심히 배우든 뭐 하든 간에
뭐 지금 unmanaged 언어가 많지 않으니까
결과적으론 C, C++ 또는 어셈블리, C, C++
이렇게밖에 될 수가 없죠
이거를 하면서 실제 OS단에서, 하드웨어단에서
메모리 관리하는 법 배우고, 포인터 옮기는 법 배우고
아 메모리 관리는 이렇게 되는 거구나
이렇게 해서 메모리가 누수가 생길 수도 있고
이렇게 하면 복사를 하기 때문에 느려지는 거고
이래서 자바하고 C#은 모든 게 포인터구나
자바하고 C#에서는 모든 게 포인터에요 참고로
거의 모든 게
그래서 그런 거를 알아야지만
이 모든 게 이해가 되는 거에요
그리고 이 1년짜리 생각..
그니까 컴퓨터가 어떻게 도는지를
이해하기 위해서 1년 정도를 보내면
나중에 설사 직장을, C#을 잡든 자바를 잡든
그런 직장을 잡더라도 코딩을 하면서
아 이 코드는 이렇게 하면은 느릴 수밖에 없구나
뭐 데이타 복사가 많이 일어나니까?
메모리 해제가 많이 일어나니까?
그럼 메모리 해제를 없애기 위해선 어떻게 해야 될까
이런 고민들을 할 수밖에 없어요
그 뒤에 보이는 마법들을 생각하게 되거든
아 내가 C, C++에서 배웠던 건 이만큼이 전부고
이 이상은 존재하지도 않는데
다른 언어에서 이거를 지원한다는 거는
누군가가 만든 코드구나
그럼 그걸 어떻게 만들었을까라는
생각을 할 수밖에 없거든요
그러면 그냥 단순히 다른 언어
실제는 이제
모든 거를 되게 편하게 해주는 그런
다른 언어를 보면서도 내부를 고민을 하는 거죠
그리고 그러면서 그게..
C나 C++을 직장에서 오래 쓰는 것만큼은 아니지만
이 개념이 전혀 없이 그냥 계속
managed 언어만 쓰는 애들보다는
성장 속도가 빠를 수밖에 없어요
그리고 이 성장 속도라는 게 재밌는 게
처음에는 그 많은 거를 이해할려고 하면은
되게 느린 것 같거든요
근데 한 2, 3년 정도가 지나가면서부터는
그 기본을 이해한 애들이 점점 속도가 빨라지기 시작하고
그게 5년, 10년이 지나면
따라잡을 수 없을 정도로 속도가 올라가 버려요
그래서
이제 뭐 학교가 굉장히 변질이 많이 됐고
몇 번이나 얘기했듯이
정말 훌륭한 인재들이 학교보다는
업계에 많이 나가 있는 상황이고
그래서 그만큼
이런 제대로 된 시야?
제대로 뭘 가르쳐야 되는지도 모르고
자기가 정말 직장에서 뭐가 중요한지도 모르는 애들
그런 애들이 많이 가르치고 있어서
이 문제가 난다고 생각을 하는데
제가 이제 채용을 하는 입장이잖아요
채용을 하는 입장에서 똑같은 걸 봐요
어느 학교를 나왔다 그러면
물론 그 사람 개인 인터뷰도 보지만
그 학교의 커리큘럼을 볼 수밖에 없어요
이 학교가 정말 말 그대로 그런 거 전혀
무시하고 있는 학교다
그러면 얘네들이 어느 정도 수준에서
어느 정도 끝날지가 대충 보여요
예외도 있지만
그러면 그 정도 애들한테
제가 선심을 쓰듯이
야 그래 너 미래에 대해서 투자를 할 테니까
니가 실제 그 몸값은 안 되는데
투자하는 위치에서 좀 더 돈을 더 많이 줄게
라는 bet을 때릴 수도 없어요
그래서 이거는
프로그래머로 직종을 잡고 그리고 이거로 정말
평생 먹고 싶은 사람들한테 하고 싶은 얘기는
두 언어를 잘 알아야 되는데
managed 언어를 익힐 기회는 엄청 많아요
엄청 많아요
그러나 지금 사회에 그런 이상한
팔아먹기식? 이런 교육 시스템 때문에
제가 볼 때는
unmanaged 언어에 대한 중요성을
일부러 깎아내리고 있는 경우가 더 많은 것 같아요
근데 제가 여태까지 만났던 웹 쪽에 대단한 아키텍트들도
C++을 하지는 않았을지언정 직장에서
학교에서 충분히 배웠고
C++에 대한 이해도가 굉장히 높은 친구들이 많아요
C나 C++ 쪽에서
그리고
아니 굉장히 많은 게 아니라 전부 다에요
그거를..
C나 C++ 얘기를 하면서 메모리 쪽 얘기를 했을 때
그거를 이해 못 하는 애들은
그 수준에 올라가지도 못했어요
제가 봤던 아키텍트급에 있는 애들은 다 그랬어요
그리고 걔네들이 나이가 많지도 않아요 그렇게
어린 애는 서른 살 짜리도 그 자리에 있는 애가 있어요
걔는 재빨리 코딩하고 학교도 재빨리 때려치우고 나와서
일 시작한 다음에 한 5년, 6년 안에
거기까지 올라간 애에요
근데 걔도 C, C++의 개념이 굉장히 잘 잡혀 있어요
제가 어떤 contract를 주더라도 할 수 있을 정도로
그 직장 경력이 없는데도 불구하고 그쪽으로
순수하게 C#, 자바스크립트, 자바
이런 거만 한 애임에도 불구하고
세상에 온갖 잡소리는 많아요
폴리글랏 무브도 그랬고
요즘 많이 죽은 것 같아서 다행인데
한 언어를 깊게 파는 게 중요해요 일단은
근데 그 한 언어를 깊게 파고
두 번째 언어를 파야 되는데
그 두 개가..
하나는 managed 언어
하나는 unmanaged 언어여야만
자기 발전에 도움도 되고
나중에 새로운 언어를,
어떤 언어가 들어오든 간에
다 가져올 수가 있어요
러스트도 뭐 둘 중에 하나고
뭐 C#도 자바도 둘 중에 하나일 수밖에 없고
자바스크립트도 뭐 그 중의 하나기 때문에
그래서 제가 정말 정말 정말 말하고 싶은 거는
unmanaged 언어 반드시 하라는 거 학교 다닐 때
아니면 혼자라도 하라는 거 직장 가기 전에
그거를 알고 커리어 시작하는 거랑
그거를 모르고 커리어 시작하는 거랑은
진짜 천지 차이에요
그리고
온갖 잡다한 언어를 쓸 일이 있을 수도 있어요
회사에서 일하다 보면은
그러나 그거에 현혹되지 마세요
그거에 현혹이 되는 순간
그 언어가 사라지면은
뭐, 다른 언어로 내가 잘 넘어갈 수 있겠네
그렇게 얘기하잖아요?
근데 한 언어를 깊게 판 사람이
훨씬 더 다른 언어로 잘 넘어가요
왜냐하면은 깊게 알고 있기 때문에
대충 다 이게 잡히거든 패턴이
이건 이거고 저건 저거고
아 이건 요렇게 바뀌었구나 요 정도
그러나 수박 겉 햝기식으로 이것저것저것
3개월씩 찍고 넘어가는 사람들,
6개월씩 찍고 넘어가는 사람들한텐 그게 어렵죠
그래서
그 얘기를 꼭 하고 싶었어요
근데
원래는 책이 나오고 나서 얘기를 할려 그랬는데
굳이 그럴 필요가 없었던 것 같아요
예 포프였습니다