TG Telegram Group Link
Channel: Mohcin Space
Back to Bottom
تجربتي مع العودة لبناء أسس صلبة للأساسيات و الخوارزميات في مجال هندسة البرمجيات. #2

أولًا، من الجانب النفسي (وهذا سيكون أهم ما سأتحدث عنه في أول منشور من هذه السلسلة)، من الصعب جدًا العودة لتعلم الأساسيات عندما تكون مطور برمجيات ذو خبرة أكثر من 6 أو 7 سنوات. هذا أمر ثقيل على النفس البشرية، خاصة إذا كنت قد قصّرت في تعلّمك خلال الفترات التي كان يجب أن تكون فيها أكثر جدية. الشعور بالندم على ذلك مؤلم، والعودة للاستدراك أيضًا مؤلمة. لكن إذا صدقت النية، فأنت تستدرك عند الكريم، والله يتولاك ويوفقك لما فيه الخير.

لنفترض أنك قررت العودة إلى أساسيات هندسة البرمجيات وعلوم الحاسوب لسد ثغراتك المعرفية (سيكون لنا موضوع خاص حول كيفية تحديد هذه الثغرات وكيفية محاولة سدها). ولنفترض أنك عدت لتأسيس نفسك في javascript مثلا من خلال التعلم والتطبيق على freecodecamp مثلًا. من الطبيعي تمامًا أن تواجه صعوبة في حل تحديات الخوارزميات على هذه المنصة، حتى لو كنت مطور برامج ذو خبرة (سيصدمك هذا). إليك الأسباب:

- المهارات تختلف باختلاف التخصص: كونك مطورًا ذو خبرة لا يعني بالضرورة أنك تمارس الخوارزميات يوميًا، وكلنا كذلك (لأننا غالبًا نستخدم حلولًا جاهزة). إذا كان عملك يركز أكثر على أطر العمل (frameworks)، أو المكتبات (libraries)، أو قواعد البيانات سهلة الاستخدام، فقد لا تكون مهاراتك في حل الخوارزميات بنفس القوة. وهذا نفسيًا أيضًا صعب جدًا، لأنك تبدأ في استكشاف نقاط ضعفك، ومواجهة ذلك أمر مؤلم.

- التحديات الخوارزمية تتطلب تفكيرًا معينًا: مشاكل الخوارزميات تحتاج إلى نهج رياضي ومنهجي يختلف عن المهام اليومية مثل العمل مع واجهات برمجية (APIs)، أو قواعد البيانات (databases)، أو تصميم الواجهات (UIs).

- مهارات حل المشكلات قد تضعف بمرور الوقت: هذا إذا كنت قد تعلمتها في الأساس، أما إذا كانت جديدة عليك، فغالبًا ستجد نفسك ضعيفًا فيها. ستبدأ في مقارنة مهامك اليومية بهذه التحديات، وقد تعاني من متلازمة المحتال (Imposter Syndrome). ضع في اعتبارك أن هذا متوقع.

- التفكير المنطقي (Logical Thinking) مهارة كأي مهارة: إذا لم تمارس حل الخوارزميات بانتظام، فمن الطبيعي أن تجد صعوبة عند العودة إليها. الممارسة المستمرة تساعدك على استعادة هذه المهارات أو اكتسابها من جديد.

- تنوع المشكلات يتطلب أساليب مختلفة: قد تتطلب تحديات البرمجة تقنيات أو مفاهيم لم تستخدمها من قبل، مما يجعلك تفكر بطرق جديدة ويطور من مهاراتك، لكنه في البداية قد يجعلك تبدو ضعيفًا.

تذكر:

- العودة لحل المشاكل البرمجية قد يبدو صعبًا، لكنه لا يحدد قيمتك كـمهندس برمجيات أو كمبرمج في عملك اليومي داخل الشركة، لكنه بلا شك سيجعلك أفضل.

- الفشل في حل التحديات ليس دليلًا على ضعفك، بل هو فرصة لتحسين قدراتك. المفتاح هو الاستمرار في المحاولة والتعلم من الأخطاء.

ماذا يمكنك أن تفعل عند العودة لتصحيح نقاض ضعفك ومواجهة الفشل؟

- خذ وقتك في تحليل المشكلات وتبسيطها.

- اطّلع على حلول الآخرين لتتعلم طرقًا جديدة.

- استمر في الممارسة بانتظام دون إحباط، مثل تخصيص ساعتين أسبوعيًا.

- لا تعتمد على الذكاء الاصطناعي (AI) كأول حل وأنت في مرحلة الاستدراك، فالأهم أن تكتب الكود الأولي بنفسك قبل أن تستشير.

أتمنى أن تكون هذه السلسلة نافعة بإذن الله.
شاركها إذا وجدتها مفيدة، لعلها تساعد غيرك.
اللهم علمنا وانفعنا بما علمتنا.

#تعلم #تعلم_مستمر #هندسة_البرمجيات 
10
فذكر نفسك ان هي تكاسلت أن رمضان قد إنتصف.. و في أماكن أخرى قد تجاوز النصف.

اللهم انك عفو كريم تحب العفو فإعفوا عنا.
4
السلام عليكم،

سؤال للمبرمجين، هل تعانون من حين لآخر من تعب في اليدين، الساعد و الكتفين و الم طفيف عند الضغط على عضلات/أعصاب الساعد؟

اذا نعم، ساعدونا بحلول جزاكم الله عنا خيرا ☺️
و اذا لم تكن تستمتع بالتعلم، و دخلت هندسة البرمجيات تعلم ان تستمتع به..

فكك من الشغف و هرطقاته.
Forwarded from Mahmoud A.Aziz
هو بعيد عن قصة التعلم كمتعة او لا لانه مفيش اصلا متعة ولا استمتاع باي شكل هي عملية تقبل او رفض،

التعلم نفسه كعملية مرهقة ومملة ومتعبة وبتحتاج وقت وجهد وصبر ومقاومة لل ممل والفشل المتتالي وطبعا استثمار وقت رهيب عشان تعمل ابسط حاجة صغيرة ومش حتبقي مبسوط ولا فقمة السعادة ، ممكن شوية اول ما الحاجة تشتغل وبعدين تكتشف انه في مليون حاجة تانية انت مش عارفها وناقصاك ولسه مش فاهماها بشكل كامل فمتعة المجال ده قصيرة جدا ومينفعش الاعتماد عليها

فلو انت معندكش القدرة علي التضحية لده يبقي مش حيناسبك المجال لانه ده الاساس فيه انه نفسك وصبرك وبالك يكونوا طووووووووووووال
4
اللهم انك عفو تحب العفو فإعفوا عنا.

اللهم اني أسأل الله ان يبارك لكم اعضاء هذه القناة الصغيرة في هذه الايام المباركة من أواخر رمضان، و يجعلكم من الفائزين.

دعواتكم لنا.
5
هناك نمط تصميم معروف جدًا في الباكاند (backend communication design patterns)، نستخدمه كل يوم كمطورين دون أن نعلم ذلك،، هذا النمط هو: Multiplexing / Demultiplexing.

هذا المفهوم يُستخدم في عالم الشبكات (Computer Networks)،، لكن له أهمية كبيرة في فهمك لتصميم و برمجة التطبيقات كمطور ويب أو مهندس برمجيات.

لنذهب مباشرة إلى التفاصيل:

المالتيبلاكسين،، هو دمج لعدة requests من تطبيقات او resources مختلقة.. يتم تجميعها و ارسالها عبر قناة اتصال واحدة. 

الديمالتيبلاكسين،، هو العكس تماما،، ال requests المجمعة او المدمجة، يتم. تفكيكها و توصيلها الى التطبيق، ال port او الجهة المستهدفة من ال server. 

لماذا هذا design pattern مهم، ولماذا يجب أن تفهمه كمطور ويب؟

عندما يعمل جهازك على تشغيل العديد من التطبيقات في نفس الوقت (مثل المتصفح، البريد الإلكتروني، FTP)، كل هذه التطبيقات ترسل وتستقبل البيانات عبر اتصال إنترنت واحد فقط و الكتصلح هو الذي يقوم بال requests في هذه الحالة، بناءا على ما شرحناها فوق في بداية المنشور. 

ال Multiplexing يضمن أن جميع البيانات من التطبيقات المختلفة يتم إرسالها عبر نفس قناة الشبكة. 

ال Demultiplexing يضمن عند وصول هذه البيانات، أن يتم توصيلها إلى التطبيق او ال port الصحيح.

مثال عملي باستخدام PHP:

تخيل أنك تملك سكربت واحد يستقبل جميع الطلبات (مثل Multiplexer)، وبناءً على باراميتر (parameter) معين في الطلب،، يقوم بتوجيه (Demultiplexing) البيانات إلى المعالج المناسب:

<?php
// Demultiplexer
if (isset($_GET['service'])) {
    $service = $_GET['service'];

    switch ($service) {
        case 'weather':
            echo getWeather();
            break;
        case 'news':
            echo getNews();
            break;
        case 'time':
            echo getTime();
            break;
        default:
            echo "Service not found.";
    }
} else {
    echo "No service requested.";
}

function getWeather() {
    return "Today's weather is sunny.";
}

function getNews() {
    return "Latest news: PHP is still awesome!";
}

function getTime() {
    return "Current server time: " . date('H:i:s');
}
?>

شرح المثال:

الباراميتر $_GET['service'] يشبه رقم المنفذ (port number).

عملية Multiplexing تحدث عندما ترسل طلبات تحمل قيم مختلفة لهذا الباراميتر.

السكربت يقوم بعملية Demultiplexing حيث يستقبل الطلب، ويفصله ويوجهه إلى الدالة الصحيحة بناءً على الخدمة المطلوبة.

مثال حقيقي آخر من الحياة البرمجية: API Gateway

في كثير من المشاريع، يكون لديك API Gateway واحد (واجهة استقبال واحدة لكل الطلبات)، وهو يستقبل كل الطلبات من المستخدمين (Multiplexing)، ثم بناءً على مسار (route) أو باراميتر معين، يقوم بتوجيه الطلب إلى الخدمة المناسبة (Demultiplexing).

تخيل هذا السيناريو:

لديك تطبيق ويب يقدّم عدة خدمات:

- /api/user - to get users

- /api/orders - to get order list

- /api/products - to get products list

لكن بدلاً من عمل 3 ملفات منفصلة، لديك ملف واحد اسمه api.php أو route.php يقوم بكل شيء:

مثال توضيحي: 

<?php
$requestUri = $_SERVER['REQUEST_URI'];

// Multiplexing:  all requests comes to this file using one URI
if (strpos($requestUri, '/api/user') !== false) {
    echo getUserInfo();
} elseif (strpos($requestUri, '/api/orders') !== false) {
    echo getOrders();
} elseif (strpos($requestUri, '/api/products') !== false) {
    echo getProducts();
} else {
    echo json_encode(['error' => 'Endpoint not found']);
}

// Demultiplexing: here we redirect the users based on request type. 
function getUserInfo() {
   ... 
}

function getOrders() {
   ...
}

function getProducts() {
    ...
}
?>

إذا؛ 

- جميع الطلبات (user, orders, products) تمر عبر قناة واحدة api.php أو route.php،، هذا بالظبط هو ال Multiplexing.

- بداخل السكربت، يتم التحقق من REQUEST_URI وتوجيه الطلب إلى ال function المناسبة،، هذا هو Demultiplexing.
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
رغم انا عيدنا بالمغرب هو يوم غد الاثنين ☺️
4
مرة أخرى، تذكير لابد منه.

ما انشره على هذه القناة او على اي منصة أخرى هو لسببين رئيسيين؛

- الأول بنية لله، وكنوع من زكاة التعلم (العلم مصطلح يثقل على نفسي ان اقوله..)، و كمحاولة لإنارة طريق شخص ما.

- الثاني لنشر ما اتعلمه في محاولة لفهمه أكثر.. وتعلمه أكثر.

و ما يأتي بالموازاة مع مع هذين السببين، من بناء personal branding، إنشاء كورسات تعليمية مدفوعة (لو قدر الله) و ما الى ذلك هو خير..

بارك الله فيكم و نفع بكم و بنا.
13
مسألة المقارنة بالآخرين في مجال هندسة البرمجيات مسألة حساسة جدًا...

لنتفق أنك ستقع فيها شئت أم أبيت، أي أنها ليست اختيارية.

لكن الأمر يعتمد على كيفية تعاملك معها:

إما أن تجعلها تحبطك، وتقلل من ثقتك بنفسك، وتسقطك في مقارنة سلبية تضعف همتك وتثنيك عن تطوير نفسك.

أو أن تتعامل معها بحكمة، و تتخدها فرصة،، فتستخدمها كدافع للنمو والتطور.

حين تقع في المقارنة، هناك أمور مهمة يجب أن تفعلها:

- ركّز على مسارك، على نواقصك، وحاول إصلاحها وتعزيز نقاط قوتك.

- حاول قدر الإمكان تقليل المقارنة والحد منها.

- تعلّم ما ينفعك في عملك الحالي، مع قليل من الأمور الأخرى التي لا تحتاجها الآن، ثق بي، ستنفعك لاحقًا وستساعدك على فهم البرمجيات بعمق في مواضع لم تكن تتوقع أنها ستنفعك فيها.

- ركّز على الأساسيات، راجعها لو لم تكن متقنا لها،، أو ذكّر نفسك بها، فهذا سيجعلك تفهم دورة حياة تطوير البرمجيات بعمق أكبر.

- لا تخجل من مشاركة ما تتعلمه، مهما كان بسيطًا، فهذا سيعزز ثقتك بنفسك، ويدفعك لفهم الأمور بعمق أكبر حتى تكون مشاركاتك مفيدة ونافعة.. وهذا بدوره سيقلل من مقارنتك بالآخرين، لأن تركيزك سيكون على تطوير نفسك ومساعدة غيرك.

وقبل كل هذا إستعن بالله و لا تعجز.
3
تطبيق تتبع عادات المسلم بأقل القليل! 

السلام عليكم و رحمة الله. 

التطبيق مستوحى من "أقل القليل" الذي كان يقوم به الرسول صلى الله عليه وسلم في يومه وليلته. وأقل القليل هو ما تعلمته من الشيخ الدكتور عبد الرحمن ذاكر الهاشمي عبر مجالسه الأونلاين، الذي ننهل منه يوميًا ما ينفعنا في ديننا ودنيانا (فاللهم احسن اليه و ييسرلنا التعلم و العمل بما نتعلم منه). 

فاللهم إنا نسألك النفع والاستفادة مما نتعلم. وكجزء من زكاة التعلم (العلم كلمة ثقيلة علي كما اقرل دائما)، قررت تخصيص وقت لهذا التطبيق بنسخته الأولية، وسأعمل على تطوير ميزات أخرى (عندي أفكار كثيرة في هذا السياق.. فدعواتكم لنا)،، لعلّه يُطوَّر بشكل أكبر وينفعنا وينفعكم.

ترقبوا العديد من التحسينات مستقبلاً.

ملاحظة تقنية: التطبيق يستخدم حاليًا localStorage فقط، وأي تغيير في ذلك سيتم الإشارة إليه مستقبلاً.

رابط التطبيق:
http://aqalalqaleel.com/

و من يعرف الدكتور مباشرة ممكن ان يحيله على هذا سأسعد بأن يرى شيئا تقنيا متعلقا بمادته "أقل القليل" التي يستوحيها من القرآن و السنة.

نفعنا الله بما نتعلم.
7
Mohcin Space
هل_لا_زالت_هندسة_البرمجيات_تستحق_التعلم_في_عصر_ال_ai.aac
In the middle of the ai cloud, developers often forget that software engineering isn't just about coding, it's much more than that. It's about solving human problems, big or small. It's about critical thinking. I entered this field for that reason, long before without knew it was a high-paying job or even thought about that aspect.

We've always used technology to help us build software. AI is just another tool in that way, like how we used to search on StackOverflow, forums, documentation, and asking friends. But we didn’t blindly rely on those, we make sure we understood what we were doing. (Which, to be honest, I've failed at many times, doing things I didn't fully understand)

Now, I use ai to improve my work, speed things up, and pair-review with it. Plus, i use it for learning.

But i see ai as a tool, not a replacement for my own growth. I'm not giving up on learning or ignoring the knowledge gaps I want to fill, ai is a great mentor, but software development isn't something you "finish" learning.

So, SWE isn't disappearing, ai is a powerful assistant, but we should treat it as a mentor. And we need to remind ourselves of that, because it's easy to forget when you just getting things done..
لا تحتاج دائما لإستخدام الفريمووركس المشهورة و عديد ال services

Stack بسيطة ممكن تحل مشكلة كبيرة كنت تحلها بادوات كثييرة و معقدة.

شاهد هذا المقطع القصيد و النافع: https://youtu.be/1H3RMpuPv-4?si=8Oolp13yz3lQ06Nk
2
في مجال هندسة البرمجيات لا تسوف كثيرا.

إبدأ باقل القليل،
اكتب قليل كود.. مع الوقت ستكتب كثيرا،
اكتب logic خاطئ مع الوقت صتصححه،
استشر كثيرا من سبقوك،
استشر مبكرا،
استعن بالله و لا تعجز،

كل ما ذكرته فوق و هلم جرا.. لم اكن اقوم به شخصيا و احاول الاستدراك الان و هذا يشكل ضغطا.. لذا لو استطعت ان تقوم بهذا في بداية مسيرتك المهنية او في الجامعة يكون افضل.

و السلام عليكم.
6
This media is not supported in your browser
VIEW IN TELEGRAM
#Avalanche
دائما ما يبدو الانهيار الثلجي بعيداً ويظهر للناظر البعيد انه في آمان!



﴿فَاصْبِرْ صَبْرًا جَمِيلًا ۝ إِنَّهُمْ يَرَوْنَهُ بَعِيدًا ۝ وَنَرَاهُ قَرِيبًا﴾


المكان: جبل Tian Shan
ملتقط الفيديو : YT| harry shimmin
3
السلام عليكم.

مسألة الاستخارة في كل امر جديد،، أعني فعلا كل امر جديد على حياة المسلم و بما اننا غالبا نناقش هنا مواضيع متعلقة بهندسة البرمجيات، لنفترض انك كنت متقنا للغة برمجة برمجة او فرييموورك معين، لكن تم تحويلك لمهمة اخرى فيها فرييموورك لا تتقنه او لا تعرفه، هل تجوز صلاة الاستخارة هنا؟ او في مثيلات هذه الأمور و الحالات؟

لمن يعرف ينفعنا، او يقترح فتوى لعلماء نقرأها او مقاطع نسمعها جزاكم الله خيرا.
7
ال ai editors هي أدوات رائعة إذا تعلمنا استخدامها بشكل جيد.

إستخدام المحررات التي تعتمد على نماذج AI أصبح شيئًا ضروريًا في هندسة البرمجيات حاليًا، لأنه بدون شك يجعلك مبرمجًا ومهندسًا أكثر إنتاجية، وربما أفضل.

لكن كيف؟

أصبح الآن من الممكن تنفيذ أي فكرة تخطر ببالك لإصلاح خطأ معين أو لإضافة ميزة جديدة، حتى لو لم تكن ملمًّا بجميع جوانب اللغة أو الفريمورك الذي تستخدمه.. وصراحةً، هذه نعمة كبيرة.

بل حتى الـ syntax، كنت شخصيًا أنسى الكثير منه وأرجع أبحث عنه في كل مرة، سواء على الأنترنيت او باستخدام ال official documentation الآن، الأمر أصبح أسهل بكثير.

تستطيع أن تركّز على بناء مهاراتك الهندسية وطريقة تفكيرك، وتبدأ بكتابة الصيغ الأولية للكود. عندها، الـ AI سيقوم بتحسينه بلا شك. وهنا، يصبح لديك Pair Programmer مجاني يساعدك على بناء ميزات أفضل انطلاقًا مما بدأت به.

التركيز الآن أصبح أكثر على أن نكون مهندسي برمجيات مفكرين ومنتجين، لأن AI Editors أصبحوا يتكفّلون بسرعة كتابة الكود، والتي تُعتبر جزءًا بسيطًا فقط من دورة حياة تطوير البرمجيات (SDLC).

فاللهم علمنا و إنفعنا بما علمتنا.
3
HTML Embed Code:
2025/07/08 21:28:10
Back to Top