درباره امین سرابی#

من امین سرابی، برنامه نویس کامپیوتر متولد سال 1380 و ساکن ایران هستم.

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

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

در ادامه چندمورد از شایستگیهای حرفه‌ای خودم رو ذکر میکنم:

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

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

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

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

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

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

زبانهای برنامه نویسی:#

در طول این هشت سال و در طول کار روی پروژه‌های مختلف به زبانهای برنامه نویسی زیر تسلط پیدا کردم:
Java (اولین زبانی که یاد گرفتم)
JavaScript
Kotlin
C++
Python
Php
Rust
همچنین به html و css هم مسلط هستم.

پلتفرمها و حوزه‌های کاری#

برنامه نویسی اندروید
توسعه بکند nodejs
مدیریت سرورهای لینوکسی
توسعه وب (برنامه نویسی وبسایت)
طراحی مدلهای هوش مصنوعی (pytorch)
الکترونیک، رباتیک و برنامه نویسی میکروکنترلرها

برخی از نمونه کارهای من:#

  1. اپلیکیشن کنکوری تستامین: در زمانی که کنکوری بودم برای برنامه ریزی و مدیریت مطالعه کنکور خودم اپلیکیشن تستامین رو طراحی کردم؛ که یک پاسخبرگ دیجیتال با زمان‌سنج خودکار بود و آمارهای مفیدی مثل سرعت حل تست در مباحث مختلف، میزان تسلطم روی بخشهای مختلف کتاب درسی، سوالاتی که وقت زیادی ازم گرفته بودن و… رو در اختیارم میگذاشت. این نرم‌افزار رو برای استفاده دیگران هم منتشر کردم. اپلیکیشن تستامین کم‌کم تبدیل به یک پروژه جدی شد و طرفداران خودش رو پیدا کرد. برای مدتی توسعه و پشتیبانی از این نرم‌افزار مسئله اول زندگیم شده بود و بارها بخشهای مختلف تستامین رو از اول نوشتم و چیزهای خیلی زیادی باهاش یاد گرفتم. اپلیکیشن تستامین به دلایل مختلف در اواخر سال 1404 به طور کلی از مارکتهای اندرویدی حذف شد و نسخه جدید اون رو دوباره از اول توسعه دادم و منتشر کردم. (تستامینی که شما الان در بازار/مایکت مشاهده میکنید تعداد نظرات و تعداد دانلودهاش فقط از 1405 به بعد رو شامل میشه)

  2. پیامرسان ریچت: یکی از کارهای قابل توجه من در تستامین، راه‌اندازی یک پیامرسان کامل بود که بعدا به Reychat شناخته شد که برای ارتباط و رقابت درسی بین کنکوریها درنظر گرفته شده بود. من این سیستم پیامرسان رو به تنهایی و بدون استفاده از سرویسهای آماده ایجاد کرده بودم. پیامرسان من از گفتگوی دونفره، کانال و همچنین گروه‌های با هزاران عضو پشتیبانی میکرد و امکاناتی مثل ارسال عکس و پیام صوتی، ویرایش و حذف پیامها، نمایش کاربر درحال تایپ، گزارش تحویل به دستگاه و گزارش خوانده شدن پیام، سابقه چت آفلاین، استفاده همزمان و لاگین از چندین دستگاه، چت رمزنگاری شده و تماس تصویری رو ارائه می‌کرد. بکند و فرانتند پیامرسان رو خودم نوشته بودم؛ بکند پیامرسان من روی یک ماشین مجازی با یک هسته سی‌پی‌یو و دو گیگ رم، از صدها پیام برثانیه و ذخیره دائمی پیامها و فایلهای کاربران تستامین پشتیبانی می‌کرد. همچنین به علت استفاده از CustomViewها در سمت کلاینت اندروید، صفحات پیامرسان من به سرعت رندر میشد و حتی روی دستگاه‌های ضعیف سرعت ۶۰ فریم برثانیه رو حفظ می‌کرد.

در ادامه یک سابقه کوچک از زندگی خودم رو آوردم:

دوران تحصیلات ابتدایی و متوسطه#

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

اولین روزهای کدنویسی#

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

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

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

آشنایی با یادگیری ماشین و هوش مصنوعی#

شاید هرکسی که مدتی با کامپیوترها سر و کله میزنه؛ کم‌کم به این فکر میفته که زبان آدمیزاد یادشون بده. من هم مدتی بدون اینکه درباره “هوش مصنوعی” شنیده باشم؛ درتلاش بودم که به کامپیوتر یاد بدم صحبت کنه و جملات معنی دار و درست بسازه. (میوه‌ها خوردنی هستند. سیب میوه است. پس سیب خوردنی است!) درواقع بدون اینکه متوجه باشم؛ درحال کار روی NLP بودم. البته نیاز به گفتن نداره که موفق نشدم زبان آدمیزاد به کامپیوتر یاد بدم؛ اما این تلاش باعث شد خودم زبان کامپیوتر رو بهتر یاد بگیرم.

یکی از پروژه‌های جالب من در اون زمان، یک کد “الگویاب” بود که بعدا تبدیلش کردم به یک اپلیکیشن اندرویدی برای تشخیص و شمارش حرکات ورزشی از روی داده‌های سنسور ژیروسکوپ گوشی.

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

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

شرایط همکاری با من#

درصورت تمایل به همکاری با من به موارد زیر حتما توجه کنید:

  1. با وجود اینکه به شدت علاقه‌مند به تجربه فضای کار تیمی و تعامل با دیگر همکارانم هستم؛ تا به الان فرصت این تجربه پیش نیومده و بنابراین تجربه کار تیمی و گروهی ندارم. (محل زندگی من یک شهر کوچک هست)
  2. پروژه‌های ساده و کارهای متداول و تکراری مثل “ساخت یک سایت فروشگاهی” جذابیت چندانی برای من ندارن. در عوض هرچقدر پروژه سخت‌تر و چالش برانگیزتر باشه من علاقه بیشتری به اون نشون میدم.
  3. نمیتونم با کارفرماهایی که دیدگاه کاسب و بازاری دارن کنار بیام. وصله پینه کردن نرم‌افزار و سر هم کردن پروژه‌ها با حداقل زمان و هزینه، مدل کاری من نیست.
  4. به خاطر مورد بالا و برخی ملاحظات دیگه من به هیچ وجه قرارداد نمیبندم و کار با من فقط به صورت غیررسمی ممکن خواهد بود.

ارتباط با من#

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

عنوانلینک
پیام مستقیم به منhttps://aminsarabi.ir/posts/contact
پیامرسان تلگرامhttps://t.me/amins7091
ایمیل شخصیamin7091sarabi@gmail.com

نمونه کدهای من#

درصورتی که به دیدن مدل برنامه‌نویسی من علاقه دارید میتونید به گیتهابم مراجعه کنید: گیتهاب امین سرابی

درباره این وبلاگ#

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