اﻷسبوع ألى فات فى backend builders اتكلمت مع ناس كتير وكان سؤال متكرر جوابت عليه separetly لكذا حد وحابب اوثق اﻷجابة دى هنا فى ثريد يقدر اى حد يرجعله فى أى وقت. السؤال هو "اذاكر ايه عشان ابقى backend developer كويس؟" أنا هجاوب من وجهة نظرى و الكلام موجه اكتر لل juniors
[1.1] أول حاجة هى أى web framework يقدر يبنى بيه API، انا شخصيا بأرشح Ruby on Rails لسبب بسيط وهو انى بشوف انها بت enforce عليك style منظم جدا وبتقدم مبادئ ال MVC بشكل صريح وفيها ORM محترم. وكمان ليها docs و guides حلوة جدا. ممكن تشوفوا ال tutorial ده guides.rubyonrails.org
[1.2] طبعا فيه frameworks تانية كتير منتشرة، اختار اى حاجة، انا بس بفضل الحاجات الى فيها style واضح لأن الطبيعى فى الاول بتبقى تايه وبتكتب اى حاجة تى do the job بس لو حاجة فيها style كويس، بتساعدك تطلع حاجات مكتوبة كويس وممكن تحسنها مع الوقت كل ما فهمك لل framework ده يزيد.
[1.3] الفكرة مش مجرد تعلم framework المفروض تبقى كمان تبقى بتتعلم concepts فمثلا هتتعلم ازاى تكتب tests و تتعلم ال best practices فى ال security فى ال framework الى شغال بيه وتتعلم ازاى ت connect على database وتستخدم ال ORM وتعرف عيوبه وازاى تتجنبها وهكذا
[1.4] ده project بسيط كنت عامله ب rails بيعرض شويه common usecases فى اى rails app زى database access و external service calls و background processing و writing unit and integration tests و حاجات تانية كتير. ممكن تشوفه هنا github.com
[1.5] دى blog كنت كاتبها بتشرح ازاى تكتب tests فى rails و ال concepts الى فيها هتنفع فى اى framework sayedalesawy.hashnode.dev
[2.1] تانى حاجة هو انك تتعلم databases كويس, اى backend service هتعملها هى eventually هتكتب فى database و هتيجى بعد كده تقرأ منها. فلازم تبقى عارف ازاى تعمل database design كويس وتعمل schema تخدم ال usecase بتاعتك بشكل كويس
[2.2] فمثلا تعرف ازاى تطلع ال entities الى عندك و ت define ايه ال relations الى بنهم, وتقرر هتعمل ده فى tables ازاى و تختار ال datatypes المناسبة وهل مثلا ناوى تعمل dennormalization لى حاجة based على ال common query patterns الى عندك ولا ﻻ وهكذا. اى crash course بسيط would do
[2.3] اهم حاجة فى رأى والى بتفرق حد فاهم عن حد بيعرف يعمل حاجة وخلاص هى انك تبقى فاهم ال database internals يعنى فاهم ال database دى شغالة ازاى من جوه وليه كل حاجة معمولة بالطريقة دى, تبقى فاهم ال storage engine الى بتستخدمه مثلا ال data layout الى بيعملها عاملة ازاى ...
[2.4] لما بتعمل مثلا index على حاجة ايه الى بيحصل, ال index ده من جوه عامل ازاى, ينفع مع انهى query patterns وانهى لا, تقدر تعمل optimizations وتكون based على داتا, بتقدر تعمل benchmark لى ال queries بتعاتك بشكل علمى مش بتقيس وقت وخلاص وهكذا
[2.5] انا برشح بشدة كتاب اسمه High Performance MySQL الكتاب بيتعمق فى ال database internals ولكن بشكل مناسب لحد junior وكان مفيد جدا ليا أنا شخصيا. انا كاتب summaries للكتاب هنا (أهم 7 chapters) sayedalesawy.hashnode.dev
[2.6] فى كمان blog تحفة اسمها Use the Index Luke بتكلم فى كل حاجة تقريبا وفيها مواضيع advanced ممكن تبقى بتقراها لما تحتاجها او تاخد فكرة انها موجودة وترجعلها فى أى وقت بعد كده use-the-index-luke.com
[2.7] حاجة كمان انا برشحها انك تحاول تجرب عندك local او لو عندك access ل data set كبيرة يبقى احسن, لو مفيش, اعمل data set معقولة واقعد جرب بأيدك different queries, حط index, شيل index, استخدم explain واعرف ايه ال query plan وازاى بتتغير مع التغييرات و ال optimizations الى بتعمله
[3.1] تالت حاجة اتعلم عن ال OS, اعرف ال basics, اعرف يعنى ايه process ويعنى ايه thread و ايه هو ال multi-threading وايه مشكاله و يعنى thread safe code وازاى تقدر تعمله ويعنى ايه race conditions وازاى تقدر ت avoid them, اعرف ال inter-process comm بيتعمل ازاى وحاول تجرب
[3.2] لو حابب تجرب حاجة raw اوى ممكت تجرب ب C/C++ بس يعنى كلنا بنكون جربنا ده فى الكلية, انا برشح تحاول تتعلم لغة فيها ال concurrency بسيطة زى golang وتحاول تكتب concurrent code وتشوف ايه ال مشاكل وتحلها. ده tutorial لطيف ل golang ممكن تشوفوا golangbot.com
[3.3] ده video لطيف اسمه The schedular saga بيتكلم عن go internals ممكن يكون advanced شويه فى اﻷول بس بيشرح concepts مفيدة ومهمة حتى لو مش بتتعلم go ممكن تشوفوه هنا youtube.com
[3.4] ودى blog كنت كاتبها عن شويه lessons انا اتعلمتها فى go, لسبب ما ال blog دى عجبت ناس كتير وعليها حوالى 16 ألف view ممكن تشفوها من هنا sayedalesawy.hashnode.dev
[3.5] ودى blog تانية بكلم فيها عن ال concurrency و ال race conditions وازاى بنتعامل معاهم sayedalesawy.hashnode.dev
فيه skills تانية كتير بس انا بشوف دول مع good understanding لى algorithms and data structures و مبدأ ال SWE كفاية to land a job فى اماكن كتير. نصيحة عامة, حاول تبقى حد well-read فى المجال عموما حتى لو مجربتش الحاجة دى, على الاقل تبقى فاهم الناس بتقول ايه ومع الوقت الصورة بتوضح
جاري تحميل الاقتراحات...