Data structure algorithm сайн хөгжүүлэгч байхад хир хэрэгтэй вэ?

Data structure algorithm сайн хөгжүүлэгч байхад хир хэрэгтэй вэ? Энэ чадвараа яаж сайжруулах вэ? Сайн санал болгох ном юу байна?

Хэрэгтэй. Гэхдээ…

Яг ямар түвшний хөгжүүлэлт хийж байгаагаас чинь их хамаарах байх.

  • Вэб/мобайл хэрэглээний програм (апп) хөгжүүлж байгаа үед бол дундаж хэмжээний суурь ойлголттой байхад л болох болов уу. Ямар төрлийн өгөгдлийг array -д эсвэл hashmap -д хадгалах вэ? Хэзээ stack ашиглах вэ? гэх мэт.

  • Тусгай зориулалтын програм хангамж (mission critical ч юм уу) эсвэл машины сургалт, хиймэл оюунтай холбоотой хөгжүүлэлт байгаа үед бол нэлээд сайн мэдэгдэхүүн хэрэг болох байх. Өгөгдөл эрэмбэлдэг алгоритмуудын ялгаа, тэдгээрийн аль нь яг ямар нөхцөлд давуу талтай байдаг вэ? Графтай холбоотой алгоритмуудыг мэддэг байх, тэдгээрийг өөрийн гараар код болгож бичиж чаддаг (эсвэл ядаж бичиж үзсэн) байх гэх мэт.

  • Өөрөө шинэ фрэймворк, сан хөгжүүлж байгаа, эсвэл доод түвшний хөгжүүлэлт (санах ой, cpu жижигтэй embedded system -үүдэд зориулсан програм) хийж байгаа бол бүүр гүнзгий мэдэгдэхүүнтэй байх хэрэгтэй болов уу. Ядаж CLRS -ийг уншчихсан, дасгалуудыг нь ажиллачихсан байх шаардлагатай байх аа.

Номын хувьд:

  • CLRS -ийг шууд уншаад эхлэхэд дэндүү хүнд санагдаж магадгүй. Гэхдээ ер нь програм хангамжаар гүнзгийрэх гэж байгаа бол заавал унших хэрэгтэй ном шиг санагдсан. Би аль 7, 8 жилийн өмнө авсан ч одоо болтол уншиж дуусгаагүй, талд нь ч орж чадаагүй л байна :sweat_smile:

  • Cracking the Coding interview гээд ном их таалагдсан. Өмнө нь учрыг нь олохгүй байсан юмсыг их ойлгомжтой байдлаар заасан. Ер нь гаднын компаниудад ажилд орох гэж байгаа программистууд уншихад их зүгээр ном шиг санагдсан шүү.

Би Монгол компанид ажилладаг байхдаа өглөө болгон ажилдаа явахын өмнө Hackerrank дээр бодлого боддог байсан. Оюутан байхдаа яг тэр чиглэлээр олигтой гүнзгийрч яваагүй болохоор надад их хэцүү байсан шүү. Гэхдээ асуудал шийдвэрлэх чадвар маань сайжрахад бага ч атугай нэмэр болсон байх аа.

Medium зэрэглэлийн бодлогуудыг нь ч бодож чадахгүй, өөртөө их гутардаг байсан. FAANG компанид сүрхий инженер хийгээд явна л гэхгүй бол тийм айхтар алгоритмын бодлогууд бодож чадахгүй байсан ч хийх ажил өчнөөн байдгийг сүүлд нь ойлгосон доо :stuck_out_tongue:

Дэлгэрэнгүй сайхан хариулт өгсөнд их баярлалаа. Вэб/мобайл хэрэглээний програм (апп) дундаас дээш түвшиний чадварлаг хөгжүүлэгч байхыг хүсэж байгаа юм. CLRS-ийг харахад миний зорилгод арай нүсэр ч юм шиг санагдаж байгаа. Цаашдаа чадвараа хөгжүүлж гадаадын компанид ч ажиллана гэсэн төлөвлөгөөтэй байгаа. Өдөр болгон leetcode дээр easy түвшний нэг бодлого бодохыг хичээж байна. Чи одоо бодлого боддог уу?

:+1:

Сүүлийн хэдэн жил огт бодоогүй шүү. Бидний хэрэглээнд бол CLRS -ээс илүү Cracking the Coding interview нь шулуухан сайхан таарах байх аа.

Бодлого бодож ерөнхий логик сэтгэлгээгээ сайжруулахаас гадна хүнд ойлгомжтой, цэвэрхэн код бичдэг болох, design pattern -уудыг ашиглаж чаддаг болох хэрэгтэй юм байна лээ.

Миний хувьд дараах ном, сайтуудыг санал болгоно:

  • Code Complete - Маш гоё бичигдсэн ном. Миний ажилд их нэмэр болсон доо. Ер нь программистууд заавал унших хэрэгтэй.

  • Design Patterns - Ямар ч төрлийн программ бичихдээ ашиглаж болох кодын зүй тогтлуудыг маш хялбар, ойлгомжтой байдлаар тайлбарласан сайт. Design Patterns: Elements of Reusable Object-Oriented Software гэдэг айхтар номыг уншихад хялбар болгосон хувилбар гэж ч болно.