Graph Search, Shortest Paths, and Data Structures 강의 수강 후기

Coursera Standford University Algorithms 분야의 두 번째 강의인 Graph Search, Shortest Paths, and Data Structures의 수강을 완료했다. 수강 기간은 2020년 1월 29일 ~ 2020년 2월 21일.

  1. Divide and Conquer, Sorting and Searching, and Randomized Algorithms
  2. Graph Search, Shortest Paths, and Data Structures
  3. Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming
  4. Shortest Paths Revisited, NP-Complete Problems and What To Do About Them

첫 번째 강의보다 쉽고 재밌었다. 알고리즘보다 자료구조를 좋아하는 성향 때문인 것 같기도 하고, 수식이 덜 나와서 그런 것 같기도 하고, 무엇보다 Programming Assignment가 가장 재미있어서 매주 할당된 강의를 다 소화하기도 전에 관련 내용 공부가 끝나면 바로 도전했다. 이번에도 역시 Go언어를 사용했고 그 과정은 즐거웠다.

VSCode에서 Go언어로 Dijkstra’s Alrogithm 구현하기

공부한 주제들 중 비중있는 녀석들의 제목만 추려보면 다음과 같다.

  • Graph Search
    • Connected Components
    • Shortest Paths
      • Dijkstra’s Algorithm
  • Heap
  • Balanced Binary Search Tree
    • Red-Black Tree
  • Hash Table
    • Bloom Filter

2월 13일 아내의 복직 이후로 육아를 전담하게 되면서, 아이가 깨어나기 전 새벽에, 낮잠 잘 때, 잠든 후 밤 늦게 틈틈히 공부한다고 눈 앞에 보이는 주제에만 겨우 집중했는데, 4주 과정을 다 종합해보니 이렇게 많이 다뤘나 싶다.

Correctness에 대한 Proof, Performance에 대한 Analysis 그리고 틀린 시험 문제 등 100% 이해하지 못하고 넘어가는 부분들이 꺼림직하게 느껴질 때도 있지만, ‘공부를 이어나가는 게 어딘가’ 하는 핑계를 대어본다. 그래도 허락된 시간 안에서는 관련 자료도 찾아보면서 이해하려고 애썼던 기억이 난다. ‘회사에 있을 때 동료들과 같이 강의를 소화하면서 서로 모르는 것 물어보고 토론할 수 있었다면 더 좋았을텐데’ 하는 아쉬움이 남는다.

지금까지 3개의 Programming Assignment에서 Graph를 사용했는데, 3개의 Graph를 별도로 구현해야했다. 필요한 operation이 서로 다르고, 각 operation에 대하여 최적의 실행시간을 제공하기 위해선 내부 자료구조도 다를 수 밖에 없었기 때문이다. 반면에 최근 몇년간 업무에서 사용했던 자료구조는 대부분 프로그래밍 언어에서 제공하는 Hash Table을 확장한 수준을 벗어나지 못했다. 개발자로서 실력을 유지하려면 PS를 취미로 하는 등 별도의 개인적인 노력이 필요할 것 같다고 느꼈다.

세 번째 강의를 듣기 전에 2~3주 정도의 공백을 두려고 한다. 그 사이에는 Dijkstra’s Algorithm에서 Heap을 사용하는 버전을 Go언어로 구현해보고, 이 강의를 들으면서 시간 부족으로 중단했던 <Go 언어를 활용한 마이크로서비스 개발>의 진도를 뽑아볼 생각이다. Dijkstra’s Algorithm에서 사용하는 Heap은 중간 노드를 삭제할 수 있는 operation이 필요해서 직접 구현해야 하기 때문에 좋은 공부가 될 것 같다.

노키아의 변신

스마트폰 사업의 실패로 침몰하던 노키아를 네트워크 인프라 회사로 변신시켜 살려낸 리스토 실라스마 회장이 쓴 책이다. 개인적으로 너무 재밌게 읽었고 배울점이 많아서 주변 분들에게 강력히 추천하고 싶다.

그는 노키아가 잘 나가던 2008년에 이사회에 합류하여, 망하기 직전인 2012년에 회장을 맡게 된다. 어쩌면 노키아의 마지막 회장이 되는 불명예를 안을지도 모를 상황에서 그를 이끈 것은 ‘편집증적 낙관주의’에 대한 확신이었다.

자신을 휘감고 있는 온갖 두려움과 혼란에도 불구하고 마주한 문제들에 대한 해결책을 끝내 찾아내고 말 거라는 스스로에 대한 믿음이 있기에 마음 바탕이 낙관적일 수 있는 사람을 뜻한다. 하지만 다른 한편 당신은 잘못될지도 모를 것에 대해 편집증적이다. 따라서 사람들이 문제가 없다고 장담할 때조차 문제는 틀림없이 있으므로 그에 대비한다. 문제를 발견하고 그에 대해 살펴보면 당신은 그것을 어떻게 피할지 혹은 최소화할지 이해할 수 있다.

그가 회장이 된 이후 단행한 첫 번째는 당면한 과제에 바로 뛰어드는 것이 아니라, 이사회의 행동수칙을 구성원들과 함께 논의하여 결정하는 것이었다. 지금까지 이사회가 제대로 역할을 수행하지 못한다고 보았기 때문이다. 위기를 마주했을 때 해야 하는 가장 똑똑한 일은 한발 물러선 채 심호흡하면서 모든 선택지를 떠올리는 일이라는 그의 신념에서 비롯된 행동이었다.

마이크로소프트와 Device & Service 사업 부문 매각 협상을 벌일 때, 실라스마, 이사회, 경영진은 시나리오 플래닝을 통해 수많은 시나리오를 분석하고 그에 따른 대안들을 준비함으로써 노키아에게 유리한 쪽으로 협상을 성공시켰다. 시나리오 플래닝은 ‘편집증적 낙관주의’의 필수 요소였다.

‘올바른 일’이라는 단어가 많이 등장한다.

나는 언제나 개인 간에든 팀 간에든 기업 간에든 상관없이 어려움이야말로 신뢰를 쌓을 수 있는 좋은 기회라고 믿어왔다. 모든 장애물은 바로 올바른 일을 할 수 있는 기회이자 영원한 어떤 것을 구축할 수 있는 계기다.

어려운 결정을 내려야 할 때마다 내가 늘 생각하는 것, 그리고 우리가 흔히 서로에게 들려주곤 한 말은 “우리는 그저 올바른 일을 할 필요가 있다”는 것이다.

나는 당신도 스스로의 행운을 만들어낼 수 있다고 믿는다. 올바른 일을 한다면 틀림없이 가능성의 곡선을 당신에게 유리한 쪽으로 바꿀 수 있다. 당신의 대안적 미래에 대해 생각해보고, 시나리오를 기반으로 한 사고를 연습하라. 어떤 나날의 행동이 상황을 당신에게 이롭도록 이끌어갈 가능성을 늘리고 부정적 결과를 낳는 시나리오가 현실화할 가능성은 줄일 수 있는지 생각하라. 한마디로 우리 각자는 1년 내내 날마다 긍정적 시나리오의 실현 확률을 키워주는 기회를 갖는다.

‘올바른 일’이란 무엇일까? 어떤 일을 마주했을 때 역할과 관습에 갇히지 않고, 여러 가능성을 생각해보고 대안을 마련하고, 그렇게 신중하게 그려진 시나리오에 따라 필요한 일을 행동으로 옮기는 것이 이 책의 내용을 나름대로 종합해서 얻어낸 답이다. 노키아의 핵심 사업부문을 매각하는 것은 핀란드 국민들에게 정서적으로 받아들이기 어려운 사건이어서, 실라스마는 초기에 많은 비난을 감수해야했지만 ‘올바른 일’을 하고 있다는 확신이 그와 노키아 구성원들이 흔들림없이 앞으로 나갈 수 있도록 해주었고, 시간이 지난 후에는 노키아의 선택이 옳았음을 많은 사람들이 인정하게 되었다.

“무소식은 나쁜 소식이다. 나쁜 소식이 희소식이다. 그리고 희소식은 무소식이다.”

부정적 시나리오가 수두룩하게 제출되어서 좋았다.

우리는 어떤 일을 할 때 성공하는 시나리오만 생각하는 경우가 많다. 뒤늦게 미리 고려하지 못한 변수가 발생했을 때 먼 길을 돌아가는 경우를 자주 겪었다. 나쁜 소식과, 부정적인 시나리오는 우리에게 미리 대응책을 준비할 기회를 부여하므로 기쁘게 받아들여야 한다.

다른 사람에게 당신 자신의 배움을 위임할 수 있다고는 생각조차 하지 말라.

실라스마는 AI, 머신러닝 기술이 중요하다고 보고, 3개월 동안 6개 대학의 온라인 강좌를 공부한 후, 많은 사람들이 이해하기 쉽도록 정리하여 프리젠테이션을 했다. 그의 여정은 블로그에 정리되어 있으며, 프리젠테이션 영상은 유튜브에서 볼 수 있다.

글로벌 기업의 회장이 바쁜 일정속에서도, 떠오르는 기술을 제대로 이해하고 구성원들에게 소개하기 위해 직접 공부하는 모습은 감동을 주는 한편 우리를 부끄럽게 한다.

실라스마는 오래전부터 다양한 주제에 대하여 경험과 사색을 통해 알아낸 통찰을 목록으로 정리하는 습관이 있다고 한다. 그는 위기를 접할 때마다 그 목록을 다시 보면서 ‘올바른 일’을 하기 위해 노력했다. 여기저기 흩어져 있는 나름의 통찰들을 한 곳에 정리한 후 지속적으로 업데이트해야겠다. 2020년 말 육아휴직을 끝내고 회사로 복귀했을 때 지혜롭게 잘 해나갈 수 있도록.

더 넥스트 스파크 17년식 배터리 셀프 교체

자주 운행하지 않는 우리집 세컨카 더 넥스트 스파크의 배터리가 반짝 강추위에 방전되어 물리키로만 열 수 있는 지경에 이르렀다. 지난주 육아휴직을 끝내고 복직한 아내가 조만간 통근에 이용할 예정이어서 급히 배터리를 교체해야했다.

출장 배터리 교체 서비스를 이용할까 셀프로 해볼까 고민하다가, 약 4만원의 비용차이도 무시할 수 없었고 직접 해보고 싶은 마음도 있어서 셀프 교체에 도전했다.

인터넷을 검색해보니 대부분의 업체에서 배터리를 구입하면 교체에 필요한 공구를 빌려주고, 폐배터리를 수거해주는 서비스를 제공하고 있었다. 가장 저렴한 조건을 찾아서 아트라스BX 44DL을 배송비 포함 4.6만원에 구입했다.

업체의 패키징 그대로 지하 주차장으로 이동

동일 차량의 배터리 교체 방법이 자세히 설명이 되어 있는 블로그 글을 보고 차근차근 따라하니 10분도 안 걸렸다.

기존 배터리 제거 중
새 배터리 장착 완료
시동 확인

무언가를 내 손으로 직접 할 수 있다는 것은 꽤나 즐거운 일이다. 대상이 되는 물건에 애정이 생기는 것은 보너스. 자동차를 좋아해서 언젠가 여유가 된다면 경정비도 배워보고 싶다.

디지털 미니멀리즘

나이가 들수록 생산적인 활동에 활용할 수 있는 자원이 점점 줄어드는 것을 느낀다. 이 책은 ‘주의(attention)’를 중요한 자원으로 다룬다. 수 많은 디지털 기술과 서비스들이 더 큰 수익을 만들어내기 위해서 끊임없이 우리의 ‘주의’를 빼앗고 있기 때문이다.

디지털 미니멀리즘
온라인에서 시간을 보낼 때 자신이 소중히 여기는 것들에 도움이 되며, 신중하게 선택한 소수의 최적화된 활동에 초점을 맞추고 다른 모든 활동은 기꺼이 놓치는 기술 활용 철학

디지털 기술을 활용할 때도 적은 것이 낫다는 것이 디지털 미니멀리스트들의 주장이다. 인간관계, 정보, 재미 무엇 하나 놓치고 싶지 않다는 핑계로 하루에도 몇 번씩 페이스북, 인스타그램을 들락날락 하면서 소중한 자원인 ‘주의’를 낭비해왔다. 잠시라도 혼자 생각할 수 있는 여백을 허용하지 않았다.

재미있는 것을 찾아 습관적으로 스마트폰을 열고 SNS, 웹페이지를 탐색하는 행동이 도박장에서 슬롯머신을 당기는 행위와 다를 것 없다는 통찰에 충격을 받았다. 우리에게 주어진 소중한 자원을 효율적으로 사용하려면 고독과 여백의 공간을 제외하고는 계획적이어야 한다.

저자는 30일의 디지털 정돈 기간을 갖기를 추천한다. 필수적인 기술만 허용된 상태로 30일을 지내면서, 남은 여백을 만족스럽고 의미있는 활동으로 채운다. 30일이 지나면 중단했던 부차적인 기술들 중에서 자신의 삶에 가치가 있는 것들을 선별하여 운용절차에 따라 다시 사용을 시작한다.

미니멀리즘에 입각한 기술 선별 절차
1. 깊이 중시하는 가치를 뒷받침한다(혜택을 약간 제공하는 것으로는 충분치 않다).
2. 해당 가치를 뒷받침하는 최선의 방식이다(그렇지 않으면 더 나은 것으로 대체하라).
3. 기술을 언제 어떻게 활용하는지 정하는 표준 운용 절차에 따라 생활 속에서 역할을 부여한다.

이 책을 읽고 난 후에도 여전히 잠깐의 시간이 생기면 폰으로 뉴스를 확인하는 습관을 완전히 버리지 못했지만, SNS에 ‘주의’를 빼앗기는 시간을 크게 줄였다. 폰에서 SNS 앱을 지웠고, PC로 일주일에 한 번, 10~20분만 사용함으로써 꼭 필요한 가치만 획득하고 빠져나온다.

방해금지 모드 설정, 스크린 타임 사용과 같은 작은 노력이 디지털 기술 사용패턴을 크게 바꾸진 못했는데, 내 삶의 중요한 가치를 뒷받침하는 기술만 받아들이는 것으로 기술 활용 철학을 바꾸고 나니 변화가 손에 잡힌다.

맥프레 13인치 2017 키보드 교체

오래전에 방향키에서 이상한 소리가 나서 키캡을 반복하여 분리, 결합하다가 플라스틱 고정부를 부러뜨렸다. 만용을 부린 결과는 참혹했다. 아래, 위 방향키는 한쪽이 고정되지 않아 나풀거리고, 입력도 2~3번에 한 번은 안 먹었다. 이상한 소리도 그대로 였으니 혹 떼려다 혹 붙인격이었다.

그러다 최근에 N키가 중복 입력되는 현상이 지속적으로 발생하여 속으로 쾌재를 불렀다. ‘드디어 공짜로 고칠 수 있겠구나!’

유베이스 수원센터에 가서 간단히 증상을 재현하고 수리를 맡겼다. MacBook, MacBook Air 및 MacBook Pro용 키보드 서비스 프로그램을 이용하여 수리비는 0원.

아내의 맥북에어

수리기간에는 자린고비 아내의 (화면 중앙에 금이 간) 맥북에어 13인치 2013에 기생했다. 계정을 만들고 필수 프로그램을 몇 가지 설치했는데, 대부분의 데이터가 클라우드에 있으니 짧은 시간에 작업 환경을 마련할 수 있었다. 레티나 화면이 아니라는 것을 빼면 불편함을 느끼지 못할 정도여서 맥북의 긴 수명에 감탄했다. 오랜만에 가위식 키보드의 안정감 있는 키감도 맛볼 수 있었다.

키보드 교체는 3일만에 끝났지만, 구정 연휴에 부산에 다녀와서 9일만에 찾아왔다.

키보드 교체로 다시 태어난 맥프레

부품 번호는 661-07950, 가격은 502,000원, 키보드, 배터리 일체형이라 86~88%를 오가던 배터리까지 새것으로 교체되었다.

새 배터리

기존 키보드보다 키감도 소리도 깊고 무거워졌다. 개인적으로 아주 마음에 든다. 가위식 키보드보다 나은 것 같다.

즐거운 마음으로 3년은 무난히 더 쓸 수 있을 것 같다.