برو به محتوای اصلی

میلاد جعفری
میلاد جعفری
۸۱۴
توسعه‌دهنده وب و اپلیکیشن

از حدود ۱۵-۱۴ سال پیش با موجود عجیب و غریبی به نام کامپیوتر آشنا شدم. این آشنایی رفته‌رفته به رابطه‌ای عمیق تبدیل شد. به نحوی که الان توانایی این رو دارم که کل زندگی خودم رو داخل یه کوله پشتی جا بدم :)

اواخر سال ۸۶ به دنیای برنامه نویسی قدم گذاشتم و از سال ۹۱ به صورت حرفه‌ای روی پروژه‌هایی کار کردم که از نیاز، عشق و خلاقیت سرچشمه گرفته.

آیا از میلاد جعفری سوال دارید؟

همین الآن عضو شو و به صورت ناشناس یا عمومی سوالتو از میلاد جعفری بپرس!

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

به هزار و یک دلیل می‌تونه بستگی داشته باشه. باید اطلاعات بیشتری از خطا رو عنوان کنید.

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

اندروید استدیو کلا نرم‌افزار سنگینی هست و برای اجرای بی‌دردسر اون نیاز به سیستمی با سخت‌افزار مناسب دارید. اما بخش زیادی از این کندی به دلیل شبیه‌ساز اون هست که من پیشنهاد می‌کنم از شبیه‌ساز genymotion استفاده کنید. و این نکته رو هم یادآور بشم که در اکثر مواقع می‌تونید کد خودتون رو فارغ از اندروید استدیو در ادیتورهای سریع مثل vscode (با visual studio اشتباه نکنید) بنویسید و فقط یک سری کارهای سیستمی رو با اندروید استدیو انجام بدید.

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

در حال حاضر با PHP/Mysql و همچنین Javascript و کتابخانه‌ها و فریمورک‌های اون از جمله NodeJs/Mongodb ، React ، React Native  و ... کار می‌کنم. 

و در برنامه خودم تصمیم دارم در آینده از Python و فریمورک Django استفاده کنم. (سال ۹۰ و ۹۱ با این دو کار می‌کردم اما الان تصمیم دارم به صورت ویژه‌تر روی این دو کار کنم.)

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

اول از همه این موضوع ارزشمندیه که شما خودتون رو به رشته خودتون محدود نمی‌کنید و میرین دنبال چیزی که فکر می‌کنید جای شما اونجاست. 

در رابطه با نقطه شروع یادگیری برنامه‌نویسی باید خدمتتون عرض کنم که به نظر من قبل از هر چیزی باید از خودتون سوال بپرسید که من برنامه‌نویسی رو برای چی می‌خوام؟ 

شاید این سوال ساده‌ای به نظر برسه اما بهتون قول میدم که سال‌ها در وقت شما صرفه‌جویی می‌کنه. ببینید برنامه‌نویسی شاید یه شروع واحد داشته باشه، اما پایان واحدی نداره! این رو بعدا بهش می‌رسید. 

برنامه‌نویسی شاخه‌های زیادی داره. از برنامه نوشتن برای دسکتاپ (ویندوز، لینوکس، مک و...) بگیرید تا برنامه‌نویسی صنعتی و موبایل و وب و...

اینکه از الان بدونید مثلا ۲ سال دیگه قراره به کجا برسید و چیکار کنید، خب شاید برای شروع خواسته غیر معقولی باشه، اما اینکه بدونیم چرا می‌خواید به ۲ سال دیگه برسید، راه رو برای ما روشن‌تر می‌کنه.

من و خیلی از دوستان شبیه به من، سال‌ها از این شاخه به اون شاخه رفتیم و سعی کردیم انقدر راه‌های متفاوت رو تست کنیم تا اون چیزی رو که دوست داشتیم پیدا کنیم. 

شما سعی کنید با گوگل دوست باشید. در این مسیر، گوگل و ابزار نازنینش یعنی یوتیوب به بهترین دوستای شما تبدیل میشن. من بیشتر از یازده ساله که به دنیای برنامه‌نویسی قدم گذاشتم اما هیچ‌وقت هیچ‌کلاسی نرفتم و توی تمام این مدت گوگل بهترین استادم بوده. 

هرچند می‌دونم که احتمالا چند واحد برنامه‌نویسی توی دانشگاه و یا مدرسه پاس کردید، اما در وهله اول باید دنبال این باشید که ذهن خودتون رو با مفهوم برنامه‌نویسی عجین کنید. زبان برنامه‌نویسی پایتون یکی از بهترین زبان‌ها برای شروع برنامه‌نویسی هست. این زبان ساختار بسیار خوانایی داره و در بسیاری از دانشگاه‌های مطرح دنیا، به عنوان زبان آموزشی برنامه‌نویسی به کار برده میشه. 

البته ناگفته نمونه که این زبان یکی از قدرتمندترین زبان‌هایی هست که می‌تونید باهاش کار کنید. بعد از اینکه نوشتن برنامه رو با این زبان یاد گرفتید، اون موقع با توجه به هدف خودتون، می‌تونید زبان (ابزار، تکنولوژی و...) مورد نیاز خودتون رو پیدا کنید و یا به صورت هدفمند‌تر این زبان رو ادامه بدید (چون باهاش میشه کارهای متفاوتی انجام داد). 

موفق باشید

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

قطعا که نمیشه با اطمینان گفت که همه اتفاقاتی که در زندگی ما می‌افته از خود ما نشات می‌گیره. وجود اتفاقات پیش‌بینی نشده در زندگی غیر قابل انکاره. اتفاقاتی که ممکنه محیط و یا افراد در ایجاد اون تاثیرگذار بوده باشند. 

اما این به معنای این نیست که سهم ما ناچیزه. اتفاقا ما بیشترین تاثیر رو روی زندگی خودمون داریم. هرچند زیاد اهل کتاب‌های روانشناسی نیستم اما یکی از بهترین کتاب‌هایی که در این زمینه خوندم (که اتفاقا محبوبیت بسیار زیادی هم در دنیا به دست آورده) کتاب تئوری انتخاب از ویلیام گلسر هست که این موضوع رو دستکم خیلی خوب برای من مشخص کرد. 

اگر وقتش رو داشتید بخونید. خوبه. 

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

بیشتر از سه ساله که مجموعه «نگار» از علی‌سورنا رو گوش میدم. این مجموعه برای من فراتر از یک آلبوم هست و کلمه به کلمه اون رو زندگی کردم و باهاش زندگی کردن یاد گرفتم. 

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

اگر صادقانه بخوام تجربه خودم رو باهاتون در میان بذارم، برای راه‌اندازی (و تاکید می‌کنم راه‌اندازی) یک استارت‌آپ، اگر دنبال ثبت شرکت نرید خیلی بهتره. 

ثبت شرکت علاوه بر هزینه‌های مالی و زمانی، شما رو مشمول مالیات می‌کنه و دیرکرد در پرداخت این مالیات‌ها هم شما رو مشمول جریمه!

اینکه تاکید می‌کنم برای راه‌اندازی استارت‌آپ این کار رو نکنید به این دلیل است که شما حتی اگر بزرگترین ایده‌ی دنیا رو هم داشته باشید، قطعا باید زمان زیادی رو برای رسیدن به یک جریان مالی مناسب صرف کنید. این زمان می‌تونه در شرایطی که عنوان شد، به ضرر شما باشه. 

اما برای رشد و توسعه استارت‌آپ، در مرحله‌ای که اهداف کوتاه مدت خودتون رو محقق کردید، به دنبال ثبت شرکت برید. در اون مرحله، داشتن یک شخصیت حقوقی می‌تونه برای پیشرفت کار شما اتفاق خوبی باشه.

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

ببینید به نظر من در وهله اول یک مفهوم مهم داریم که من همیشه به مشتریانم میگم:

دیجی‌کالا نوشتن یک بحثی هست و دیجی‌کالا شدن یک بحث دیگر!

بنابراین در قدم اول باید مشخص کنیم که قراره صرفا یک دیجی‌کالا بنویسیم یا قراره دیجی‌کالا بشیم. 

در رابطه با دیجی کالا نوشتن، شما این کار رو با وردپرس هم می‌تونید انجام بدید اما برای دیجی‌کالا شدن علاوه بر یک سیستم اختصاصی، به مسیری راهبردی برای رشد و توسعه نیاز دارید. 

هرچند سلایق و مهمتر از اون نیازها و هدف ها متنوع هستند اما برای بخشی که مربوط به کدنویسی میشه، برای همین لحظه من پکیجی شبیه به این رو ترجیح میدم:

Nodejs/Python, MongoDB, ReactJs

موفق باشید و سعی کنید تحت تاثیر نظر من قرار نگیرید و خودتون نیازتون رو کشف کنید.

موفق باشید

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

کوتاه: html5 طبیعتا نسخه جدید html هست که از سال‌ها پیش سعی شد امکانات متفاوتی بهش اضافه بشه. با توجه به اینکه نسخه پنجم html در  سال زیادی که از معرفیش می‌گذره، کارایی خودش رو به خوبی نشون داده و تقریبا در تمامی مرورگرها پشتیبانی میشه، عملا ورژن‌های قبلی html منسوخ شده به حساب میان. 

در html5 المان‌ها و APIهای متفاوتی به نسخه قبلی html اضافه شد که جهش بزرگی رو در وب رقم زد. تقریبا میشه گفت تمامی وب‌سایت‌هایی که شما در طول روز مشاهده می‌کنید از html5 استفاده می‌کنند.

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

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

مشکل فقط خود این سایت نیست چون ما ایرانی‌ها به استفاده از هویت جعلی عادت کردیم و می‌تونیم با پروکسی و کمی تقویت زبان از این سایت استفاده کنیم. اما داستان از جایی سخت‌تر میشه که شما حتی برای باز کردن حساب هم نیاز دارید هویت خودتون رو پنهان کنید! بهترین راه برای باز کردن حساب، پی‌پال هست که اون هم فقط کافیه احساس کنه ما ایرانی هستیم ...

 

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

بدترین کتاب‌هایی که تا حالا خوندم و یا بهتر بگم کتاب‌هایی که از خوندنشون پشیمون شدم مربوط میشه به چند سال پیش که چندتا از کتاب‌های برایان تریسی رو خوندم. الان اگر بخوام راحت بگم، هر جا اسم ایشون و چند نویسنده دیگه که اکثرا کتاب‌های روانشناسی زرد (به نظر من) می‌نویسند رو می‌بینم، نا خودآگاه صد و هشتاد درجه می‌چرخم! چون به نظرم کتاب‌های ایشون و نویسنده‌های مشابه، به طرز عجیبی حبابی درست می‌کنند که ممکنه ضربه بدی به زندگی بزنه. 

بر خلاف نظر بسیاری از دوستان، و با توجه به اینکه دوست دارم نظرم رو آزادانه بیان کنم، یکی از کتاب‌هایی که از خوندنش پشیمون شدم، کتاب صد سال تنهایی هست. 

البته توی سال‌های گذشته کمتر کتابی رو خوندم که پشیمون بشم چون درست یا غلط تقریبا با حساسیت بیشتری کتاب انتخاب می‌کنم.

و در آخر کتاب‌های آلبر کامو باعث شد به طرز عجیبی عاشق ایشون و آثارشون بشم. 

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

این موضوع حتی در بسیاری از مواقع برای خود وبمستر (صاحب سایت) هم نامشخص هست، چه برسه به کاربران.

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

بزرگترین، بهترین و بی‌انتظارترین استاد من توی چندین سال گذشته، یوتیوب بوده. 

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

یک - موضوع مهم خود سوال هست. آیا وظیفه آموزش دادن به خود و هزینه کردن از درآمد برای آموزش، در وهله اول وظیفه خود جامعه هست؟ 

دو - وقتی شما جامعه 《فقیر》 رو مد نظر قرار می‌دهید، آیا باید توقعی برای 《خرج》کردن برای آموزش داشت؟

در بسیاری از کشورهای دنیا، برخورداری از آموزش حق جامعه‌ست نه وظیفه. 

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

من چند سالی میشه که برای توسعه پروژه‌های برنامه‌نویسی خودم از گیت‌لب۲۶ استفاده می‌کنم. الان قصد ارسال آخرین تغییرات رو داشتم که با خطای ۵۰۳ مواجه شدم. بعد از مراجعه به سایت گیت‌لب با عبارت زیر مواجه شدم:

GitLab.com۳۴ is undergoing 1-hour maintenance

و بعد از اون در پستی که داخل وبلاگ خودشون منتشر کرده بودند عبارت زیر بیش از هر چیزی من رو به خودش جذب کرد: 

NOTE to users in Crimea, Cuba, Iran, North Korea, Sudan, and Syria: GitLab.com۳۴ may not be accessible after the migration to Google.

اما آیا گیت‌لب هم مثل بسیاری از سرویس‌ها، کاربران ایرانی خودش رو تحریم کرد؟ 

گیت‌لب در این باره گفته که دلیل پایین اومدن سرویس ما (برای چند ساعت) مهاجرت از سیستم Azure مایکروسافت به Google Cloud Platform هست. و در ادامه گفته چون گوگل تعدادی از کشورها رو تحریم کرده، بنابراین ممکنه گیت‌لب از این پس در ایران در دسترس نباشه. 

بنابراین هرچند گیت‌لب به صورت مستقیم ما رو تحریم نکرده، اما احتمالا این سیستم هم به کلی از دسترس ما ایرانی‌ها خارج بشه. 

این موضوع خیلی ناراحت کننده بود. 

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

دوست عزیز، من از عبارت آخرتون شروع می کنم؛ بومی سازی و ری‌اکت‌نیتیو: 

ببینید اصولا استفاده از فریمورک‌هایی مثل ری‌اکت‌نیتیو، در عمل چیزی جدا از بومی سازی نیست چراکه نهایتا کد شما به کدهای سیستمی تبدیل میشه. 

اما در رابطه با هزینه، شاید در مراحل ابتدایی این هزینه ملموس نباشه. اما زمانی که سیستم شروع به رشد و توسعه می‌کنه و کاربران بیشتری رو جذب می‌کنه اونجاست که کم‌کم این هزینه‌ها خودش رو نشون میده. هرچند استفاده از زبان‌هایی مثل سوئیفت و جاوا به صورت مجزا می‌تونه خوبی‌هایی هم داشته باشه اما معایب خودش رو هم داره. وقتی اپلیکیشنی نوشته میشه، این به معنای پایان کار نیست، بلکه تازه شروعی برای رشد و توسعه اپلیکیشن و در کل سیستم هست. گاهی اوقات باید بروزرسانی‌های مختلفی برای باگ‌های اپلیکیشن انجام بشه، و گاهی اوقات هم ممکنه ایده‌ها تکمیل‌تر بشند و نیاز باشه بخش‌های بعضا زیادی از ساختار تغییر کنه. در این حالت دو تیم مجزا باید برای دو سیستم عامل مختلف، یک کار یکسان رو انجام بدند. یعنی شما باید همیشه دو تیم در کنار خودتون داشته باشید که حتی کوچکترین بروزرسانی ها رو انجام بدند. این موضوع قطعا می‌تونه هزینه‌ها رو افزایش بده. 

اما در حالتی که ما از فریمورک‌هایی نظیر ری‌اکت‌نیتیو استفاده می‌کنیم، یک کار فقط برای یک بار انجام میشه. 

از طرف دیگه خیلی از اپلیکیشن‌های بزرگ زمانی که از دو تکنولوژی مختلف استفاده می‌کنند، در نهایت بخش‌هایی از اپلیکیشن‌ها هست که دقیقا مثل هم نمیشه. در این زمینه میشه رجوع کرد به تجربیات سیستم‌های بزرگی مثل اینستاگرام که یکی از دلایل به وجود اومدن ری‌اکت‌نیتیو بود. 

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

۱ - کتاب بیگانه از آقای آلبر کامو. 

من بارها این کتاب رو از روی نسخه‌های فارسی، انگلیسی و همچنین صوتی خوندم و به طرز عجیبی باز تمایل دارم این کتاب رو بخونم. من تا قبل از خوندن این کتاب گمان می‌کردم که یه آدم کتابخون باید مدام کتاب‌های متعددی رو بخونه وگرنه از قافله عقب می‌مونه اما بعد از خوندن این کتاب، این طرز فکرم تغییر کرد. 

خلاصه این کتاب رو خیلی دوست دارم. 

۲ - کتاب عقاید یک دلقک که نمی‌دونم چرا با تمام شدنش اشک ریختم. 

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

برای من واقعا هیچ‌کدوم. 

من ساعت‌های زیادی از روز، هفته و در کل زندگی خودم رو صرف برنامه نویسی کردم و می‌کنم اما شاید واستون جالب باشه که خودم همیشه (زمان‌هایی که به خودم اختصاص داره) از یه موبایل ساده استفاده می‌کنم که نهایت کاری که می‌تونه انجام بده، تماس گرفتن و پیام دادنه! 

خیلی اوقات دوستای من بهم میگن که تو اصولا باید آیفون بگیری دستت، اما من همیشه میگم من از موبایل و اپلیکیشن فراری‌ام!

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

جواب کوتاه: هیچ 

جواب بلند: اصولا بحث کسب درآمد از اپلیکیشن‌ها به تازگی در ایران راه افتاده اما تا جایی که من اطلاع دارم، بخش زیادی از این اپلیکیشن‌های ریز و درشت مربوط میشه به نگاه کردن تبلیغ و یا بازاریابی. نبودِ استاندارد (قوانین) درست و همچنین یک پلت‌فرم بزرگ در این حوزه، تصمیم‌گیری در رابطه با استفاده از این اپلیکیشن‌ها رو با تردید جدی روبرو می‌کنه. 

بارها از من سوال شده که آیا اپلیکیشن‌ها کسب درآمد، واقعا درآمد زا هستند؟! و من در جواب این رو میگم که «قطعا، اما نه برای شما، بلکه برای توسعه‌دهنده‌های اون!»

میلاد جعفری
میلاد جعفری ، توسعه‌دهنده وب و اپلیکیشن

منظورتون برای چه پلت‌فرمی هست؟ 

اما در کل خیر. با بسیاری از زبان‌ها میشه منطق و هوش مصنوعی بازی نوشت. مثلا می‌دونم که بازی Call of Duty رو در چند نسخه قبل با C++ نوشته بودند.