توسعه وب امروزه کاملا با چیزی که در سالهای اخیر با آن روبرو بودیم فرق میکند؛ چیزهای بسیاری بوجود آمدهاند که فرد با درگیر کردن خود با آنها بسیار به آسانی ممکن است سردرگم شود. به همین دلیل در این مطلب قصد داریم جدای از متن ساده، از یک الگو بصری نیز پیروی کنیم که با مشاهده آن میتوانید، راههایی که برای رسیدن به یک نقش منحصر به فرد نیاز به دنبال شدن دارند را درک و پیدا کنید.
در زیر میتوانید تصویری که مربوط به وظایف و کارهای یک توسعهدهنده بکاند در دنیای وب مدرن میشود را میتوانید مشاهده کنید. در کنار این تصویر من قصد دارم که مرحله به مرحله هر قسمت را تشریح کنم:
نکته: ما در این نقشه در رابطه با داشتن اطلاعات کلی مربوط به HTML/CSS/JS ننوشتهایم. با این حال پیشنهاد میشود که درک سطحی از این موارد را داشته باشید.
قدم ۱ - یک زبان را یاد بگیرید
وقتی تصمیم به انتخاب یک زبان میگیرید، گزینههای بسیار زیادی برای شما پیدا خواهد شد. من این موارد را به چند دستهبندی تقسیم کردهام که تصمیمگیری برای شما آسانتر شود. برای افراد تازهکار که به تازگی توسعه بکاند را شروع کردهاند، به شما زبانهای اسکریپتی را پیشنهاد میدهم. آنها متقاضی بسیار بالایی دارند و میتوانند در رشد سریع شما کمک بکنند. اگر با توسعه فرانتاند آشنایی داشته باشید پس مطمئنا با نودجیاس نیز کار کردهاید، میتوانید در این زمینه خودتان را ارتقا دهید. این تکنولوژی بازار کار خوبی را نیز به شما ارائه میدهد.
اگر با دنیای توسعه بکاند قبلا آشنایی داشتهاید و یک زبان اسکریپتی را انتخاب نمودهاید به شما پیشنهاد میکنم که یک بار دیگر زبان اسکریپتی دیگری را انتخاب نکنید و به سراغ قسمتهای دیگر بروید. برای مثال اگر قبلا با PHP و یا NodeJS کار کردهاید سعی نکنید به سراغ Python و یا Ruby بروید، بجای آن Erlang و یا Golang را انتخاب و امتحان کنید. بدین شکل میتوانید ذهنتان را برای دیدگاههای جدیدتر باز بگذارید.
قدم ۲ - با چیزی که یاد گرفتهاید، تمرین کنید
برای یادگیری هیچ راهی بهتر از تمرین کردن وجود ندارد. زمانی که زبان مورد نظرتان را انتخاب کردید و به درک پایهای از مفاهیم آن رسیدید، از آنها استفاده کنید. یک اپلیکیشن کوچک را ایجاد کنید. برای مثال ایدههایی برای شروع وجود دارد که من چند مورد از آنها را در پایین لیست کردهام:
- دستوراتی که در Bash مشاهده میکنید را سعی کنید در محیط برنامهنویسی پیادهسازی نمایید. برای مثال کارایی دستور ls را در نظر بگیرید.
- اطلاعاتی را از پستهای reddit خوانده و در یک پوشه ذخیره کنید، این کار از طریق JSON انجام میشود.
- به کارهایی فکر کنید که هر روز انجام میدهید و سعی در خودکارسازی آنها بکنید.
- و...
قدم ۳- کار با یک پکیج منیجر را یاد بگیرید
بعد از اینکه کار با یک زبان را یاد گرفتید و توانستید تمریناتی را با آن حل کنید، بهتر است کار با یک پکیج منیجر که مرتبط به زبانی که انتخاب کردهاید باشد را یاد بگیرید. پکیج منیجرها به شما کمک میکنند که کتابخانههای خارجی را در اپلیکیشنتان استفاده کنید و حتی آنها را با دیگران به اشتراک بگذارید.
اگر PHP را انتخاب کردهاید باید Composer را یاد بگیرید، برای نودجیاس NPM و Yarn در دسترس است، پایتون Pip را دارد و Ruby نیز از RubyGems استفاده میکند. بعد از اینکه براساس گزینههای موجود انتخاب کردید، به سراغ یاد گرفتن و استفاده از آن باشید.
قدم ۴ - استانداردها و بهترین رویکردها
هر زبان برنامهنویسی استانداردها و رویکردهای منحصر به فرد خود برای انجام کارهای مختلف را دارد. براساس زبانی که انتخاب کردهاید یک مورد را انتخاب نمایید. برای مثال PHP استانداردهای PHP-FIG و PSR را دارد. برای نودجیاس نیز به همین صورت، تنها کافی است در مستندات آنها جستجو کنید.
قدم ۵ - امنیت
مطمئن شوید که تمام رویکردهای مربوط به امنیت یک زبان را مطالعه کنید. تکنولوژی امنیتی OWASP را مطالعه کنید و مشکلات و راهحلها برای رفع آنها در زبانی که مورد استفاده قرار میدهید را درک کنید.
قدم ۶ - تمرین
تا به اینجای کار شما مقدمات زبان را میدانید، میتوانید با استانداردها و بهترین رویکردها کار کنید، امنیت و شیوه استفاده از پکیج منیجر را فرا گرفتهاید. حال یک پکیج را که از استانداردها و بهترین رویکردها پیروی میکند را ایجاد کنید و آن را با دیگران به اشتراک بگذارید.
بعد از اینکه چنین کارهایی را انجام دادید، به دنبال چند پروژه در گیتهاب باشید و پروژههایی را باز کرده و کارهای زیر را با آنها انجام دهید:
- با استفاده از بهترین رویکردهایی که یاد گرفتهاید کدها را بازسازی کنید.
- مشکلات باز شده را مشاهده کرده و به دنبال راهحل برای آنها باشید.
- کارایی بیشتری را به برنامه اضافه نمایید.
قدم ۷ - تست کردن یا Testing را یاد بگیرید
نوعهای مختلفی از تستینگ وجود دارد. هدف این نوعهای مختلف را بدست بیاورید و آنها را درک کنید. اما برای حال یاد بگیرید که نوشتن تستهای واحد و ادغام سازی آنها با اپلیکیشنتان به چه صورت است. همچنین اصطلاحات مربوط به حوضه تستینگ را درک کنید. برای مثال اصطلاحات mocks، stubs و... .
قدم ۸ - تمرین
برای قدمهای قبلی که با هدف تمرین و ایجاد پروژهها پیش رفتیم، سعی کنید کاربردیتر عمل نمایید. برای مثال سعی کنید برای آنها تستهای واحد بنویسید.
قدم ۹ - کار با بانکهای اطلاعاتی رابطهای را یاد بگیرید
شیوه قرار دادن دادههایتان در یک بانک اطلاعاتی رابطهای را یاد بگیرید. قبل از اینکه ابزاری را انتخاب کنید، اصطلاحات مربوط به بانک اطلاعاتی را یاد بگیرید، مواردی مانند کلید اصلی، نرمال سازی و... .
گزینههای مختلفی برای این مسئله وجود دارد. البته اگر یک مورد از آنها را یاد بگیرید، کار با بقیه موارد برایتان آسانتر خواهد بود. MySQL و PostgreSQL دو موردی هستند که توصیه میشود با آنها کار کنید.
قدم ۱۰ - تمرین
حال زمان این است که تا اینجای کار هر چیزی که یاد گرفتهاید را مورد استفاده قرار دهید.
یک اپلیکیشن ساده را با تواناییهایی که تا به حال یاد گرفتهاید ایجاد نمایید. کافیست یک ایده را در نظر بگیرید، برای مثال یک اپلیکیشن وبلاگنویسی را ایجاد کنید و ویژگیهای زیر را در آن پیادهسازی نمایید:
- حسابهای کاربری - ثبتنام و ورود
- کاربران ثبتنام شده میتوانند پستهای وبلاگی را ایجاد کنند
- قابلیت مشاهده پستها
- قابلیت حذف کردن پستها
- هر فردی بتواند پستهای مربوط به وبلاگ خود را مشاهده کند
- تستهای واحد و ادغامسازی را برای اپلیکیشنتان ایجاد کنید
- باید برای کوئریها، ایندکسهایی را اعمال کنید. کوئریها را برای اطمینان از استفاده ایندکسها آنالیز کنید.
قدم ۱۱ - یک فریمورک را یاد بگیرید
براساس پروژه و زبانی که انتخاب کردهاید، ممکن است به یک چهارچوب نیاز داشته و یا نداشته باشید. هر زبان برای خود گزینههای متفاوتی را ارائه میدهد. پس بهتر است سراغ زبان رفته و گزینههای موجود برای آن را مشاهده کنید.
اگر PHP را انتخاب نمایید، به شما پیشنهاد میکنم که از Laravel یا Symfony استفاده کنید و یا اگر به یک میکرو-فریمورک نیاز دارید Slim و Lumen در اختیار شما خواهد بود. برای دیگر زبانها نیز به همین صورت انتخابهای مختلفی وجود دارد.
قدم ۱۲ - تمرین
برای این قسمت از تمرینات، اپلیکیشنی که در قدم دهم ایجاد کردهاید را با استفاده از یک فریمورک پیادهسازی نمایید. همچنین مطمئن شوید که همه چیز از جمله تستها را به درستی به پروژه جدید منتقل کردهاید.
قدم ۱۳ - یک بانک اطلاعاتی NoSQL را یاد بگیرید
ابتدای کار چیستی، تفاوت با بانکهای اطلاعاتی رابطهای و مواقع نیازمندی آنها را درک کنید. گزینههای متفاوتی وجود دارد که میتوانید از آنها استفاده کنید، اما قبل از آن بهتر است که ویژگیها و تفاوتهای آنها را بررسی نمایید. برخی از مواردی که بسیار استفاده میشود MongoDB، Cassandra و RethinkDB نام دارد. اگر قصد انتخاب یکی از این موارد را دارید من به شما MongoDB را پیشنهاد میدهم.
قدم ۱۴ - کشینگ
پیادهسازی حالت کشینگ در اپلیکیشنتان را یاد بگیرید. کار با Redis و Memcached را یاد گرفته و آنها را در اپلیکیشنی که در قدم ۱۲ ایجاد کردهاید یاد بگیرید.
قدم ۱۵ - RESTful API ایجاد کنید
REST را درک کنید و شیوه ساختن APIهای RESTful را یاد بگیرید. همچنین مطمئن شوید با فردی که ادعا میکند REST تنها برای APIهای HTTP استفاده میشود، میتوانید مبارزه کنید :).
قدم ۱۶ - روشهای احرازهویت مختلف را درک کنید
متدولوژیهای مختلف مربوط به احرازهویت را یاد بگیرید. شما باید بدانید که آنها چه هستند، تفاوتهایشان را متوجه شوید و بدانید که چه زمانی باید از کدام مورد استفاده نمایید:
- OAuth — Open Authentication
- Basic Authentication
- Token Authentication
- JWT — JSON Web Tokens
- OpenID
قدم ۱۷ - واسط پیام
کار با واسطهای پیام را درک کرده و دلیل استفاده از آنها را متوجه شوید. گزینههای مختلفی برای این مورد وجود دارد اما RabbitMQ و Kafka از گزینههای مناسب است. اگر قصد یادگیری این قسمت را دارید بهتر است که کار با RabbitMQ را درک کنید.
قدم ۱۸ - موتورهای جستجو
همانطور که اپلیکیشن توسعه پیدا میکند، کوئریهای ساده مربوط به بانک اطلاعاتی رابطهای یا NoSQLتان، کارایی زیادی برایتان نخواهد داشت. بنابراین باید برای در اختیار داشتن دادههای درستتر و مرتبسازی آنها از موتورهای جستجویی مانند elastic استفاده بکنید. گزینههای دیگری نیز وجود دارد که هر کدام تفاوتهای مربوط به خودشان را دارند.
قدم ۱۹ - شیوه استفاده از داکر را یاد بگیرید
داکر میتواند مسیر توسعه شما را بسیار هموار کند، داکر میتواند با جایگزین ساختن محیط تولید، سیستم عامل شما را تمیز نگه دارد و قابلیتهای شما برای کدنویسی، تست و پیادهسازی بیشتر میکند.
قدم ۲۰ - دانش وب سرورها را پیدا کنید
اگر تا به اینجای کار آمدهاید بنابراین باید دانش کلی از وب سرورها داشته باشید. این قدم روی پیدا کردن تفاوتهای مربوط به وب سرورهای مختلف تمرکز دارد، شما باید تفاوتها و محدودیتهای هر کدام را درک کنید.
قدم ۲۱ - استفاده از Web Socketها را یاد بگیرید
در حالی که این مورد اجباری نیست، اما یادگیری Web Socketها میتواند دانش مفیدی برای شما باشد. یاد بگیرید که به چه صورت اپلیکیشنهای بلادرنگ را با استفاده از Web Socketها بنویسید. میتوانید از این مورد در اپلیکیشن وبلاگتان استفاده کنید و بروزرسانیهای بلادرنگ را بوجود بیاورید.
قدم ۲۲ - GraphQL را یاد بگیرید
شیوه ساخت APIها را با استفاده از GraphQL یاد بگیرید. تفاوت آن را با REST درک کنید و دلیل اینکه به آن میگویند REST 2.0 را پیدا نمایید.
قدم ۲۳ - نگاهی به بانکهای اطلاعاتی Graph بیاندازید
مدلهای Graph راه بسیار منعطفی برای مدیریت ارتباطات در دادهها را فراهم میکنند. همچنین این بانکهای اطلاعاتی راه سریع و کارآمدی را برای ذخیرهسازی، برگشت و کوئریسازی دادهها را ارائه میدهند. شیوه استفاده از Neo4j و OrientDB را یاد بگیرید.
قدم ۲۴ - به کاوش ادامه دهید
وقتی شروع به یادگیری و تمرین کردید با مواردی همراه خواهید شد که هیچوقت در چنین roadmapهایی مشاهده نخواهید کرد. سعی کنید ذهنتان را برای یادگیری چیزهای جدید بازنگهدارید. کلید اصلی فراگیری تمرین کردن و تمرین کردن است.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید