چگونه به یک توسعه‌دهنده بلاک‌چین تبدیل شویم؟

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

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

اول از همه – بلاک‌چین چیه؟

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

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

هدف اصلی که بلاک چین دنبال می‌کنه دادن سطح بالایی از امنیت و ضمانت برای کاربرانی هستش که ازش استفاده می‌کنن. داده‌هایی که در این شبکه ثبت و ذخیره می‌شن از امنیت بالایی برخوردارند و برای تایید یا Verifey کردن‌شون نیاز به یک شخص ثالث وجود نخواهد داشت.

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

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

فرایند توسعه بلاک‌چین

دو دسته توسعه‌دهنده در زمینه برنامه نویسی بلاک‌چین وجود داره که عبارت هستند از: توسعه‌دهنده هسته یا Core Developer و توسعه‌دهنده اپلیکیشن یا App Developer. هر کدوم از این دو دسته هدف و موضوع جداگانه‌ای رو بررسی می‌کنن که در ادامه باهاشون آشنا می‌شیم.

توسعه دهنده هسته یا Core Developer

توی فرایند توسعه هسته، برنامه نویس تلاش میکنه تا با استفاده از زبان‌های برنامه نویسی معمولا سطح میانی یا حتی پایین، توسعه خود ساختار بلاک‌چین رو به عنوان یک Blockchain Client پیش ببره. برنامه نویس‌های این دسته از زبان‌هایی مثل سی/سی‌پلاس‌پلاس، Golang و Rust در کنار دانش عمیق‌شون از سیستم عامل، فایل سیستم، شبکه، دیتابیس و… برای توسعه هسته بلاک‌چین استفاده می‌کنن. که من شخصا خودم سراغ این مرحله از کار نرفتم چرا که واقعا درک عمیقی از تمام مباحث بلاک‌چین، سیستم عامل و به صورت کلی علم کامپیوتر نیاز داره. یکی از بزرگ‌ترین توسعه دهندگانی که میشه در این زمینه هم اسمش رو بُرد و قطعا می‌شناسیدش ساتوشی ناکاماتو هستش که بنیانگذار بیت‌کوین به حساب می‌آد.

توسعه دهنده اپلیکیشن یا App Developer

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

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

البته بلاک‌چین‌های دیگری هم مثل Binance smart chain و Tron blockchain وجود دارن که البته خودشون هم براساس کلاینت اتریوم کار می‌کنند و ممکنه براساس ویژگی‌ها‌شون کاربردهای دیگری رو هم ارائه بدن اما در هر صورت اتریوم به نظر می‌رسه که برنامه نویس‌های بسیاری رو به سمت خودش کشونده و خیلی پرطرفداره.

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

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

آشنایی با بلاک‌چین

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

دونستن یک زبان برنامه‌نویسی به صورت عمیق

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

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

· Solidity· Python· Javascript· Java· C++· Go· 

البته لیست بالا ممکنه کمی دقیق نباشه چون آمار استفاده ازشون مدام تغییر میکنه اما زبان اصلی که برای توسعه بلاک‌چین وجود داره Solidity هستش. اما زبان‌هایی مثل پایتون، جاوا، Go و… با قابلیت‌ها و ابزارهایی که دارند هم برای توسعه بلاک‌چین مورد استفاده قرار می‌گیره و من به شخصه از پایتون برای اینکار استفاده می‌کنم.

اما در بین تمام این زبان‌ها همانطور که گفتم Solidity از اهمیت بالایی برخوردار هستش و برنامه‌نویس‌های اصلی بلاک‌چین از این زبان استفاده می‌کنند. حقوق سالیانه توسعه دهندگان این زبان در کشوری مانند آمریکا بین ۱۵۰ هزار تا ۲۵۰ هزار دلار هستش که رقم بسیار قابل توجهی بین دیگر حوزه های توسعه و برنامه نویسی به حساب می‌آد.

برنامه‌نویسی Smart contract یا قرارداد هوشمند و ماشین مجازی اتریوم

مهمترین بخش توسعه اپلیکیشن‌های بلاک‌چین برنامه‌نویسی Smart Contract به حساب میاد که ترجمه‌ش به فارسی میشه قرارداد هوشمند. در واقع بخش بزرگی از کاری که توسعه دهندگان Solidity‌ انجام میدن توسعه همین موضوعه. اما قرارداد هوشمند چیه؟ (اینجا کار کمی سخته اگه تونستم خوب بهتون این قسمت رو بگم واقعا جایزه دارم 🙂 )

قرارداد هوشمند برنامه‌ای هستش که براساس شبکه بلاک‌چین کار میکنه و هدف‌ش تشکیل یکسری قواعد بین افراد مختلف برای دریافت یک مقدار پول هستش. به صورت کلی‌تر شما می‌آید یکسری قواعد رو در نظر می‌گیرید که اگر اون قواعد اجرایی شدند افراد شریک در اون قرارداد می‌تونن سهم ببرند.

به زبان برنامه نویسی چیزی شبیه به یک دستور شرطی هستش که در صورت اتفاق افتادن اون شرط یا در واقع True شدنش برنامه شما کاری رو انجام میده و در صورتی که شرط انجام نشه اون قرارداد هوشمند کارش رو انجام نخواهد داد.

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

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

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

وظایف توسعه دهنده بلاک‌چین چیست؟

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

مورد اول: توسعه قرارداد هوشمند: مهمترین وظیفه‌ای که یک توسعه دهنده بلاک‌چین خواهد داشت توسعه قرارداد‌های هوشمندی خواهد بود که در ارتباط با آن‌ها توضیحاتی رو دادم. برای این موضوع بهترین روش استفاده از زبان برنامه‌نویسی Solidity خواهد بود.

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

مورد سوم: توسعه اپلیکیشن موبایل: برای افرادی که علاقه‌مند به توسعه اپلیکیشن‌های موبایلی هستند این مورد مطمئنا جذاب خواهد بود. توسعه اپلیکیشن مبتنی بر شبکه بلاک‌چین با به کار بردن زبان‌های برنامه نویسی مثل جاوا یا کاتلین می‌تونه یک وظیفه و در واقع چالش جدی و خیلی جذاب باشه.

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

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

دوره‌های آموزشی بسیار خوب در این زمینه

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

Solidity, Blockchain, and Smart Contract Course – Beginner to Expert Python Tutorial

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

Become a Blockchain Developer

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

Build Your First Blockchain App Using Ethereum Smart Contracts and Solidity

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

در پایان

بدون شک آینده بسیار هیجان برانگیزی در انتظار بشریت است و تمام این موارد نیز به لطف بلاک‌چین اتفاق خواهد افتاد. در جدیدترین تلاش‌هایی که البته تا حدی نیز عملی شده است ما مبحث Web 3 را داریم که ممکن است آینده را متحول کند و شکل تعامل ما با دنیای اینترنت را تغییر دهد. این تنها بخشی از ماجراست. فناوری‌هایی که براساس بلاک‌چین کار می‌‌کنند شکل تازه‌ای داشته و مطمئنا آینده پُر از آن‌ها خواهد بود.

الگوریتم جستجو خطی یا Linear Search در پایتون

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

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

جستجو خطی

بگذارید کارکرد این الگوریتم رو در یک مثال براتون توضیح بدم. تصور کنید که شما لیستی شامل اعداد یک تا ده رو دارید و می‌خواید عدد ۶ رو در این لیست پیدا کنید. زمانی که عملیات جستجو رو انجام می‌دید در الگوریتم جستجو خطی از ابتدا یا انتها ایندکس‌ها به صورت تک به تک بررسی می‌شن و در نهایت به ایندکس مربوط به عدد ۶ می‌رسه. پس در این جستجو ایندکس‌ها به صورت تک به تک بررسی می‌شن و در بسیاری از حالت‌ها این الگوریتم بسیار کُند عمل می‌کند.

الگوریتم جستجو خطی

برای پیاده‌سازی این حالت در پایتون ما به یک لیست نیاز داریم (یا هر دیتا استراکچر دیگه‌ای که iterable باشه) و یک مقدار هدف یا چیزی که دنبال‌ش هستیم.

در مرحله بعدی باید تک تک آیتم‌های لیست رو با مقدار هدف‌مون مقایسه بکنیم اگه که برابر بود در نهایت می‌تونیم اندیس اون مقدار رو برگردونیم و اگر نتونستیم مقدار None رو برخواهیم گردوند. به کد نمونه زیر دقت کنید.

def linear_search(list, target):
    '''
    Return list index position if target found, else return None!
    '''
    
    for i in range(0, len(list)):
        if list[i] == target:
            return i
    return None

def varify(index):
    if index is not None:
        print('We found index at: ', index)
    else:
        print('We cant find the index')


numbers = [x for x in range(0,200,2)]

search = linear_search(numbers, 100)

varify(search)

دوره آموزش پیشرفته پایتون

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

آموزش پیشرفته پایتون - ارسطو عباسی

به همین خاطر گفتم که خب چه بهتر که نیست 🙂 من درستش کنم. و درستش کردم. دوره‌ای با اسم دوره آموزش پیشرفته پایتون.

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

به همین دلیل من تصمیم گرفتم تا شکل ارائه دوره رو یه ذره تغییر بدم. برای آشنایی با این ساختار ادامه این مطلب رو مطالعه کنید.

ساختار دوره

ساختار دوره از پنج سرفصل اصلی با عناوین زیر و یک سرفصل متغیر با عنوان «آموزش موضوعات پیشرفته‌تر» تشکیل شده.

  • آموزش برنامه نویسی شئ‌گرا
  • کار با توابع و Iterableها
  • آموزش SQLنویسی در پایتون
  • آموزش وب اسکرپینگ در پایتون
  • آموزش توسعه سمت سرور با فلسک
  • سرفصل متغیر: آموزش موضوعات پیشرفته‌تر

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

توی سرفصل ششم ما موضوعات متفرقه مثل برنامه نویسی مالتی تردینگ، Regex، تستینگ، پردازش تصویر، کار با فایل‌های zip و csv و… رو آموزش خواهیم داد و این بخش هم به صورت روزانه و هفتگی بروزرسانی میشه. در نتیجه این دوره فکر نکنم به این زودیا تموم بشه و باید مدام منتظر بروزرسانی‌های جدیدی ازش باشید.

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

توی صفحه «درباره من» می‌تونید بیشتر در رابطه با من به عنوان مدرس این دوره آشنا بشید

تجربه ۵ سال تولید محتوا

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

نوشته ارسطو عباسی

مهمترین دلیل‌م برای اینکار این بود که خب ترم دوم دانشگاه بودم و خونه جدیدی رو اجاره کرده بودم و به پول نیاز داشتم تا بتونم اجاره خونه بدم و حداقل از گشنگی نمی‌رم. 🙂 اما دومین نکته مهم در این ماجرا این بود که قبل از اون موقع من چند سالی بود مشغول داستان نویسی بودم و وضعیت نگارشم خیلی خوب بود. یه سری نکات دیگه هم از اهمیت بالایی برخوردار بودن که من نسبت بهشون اطلاع خیلی زیادی نداشتم. مثلا اینکه اگه میخوام کار تولید محتوا رو انجام بدم از چه منابعی استفاده کنم و اینکه آیا ۱۰۰ زدن درس زبان انگلیسی عمومی و تخصصی توی کنکور سال ۹۴ برای ترجمه مقالات کافی بود یا نه؟ هر چی ماجرا جلوتر می‌رفت جواب دادن این سوالات برام خیلی راحت‌تر می‌شد.

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

تجربه پریدن توی آب عمیق

ارسطو عباسی در حال نوشتن است...

نمیدونم این حرف کیه ولی میگه که یک روش خوب برای یادگیری شنا اینه که خودت رو بدون ترس پرت کنی توی آب پر عمق، یا به خوبی می تونی دست و پا بزنی و خودت رو به کناره برسونی یا اتفاقاتی می افته که باعث میشه دیگه هیچوقت به شنا فکر نکنی 😉

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

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

انگلیسی

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

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

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

توی این مورد هم بی گُدار به آب زدم و از نتیجه راضی‌ام.

ترکیب کردن

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

سئو

اوایل تنها کاری که می‌کردم این بود که با در نظر گرفتن یک خط داستانی پیش می‌رفتم و چیز زیادی از دنیای سئو نمی دونستم. بعدا فهمیدم که حتی اگه محتوای زیاد خوبی هم نباشه باز هم شرکت‌ها به تولید کننده محتوا نیاز دارن اما کسی که سئو بلد باشه و بتونه موتورهای جستجوگر رو در اختیار بگیره. خیلی روی این موضوع اعصابم خورد شد. یعنی چی آخه؟ چرا بجای محتوای آموزشی و بدرد بخور صرفا باید به این فکر کنیم که یه کلمه کلیدی چند بار تکرار میشه و اراجیفی از این دست. خب نمی‌تونستم با این اتفاق بجنگم چون نون و آبم در گرو این بحث بود و ناچارا منم مجبور شدم فیتیله خلاقیت رو بکشونم پایین و بیشتر به این فکر کنم که چطوری یه مطلب رو بیارم صفحه اول گوگل که البته توی این کارم حسابی حرفه‌ای شدم. Google Search Console رو کشف کردم و کم کم داشتم یاد می‌گرفتم که گوگل چطوری کار میکنه و با چه محتوایی بیشتر حال میکنه.

آموزشی

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

صوت و تصویر

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

برای افرادی که دوست دارند وارد این حوزه شوند

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

نکاتی برای نوشتن خوب یک مقاله

محاوره‌ای یا نوشتاری – مسئله این است

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

تایپوگرافی درست و حسابی – خیلی مهمه

راستش‌ رو بخواید من خیلی روی این موضوع حساسم، نمی‌دونم چرا ولی احساس می‌کنم خیلی دوست دارم مطلبی رو بخونم یا بنویسم که از نظر ساختاری یه سری المان درست و حسابی برای جستجو کردن درِش رو داشته باشه. مثلا چی؟ مثلا اینکه شما توی مقاله‌تون سرفصل‌ها یا عنوان‌بندی رو درست انجام بدید، مثلا اگه مقاله از ده بخش درست میشه، این بخش ها معلوم باشند نه اینکه صرفا بزاری همینجوری محتوا بره و بیاد. برای اینکار می‌توانید عنوان اصلی مقاله‌تون رو به صورت عنوان در سطح یک یا توی اچ‌تی‌ام‌ال همون h1 قرار بدید و برای بقیه سرفصل‌ها از عنوان‌هایی با درجه بالاتر مثلا h3 یا h4 استفاده کنید. اگه توی یک بخش چندین بخش دیگه رو داشتید باز هم می‌تونید عنوان‌ها رو با درجه بالاتر تا h5 و h6 داشته باشید. به همین خوبی. از خط افقی هم استفاده کنید، بعد از هر عنوان یه خط زیرش بکشید و بعدش متن اصلی در رابطه با اون عنوان رو بنویسید، این خیلی به کاربر یا خواننده‌تون کمک می‌کنه تا بتونه بهتر مطلب رو بخونه و سریع‌تر به اون بخشی که می‌خواد دسترسی داشته باشه.

رعایت علائم نگارشی – اگه خیلی باحالید

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

پاراگراف‌بندی – چرا که نه؟

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

نیم فاصله – اوه پسر دوباره شروع شد!

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

از ایموجی استفاده کنید – اوه پسر شوخی‌ت گرفته؟ 

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

تصویر می‌تونه به محتواتون مفهومی فراتر بده – شک ندارم

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

استفاده از یک لایسنس – واو = WOW

یکی از موضوعاتی که وقتی وبلاگ‌نویسی رو شروع کردم همیشه توی ذهنم بود این بود که خب من می‌خوام یه سری مطلب بنویسم (تولید کنم) و بعد منتشرشون کنم (عرضه کنم) خب این مطالب من باید مطابق با یک سری قواعد منتشر بشه! این بود که به فکرم رسید از یک لایسنس استفاده کنم. و چی بهتر از Creative Commons اگه به پایین صفحه مراجعه کنید می‌بینید که نوع لایسنس هم نوشته شده. البته شما می‌تونید برای مطالب مختلفتون از لایسنس‌های مختلفی استفاده کنید که این کار کاملا شخصی و بسته به خودتونه.

Strong و Emphasized  و Underline رو فراموش نکنید – تموم نشد؟! 

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

منابع رو بنویسید – معمولا نمی‌کنیم چون متقلبیم؟!

می‌تونم راجع به بخش دوم عنوان بالا یه ساعت حرف بزنم … ولی بیخیال! باور کنید اگه توی آخر نوشته‌تون منابع رو بنویسید خیلی به محتواتون ارزش می‌ذارید. این کار خیلی خوبیه و هیچوقت نباید ازش صرفنظر کنید. خیلی ها از این کار می‌ترسند چون فکر می‌کنن خیلی جذاب میشن اگه این کار رو نکنن ولی من بهت می‌گم یه ابلهِ متقلب.

خلاصه ساده

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

منبع تصاویر: تصویر ۱تصویر ۲