너무 좋은 글이어서 요약과 함께 공유.
20년동안 소프트웨어로 근무한 가민사의 스탭 엔지니어분이 자신의 경험을 적었다. 100% 공감..(아 나는 왜 이런 글을 못적는것인가...) 하지만 내가 만날때마다 동료들에게 하던 이야기들이 정리되어 있어 한편으로는 흐뭇하다. 나만 그렇게 생각하는게 아니었어..
 
1. 더 많은 소프트웨어 엔지니어링 관련 문서 읽기 - 뉴미디어 말고 차분히 정제된 좋은 책 읽기.
2. 문학이나 다른 비 기술서적 많이 읽기 - 사람에 대해 이해하기
3. 맥락이 왕 - 케바케
4. 모든 것이 절충: 트레이드오프를 인식하고 프로젝트 목표에 가장 잘 맞는 최상의 솔루션 제공. 용기의 미덕은 비겁함과 무모함 사이의 중간
5. 소프트웨어 공학은 실용 인식론 - 기계가 이해하는 코드 작성이 아닌, 인간이 이해하는 코드 작성. 체계적이고 의미있는 방식으로 지식을 조직화하기
6. 소프트웨어 공학은 프로그래밍이 아님: 지식에 기반한 결정, 구조화된 접근 방식, 경험적 방법, 반복을 통한 지식 향상 . 실제 문제를 인식. 고객이 진정으로 원하는 것과 고객이 원한다고 가정하는 것을 구현하는 것의 차이
7. 일상 업무에 지식과 추론을 사용: 정보에 입각한 결정/추론
8. 설계 의도파악 - 모든 결정은 어떤 일련의 의미를 가지며, 결정할때 이런 의미를 잘 이해하자.
9. 결정 문서화 - 결정이 내려진 맥락, 고려된 대안, 다양한 대안 간의 절충 분석 및 결정의 영향을 문서화
10. 신입에게 기술 세부사항을 설명할 방법 찾기 - 중요하지 않은 세부사항은 추상화하고 중요한 측면에 집중하기
11. 다른 사람이 이해할 수 있는 시스템 설계 - 우리는 팀으로 일한다.
12. 테스트는 필수 - 우리의 가설이 틀렸다고 가정하고, 가설을 테스트하려는 노력을 기울여야 한다.
13. 코드 작성보다 문제해결에 집중하자 -
14. 알고리즘과 자료구조 학습: 충분한 사전 지식을 갖춰야 더 의사소통을 잘 할 수 있음
15. 작은 것부터 혁신하자 - 작은 프로세스 개선부터 더 큰 혁신을 끌어가자. 문화 바꾸기도 동일
16.지행일치, 행지 일치 - 엔지니어링이란 경험적인 것. 배운 것을 적용하고, 적용하면서 배우고.. 좋은 학습 방법 개발 및 건전한 경험 프로세스 적용.
17. 실수로 부터 제대로하는 법을 배우기: 실수는 발전의 열쇠. 실수의 영향력을 통제해야 함. 완전히 피할 수 없음. 주요 위험을 평가하고 추적해야 함. 실수를 통해 우리는 더 빨리 배우는 경향이 있음. 가설의 오류 가능성을 통해 새로운 것을 배워 가설 모델과 현상에 대한 이해도를 향상시킴
18. 나 자신을 포함한 모든 것에 의심을 품자. - 모든 명제가 거짓일 수 있다고 가정.
19. 자신의 편견도 관리해야 하는 문제 - 자신이 가진 편향성을 인정하자.
20. 끝없는 도전 - 배우고, 실험하고, 우리 자신을 향상시킨다.
 
 
 

Lessons Learned After 20 Years of Software Engineering

It’s good to sit back and reflect from time to time. Lucian Radu Teodorescu does just that and reports back. 15th of August 2002 – the date I started working as a professional software developer. I was still 18 at that time. I have been in this profess

accu.org

 

반응형

'2. 개발 > 2.0 개발 잡설' 카테고리의 다른 글

내가 사용하는 텍스트 에디터  (0) 2022.10.15
벌레를 어떻게 잡을 것인가?  (0) 2022.08.08
하이럼(hyrum)의 법칙  (0) 2022.07.04
WSL 정리 #1  (0) 2022.04.05
드림헤븐 JD  (0) 2022.03.05

 현재 모바일 플랫폼은 안드로이드와 IOS로 양분되어 있다. 전세계 모바일 플랫폼에서  대략 70%의 점유율을 차지하고 있는 안드로이드. (글로벌 70%, 우리나라: 74%, 미국 40%, 일본 34%, 유럽 68%, 2021년 3월 기준)

 안드로이드용 프로그램을 작성하는 방법은 크게 네이티브와 웹/웹앱으로 구분된다. 네이티브는 다시 자바 또는 코틀린으로 개발하는 방법과 Dart를 이용한 플러터(하이브리드)로 나눌 수 있다. 예전 안드로이드 출시 초기에 자바로 개발했었는데, 요즘 대세는 젯브레인이 개발한 코틀린인 것 같아서 기존 지식 리마인드 차원에서 '이것이 안드로이드다 with Kotlin'책을 골랐다.

3판까지 나온다는 것은....!

이것이...다 시리즈

한빛미디어에서 출간하고 있는 초보자 입문서 시리즈인 '이것이...다' 중 안드로이드 개발에 관련된 유일한 책이다. '이것이 안드로이드다'는 정말 초보자를 위한 책이다. 실제 모바일 앱, 특히 안드로이드 개발을 처음 시작하는 사람들에게는 큰 도움이 될 수 있다. 다만, 기존 개발 경험이 있는 사람들은 조금 지루할 수 있다. 

크게 3개 부분으로 나뉘는데, 코틀린을 이해하고, 안드로이드를 이해한 다음, 이를 기반으로 실제 시나리오대로 앱을 만들어보는 과정으로 구성되어 있다.

1~3장까지는 안드로이드/코틀린 개발 환경을 구축하고, 코틀린 문법에  대해 간략히 소개한다. 기존 개발 경험이 있으면 상당히 지루할 수도 있지만, 이 책의 주 대상층인 입문자들에게는 쉽게 설명하려고 노력한 것 같다. 다만 3장에서 코틀린 문법을 설명하는데, 기존 안드로이드 개발 경험이 있거나 다른 언어로 무언가를 개발해본 경험이 있는 개발자라면 코틀린이라는 언어 자체에 대한 설명이 부족하다는 느낌을 받을 수 있다. 입문서이다 보니 깊이면에서는 조금 양보한 느낌이다. 개략적인 설명과 약간의 코드에서 그친 느낌이었다.

4장과 5장은 안드로이드 앱의 일반적인 구조를 설명한다. 기존 안드로이드 앱 개발자라면 쉽게 읽으면서 넘길 수 있는 부분이다.

6장부터 13장까지는 파일을 읽고 쓰고, sqlite 데이터베이스를 다루고, 카메라로 사진을 찍어 갤러리에 이미지 파일을 저장하고, 구글 지도와 HTTP API를 호출하는 방법을 통해 서울 공공 도서관 앱을 만들어 보고, 구글 파이어베이스 서비스와 연동하는 방법으로 이루어진다. 

 

이 책의 장점과 나의 공부법

무엇보다 초보자를 대상으로 한 입문서이다. IDE 설치부터 실제적인 기능을 이용한 앱 개발까지 차근차근 매우 자세히 설명하고 있다. 따라서 책 뒷표지에서 이야기하는 것처럼 만들고 싶은 앱이 있다거나, 앱 개발자다 되고 싶다라고 하면 기본 지식과 전체적인 관점을 얻는데는 유익한 책이다.

이 책은 가급적 처음부터 차례대로 읽는 것이 좋을 것 같은데, 6장부터는 관심있는 기능만 골라 읽어가는 것도 좋아 보인다. 기존 개발자는 1장과 2장은 가볍게 읽어볼 수 있는 수준이다. 3장은 Kotlin에 대한 깊이 있는 설명은 조금 부족했는데, 그 부분에서는 안드로이드 개발자 문서를 검색해 가면서 보완했다. 

내 경우에는 1,2장을 읽고, 3장 코틀린에 대한 문법적 이해를 갖춘 다음, 4장~5장, 6장~13장을 두 부분을 병행해서 읽었다.

3판이 나올 정도로 정돈된 책 구성이 가장 큰 장점이다. 특히 서울 공공 도서관 앱은 국내 저자가 적은 책의 장점이다. 번역서의 경우 우리가 바로 활용할 수 있는 API나 앱 방식인가에 대해 회의적일 수 있는데, 저자가 우리나라분이다 보니 우리 현실로 예제를 만들어 준 부분이 좋았다.

 

 

이 책의 단점

3판이긴 한데, 내용 업데이트가 부족하였다. 표지에서는 최신 버전 완벽 대응이라고 했는데, 과거 이벤트가 마치 미래처럼 적힌 부분이 있었다. 예를 들자면 42쪽 밑에서 두번째 문단에서 "2021년 9월 기준으로 코틀린 릴리즈에서 완전히 제거될 예정입니다."라고 적혀있는데,  3판은 22년 1월에 출간되었다. 따라서 "제거될 예정"이 아니라 '제거되었다'로 변경되었어야 한다. 책 첫 부분에서 이런 부분들이 눈에 들어오다 보니 책의 이전판이 인기가 좋아서 3판까지 나온 것인지, 아니면 기술의 업데이트를 반영한 것인가? 하는 의문이 들었다.

또 책 설명이 애매한 부분이 있어서 git 리포지토리를 찾아본 적이 있는데 책에 소개된 소스코드와 조금 다른 부분도 있었다.경험이 있는 개발자 독자라면 대충 맥락을 이해하고 저자의 의도와 설명을 이해할 수 있을텐데, 초보자들은 하나하나씩 비교하면서 읽다보니 혼동할 수 있겠다라는 생각도 들었다. 예를 들어 2장 소스코드에서 88쪽 코드와  https://github.com/javafa/thisiskotlin/blob/master/SayHello/app/src/main/java/com/example/sayhello/MainActivity.kt 의 코드에서 var binding 선언 부분이 살짝 다르다.

 

 

이 책.. 코틀린으로 안드로이드 앱을 개발하고싶다는 초보 개발자 내지 학생들에게 권한다. 

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

반응형

+ Recent posts