مباحثی که یک برنامه نویس تحت وب باید یاد بگیرد

با سلام و احترام خدمت اساتید
من یک برنامه نویس تازه کار هستم (البته اگه برنامه نویس محسوب بشم :slightly_smiling_face: )
علاقه دارم برنامه نویس تحت وب بشم . می خواستم بدونم چه چیزهایی را باید یاد بگیرم
بدیهی است زبان برنامه نویسی باید بلد باشم که در حال فراگیری پایتون هستم
html , css , js آشنایی دارم و می دونم که باید فریم ورکی مثل Django یا و … یاد بگیرم
از دیتابیس ها با postgreSQL کار کردم و آشنا هستم
آیا لازم هست لینوکس یاد بگیرم ؟ البته همین الان سیستم من لینوکس هست لازم هست حرفه ای بشم توی لینوکس ؟
نظرتون در مورد postgreSQL چیه ؟ آیا مناسب با پایتون هستش ؟
هر موردی که برای تبدیل شدن به برنامه نویس تحت وب لازم هست لطفا راهنمایی کنید.
ممنون از شما

3 Likes

سلام.

پایتون زبان خوب و راحتیه. فقط مراقب باشید تبدیل به یکی از کسانی که میگن «پایتون برای همه چی خوبه و فقط پایتون.» نشید. بیماری خطرناکیه.
من به شما پیشنهاد میکنم با Flask کار کنید به جای django. خیلی ساده (به معنای simple و بدون چیزهای اضافی) هست و دستتون بازتره. البته فکر میکنم بازار کار django بهتر باشه.
برای دیتابیس، اگه به ORM ها علاقه دارید، پیشنهاد میکنم از sqlalchemy استفاده کنید (و از flask-sqlalchemy استفاده نکنید!!!) و اینم بگم که کلا استفاده از ormها برای راحتتر کردن کاره و راندمان رو پایین میاره (برای یه کوئری ساده ممکنه دو یه سه تا کوئری زده بشه در حالی که در حالت عادی (که مثلا با py-mysql به صورت دستی کوئری میزنیم) با یه ریکوئست، چیزی که میخوایم رو از دیتابیس میگیریم)

درمورد دیتابیس باید بگم pgsql خیلی بهتر از mysql هست (قابلیتهای بیشتری داره) ولی یه کم سنگینتره. (از اونجایی که روی دوتا پورت مختلف run میشن، میتونید همزمان روی یه سیستم نصبشون کنید)

دونستن لینوکس (کامند لاین) از لازمه‌های برنامه نویس خوبه و برای deploy کردن روی سرور لازمه.
هرچقدر از مزایای git بگم کم گفتم.


اینایی که گفتم، برای اینه که کار آدم راه بیفته. ولی اصلا کافی نیست. مطالعه‌ی بیشتر در تمام زمینه‌ها لازمه.
شما میتونید یه developer معمولی باشید و صرفا بلد باشید با چندتا لایبرری و فریموورک سایت بسازید. و احتمالا تا آخر عمر از همین راه کسب درآمد کنید. ولی چیزی که تفاوت بین junior و senior رو مشخص میکنه، اینه که اون فرد چقدر درمورد مسائل جانبی اطلاعات (و تجربه) داره.

شرکت توی انجمن‌ها (مثل همین وبسایت) و گردهماییها (lugها و pugها) در کنار مطالعه‌ی چیزهای جدید، میتونه بهتون کمک کنه.
مطالعه‌ی بحثها (سوال و جوابهای همین وبسایت) و مقالاتی که حتی مرتبط با زمینه‌ی کاری شما نیستن هم میتونن به پیشرفتتون کمک کنن. من چندسال با پایتون کد میزدم بعد توی یه روز فهمیدم هیچی ازش بلد نیستم. تجربه‌ی ناامیدکننده‌ای بود.


اینم اضافه کنم که rubyهم زبان خوبیه برای برنامه‌نویسی تحت وب. (من ازش خوشم نمیاد ولی دلیل نمیشه بد باشه)
به SQL هم به چشم یه زبان برنامه نویسی نگاه کنید و یاد بگیریدش. خیلیوقتها یه کوئری پیچیده، ساده‌تر از ۱۰تا function پایتون کار رو راه میندازه. (بگذریم از درگیری ram و cpu)
یادگیری regex هم به نظر من لازمه. به همون دلیل خط بالا. اصلا هم ترسناک نیست :smiley:

^[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,63}$
7 Likes

ممنون از پاسخ جامع شما ([email protected])
اساتید دیگه نمی خوام راهنمایی کنند؟

1 Like

چندتا نکته‌ی دیگه هم باید بگم، با توجه به عنوان تاپیک، توضیحاتم بیشتر مربوط به یک زبان خاص میشد.


  • داشتن تجربه و دانش در SPA هم خیلی به درد میخوره. با توجه به اینکه الآن امکاناتش بیشتر از قدیم فراهمه و تجربه‌ی کاربری بهتری ارائه میده. (میشه گفت SPAها طراحی وبسایت رو به یه level دیگه بردن)
  • استفاده از تکنولوژیهایی مثل restFul که همیشه لازم میشه، ولی یه جاهایی websocket لازم میشه (برای ارتباط realtime و server sent event). الآن یه سرچ کردم مثل اینکه لایبرریهایی برای استفاده از websocket در flask هست. (نمیدونم خوبه یا نه. نمیدونم اصلا کامل هست یا نه)
  • یادگیری js واقعا لازمه. ازش متنفرم ولی متاسفانه زبان اصلی front-end به حساب میاد. یه سری فریموورک خوب داره مثل react که به ساخت spa کمک میکنن.
  • یاد گرفتن زبانهایی که به js کامپایل میشن هم میتونه خوب باشه. حداقل اینکه درگیر خود js نمیشیم. (این زبونها رو نمیشناسم که بخوام پیشنهادی درموردشون بدم. خودم دارم با ClojureScript کار میکنم که مسلما یادگیری clojure قدم بزرگیه و بهتون پیشنهاد نمیکنم، مگر اینکه بخواید با کلوژر کار کنید.)
    مشکلش اینجاست که بازارکارشون کمه. مگر اینکه بخواید تخصصی روی فرانت-اند کار کنید.
  • اگه دنبال فریموورکهای دیگه‌ای در پایتون میگردید، بهتون tornado رو پیشنهاد میکنم. در اصل بیشتر از framework بودن، webserver هست! قابلیتهای زیادی داره. از جمله websocket و async. البته http client هم داره.

از اونجایی که یه اشاره بهش کردم، پیشنهاد میکنم حتما درمورد multi threading و async و non-blocking و dead lock مطالعه کنید و سعی کنید (اگه امکانش بود) کدهای async بنویسید.
البته از اونجایی که کدهای flask رو معمولا پشت یه load balancer (اصولا nginx) میذاریم، نیازی به این مسائل نیست (بگذریم از اینکه نمیشه فلسک رو async نوشت). ولی دونستنشون و استفاده ازشون در پروژه‌های دیگه ضرری نداره.

5 Likes

یه نگاهی به این لینک بندازین

4 Likes