알고리즘과 데이터 구조는 관련이 없습니다.

나는 가끔 다음과 같은 농담을 한다. "알고리즘을 마지막으로 사용한 것은 2002년이었습니다."약간 과장된 부분이 있지만, 나만큼 소프트웨어 개발 분야에서 많은 경험을 가진 사람(전문가로서 25년 이상, 총 40년)에게는 매우 쉽게 이해할 수 있는 요점이 있습니다.

전 세계 소프트웨어 개발자의 80%는 결국 소프트웨어 개발을 부차적인 기능으로 하는 회사에서 일하게 될 것입니다. 여기에는 보험 회사, 은행, 병원 등이 포함될 수 있습니다. 그 이유는 우리 사회가 상상할 수 있는 모든 계층에서 소프트웨어 개발로 완전히 포화되어 있고 최소한 몇 가지 소프트웨어 없이 생존할 수 있는 산업이 거의 없기 때문입니다. 기존 프로세스를 자동화 및 개선하고, 사물을 최적화하고, 비즈니스 프로세스를 윤활하도록 돕는 개발자.

이것은 그들이 시간의 99%를 웹 양식을 만들고, 데이터베이스에서 데이터를 안전하게 추출하고, HTTP 웹 API를 호출하는 등의 일을 한다는 것을 의미합니다. 이 작업에서 알고리즘 및 데이터 구조에 대한 지식은 연소 엔진의 박사 학위만큼 유용합니다. 이론은 Michael Schumacher를 위한 것입니다. 소프트웨어 설계, 아키텍처, 구성 등과 같은 공리는 A*와 Dijkstra의 알고리즘 간의 Big O 표기법 차이에 대한 지식보다 수십 배 더 중요합니다. 실제로 어떤 방법이나 기능에서 퀵 정렬 대신 버블 정렬을 선택하면 고용주가 눈치채지 못할 가능성이 있습니다.

We don't need data structures, we've got PostgreSQL



위의 내용은 농담처럼 들릴지 모르지만 실제로는 그렇지 않습니다. 작업의 99%가 일부 데이터베이스에서 데이터를 (안전하게) 추출, 삽입 및 업데이트하는 것인데 왜 이진 트리와 B-트리의 차이점을 알아야 합니까? 인덱싱 이론과 데이터 구조가 중요해지는 방식으로 데이터를 고유한 구조로 유지한다면 아마도 뭔가 잘못하고 있는 것일 수 있으며 누군가 "Not Invention Here Syndrome"에 대해 가르쳐야 합니다.

We don't need algorithms, we've got .Net Core



다시 말하지만 위의 내용은 농담처럼 들릴 수 있지만 O(1)과 ​​O(n)의 차이점을 알고 있다고 가정하면 심각합니다. 힌트; 사전 및 목록 - 빠른 정렬을 구현하는 능력에 관심을 가진 사람은 아무도 없습니다. 그 이유는 몇 가지 코드 스니펫으로 가장 잘 설명될 수 있습니다.

List<Customer> customers = /* Some method that returns a bunch of Customers */
customers.Sort();


최상의 정렬 알고리즘을 사용하는 것은 말 그대로 위와 같이 쉽습니다. 최상의 피벗 값을 위해 머리를 쥐어짤 필요가 없습니다.

RISC x86 어셈블리 코드에 대한 지식이 약간 있는 것과 같은 이유로 알고리즘 및 데이터 구조에 대한 기본 지식을 갖는 것이 여전히 (약간) 중요합니다. 기본 사항을 알면 더 높은 추상화의 결과를 더 잘 이해할 수 있습니다. 그러나 Quick Sort를 얼마나 많은 언어로 구현할 수 있고 얼마나 많은 다른 데이터 구조를 기억했는지에 관계없이 일을 시작하면서 고용주에게 "더 나은 직원"이 되지 못할 가능성이 99% 확실합니다. 전문가로. 아무도 더 이상 신경 쓰지 않습니다. 음소거 문제입니다. 따라서 다음에 취업 면접을 볼 때 그들이 퀵 정렬에 대해 묻는다면 대답해야 합니다.

Algorithms and data structures? No thx, I'm trying to quit my bad habits ^_^



예, 궁금한 점이 있으시면 위의 답변은 거의 100 % 확실하게 귀하가 일자리를 얻지 못한다는 것을 보장합니다. 그러나 다시 말하지만 누가 회사와 같은 회사에서 일하고 싶어할까요 ...? ;)

좋은 웹페이지 즐겨찾기