بمناسبة الثريد الاخير والسؤال المتكرر، ازاي حد يخش مجال البرمجة؟ او لو لسه بادئ في المجال يقدر يطور نفسه ازاي وايه الخطوة الجاية.
خلينا الاول نتفق ان مفيش اجابة واحدة تناسب الناس كلها، التجارب كلها تجارب شخصية جدا، خاصة في غياب منظومة تعليمية-صناعية في مصر قادرة على انتاج، تدريب،
خلينا الاول نتفق ان مفيش اجابة واحدة تناسب الناس كلها، التجارب كلها تجارب شخصية جدا، خاصة في غياب منظومة تعليمية-صناعية في مصر قادرة على انتاج، تدريب،
تشغيل وتطوير مهندسين بشكل مستدام، فخدوا الكلام ده كتجربتي الشخصية وتجربة ناس اشتغلت معاهم، وحطوا عليه نكهتكم الخاصة من تجربتكم والفرص اللي متاحة قدامكم.
خليني اقول الحاجة اللي باقولها كل ما تيجي فرصة اني افتح بقى: البرمجة حرفة، زيها زي النجارة وزيها زي الحدادة، وبالتالي فعشان
خليني اقول الحاجة اللي باقولها كل ما تيجي فرصة اني افتح بقى: البرمجة حرفة، زيها زي النجارة وزيها زي الحدادة، وبالتالي فعشان
نحترفها عندنا حاجتين مينفعش نتخلى عنهم، الشق النظري وشق تراكم الخبرة سواء بتجاربنا او التجارب المنقولة لينا من زمايلنا.
الشق النظري، وده المفروض بتتعلم فيه مبادئ علوم الحاسب وبتتعرف على مفاهيم زي ال loops والجمل الشرطية و data types. وبتتعلم برضة OOP وممكن تتعرض لل FP وبتتعلم لغة برمجة تقدر تطبق فيها اللي اتعلمته وتعمل تطبيقات صغيرة وبسيطة وفي الاغلب مؤخرا ان اللغة دي بتكون python.
وبعدها بتتنقل انك تتعرف اكتر على Algorithms و Data structures وبتتعلم ازاي تحدد جودتهم من حيث السرعة والمساحة المطلوبة فبتبتدي تتعرف على ال Asymptotic notation و ال Big-O وهكذا.
فيه كورس موجود مجاني على edx مغطي المواضيع دي بشكل كويس جدا وهو كورس من MIT:
edx.org
فيه كورس موجود مجاني على edx مغطي المواضيع دي بشكل كويس جدا وهو كورس من MIT:
edx.org
لو ذاكرت الكورس ده مع شوية مقالات على الهامش بتكون عندك ارض صلبة من المعرفة النظرية مع شوية تطبيقات وتمارين بسيطة تأهلك انك تخش في المجال بشكل عملي اكتر. زي ما قولنا البرمجة حرفة، ومفيش اي حاجة بتقوي الحرفة عند الحرفي قد ممارستها، طول الوقت انت محتاج تعمل حاجة وتشتغل على مشروع او
فكرة. لو بتستخدم اداة، اسأل نفسك ازاي ممكن اعمل حاجة زي الاداة دي، ازاي اعمل نسخة مصغرة منها؟ وبعدين تبتدي تجرب تعملها، عشان ساعتها هتخبط في المشاكل اللي مكنتش هتتخيلها وانت قاعد بتخطط على ورقة وقلم.
الانترنت مليان بالمقالات اللي بتقدم حلول، يعني ممكن دلوقتي نفتح مقال عن ال builder pattern بس لو انت مش مدرك المشكلة اصلا اللي مخلياك محتاج الباترن، غالبا الباترن ده مش هيثبت في دماغك كحل، ده اذا اصلا اقتنعت انه حاجة مفيدة لمشكلة حقيقية.
دلوقتي بقى معاك اساسيات البرمجة وشوية خبرة بسيطة تسمحلك انك تعمل تطبيقات بشكل اقرب للمحترف من الهاوي، الخطوة الجاية انت محتاج تعرف انت ناوي تتخصص ايه. التخصصات كتيرة، واللغات اكتر والفريمووركس اكتر واكتر، فانت هتبقى تايه وده مقبول ومفهوم، حاول تدور على مينتور يساعدك في المرحلة دي
انه يديك من خبرته ويساعد في توضيح نقط اللبس، ممكن تلاقي نفسك بتتنطط بين التخصصات دي، مقبول برضة، مفيش خبرة وحشة. كله هيفيدك وهيكون شخصيتك كمبرمج في الاخر، وهيساعد في تكوين T-shape بتاعك. وكده كده انت في اي تخصص من دول محتاج تعرف مبادئ من التخصصات التانية، فماتحبطش او تضغط.
المهم في موقع انا بحبه بيساعد انك تبني لنفسك طريق للمذاكرة والدراسة في التخصصات المختلفة واللغات المختلفة، وهو roadmap.sh انا بانصح بيه جدا هيساعدك في انك تحدد اولوياتك وتدي اهمية لكل موضوع بتذاكر في مقابل موضوع تاني، بس اختيار اللغة والتخصص عبئ للأسف لازال على كتفك.
الموقع ده بيديك طريق من اول انك لسه بتتعرف يعني ايه انترنت، لحد ما يسلمك لمفاهيم ليها علاقة بال system design في الباك اند وانواع قواعد البيانات وهكذا. فانت المفروض متستناش تخلص كل حاجة منها مرة واحدة، لا اختار طريق وامشي فيه وفي نفس الوقت دور على شغل ومشاريع واتعلم وانت بتشتغل.
المهم انك لما تختار لغة برمجة، لازم تفهمها كويس، لغة البرمجة دي اهم اداة انت بتستخدمها مع الفريم وورك طبعا، لازم تكون فاهمها كويس ومذاكرها وعارف نقاط قوتها وضعفها. والاهم انك متتعلقش بيها عاطفيا، دي اداة، دايما خليك مستعد انك ترميها وتبدلها لما يكون عندك مشروع مش مناسب ليها.
الثريد ده كنت عاوز اتعرض فيه لمواضيع تانية مشهورة وبيتجاب سيرتها كتير زي ال Problem Solving وال System design وقواعد البيانات والنظريات المتقدمة في البرمجة ويمكن حتى ال SDLC بس خليها في ثريدات تانية بعدين لان ده طول جدا.
تم.
تم.
جاري تحميل الاقتراحات...