Software was invented to be "soft." It was intended to be a way to easily change the behavior of machines. If we'd wanted to the behavior of machines to be hard to change, we would have called it hardware.
Clean Architecture - A Craftsman's Guid to Software Structure and Design
تو همون صفحات اول کتاب Clean Architecture با همچین جمله ای مواجه میشین، کتابی که حاصل تقریبا 50 سال تجربه برنامه نویسی یک مهندس نرم افزار عالی رتبه هست.
باید بگم که همین جمله رو اگه بسط بدیم میشه چند کتاب دیگه ازش درآورد.
اصلا این جمله یعنی چی؟ چرا یک مهندس رده بالا مثل Robert C Martin یا همون عمو باب خودمون کتابشو با همچین موضوعی شروع کرده؟
به عنوان یک برنامه نویس باید بگم که تو چن سال تجربه ای که دارم تا حالا ندیدم که برنامه ای نوشته بشه که بعدش هیچ تغییری نکنه یا اینکه بعدش هیچ نیازمندی بهش اضافه نشه.
اساسا نرم افزار نوشته میشه که تغییر کنه، پس بنظرم چه به عنوان برنامه نویس، چه به عنوان Cto ، چه به عنوان Stakeholder، چه به عنوان سرمایه گذار سعی بر تولید برنامه ای داشته باشیم که علاوه بر اینکه کار کنه، بعدا قابل توسعه باشه و بشه نیازمندی های جدید رو هم سریع بهش اضافه کرد.
چون اگه این اتفاق نیفته، اولین مشکلاتی که پیش میاد اینه که خود برنامه نویس های اون پروژه دیگه از کار کردن روی اون پروژه خسته میشن، چونکه برای ی تغییر کوچک باید کلی کار انجام بدن و سرعت اضافه کردن نیازمندی های جدید خیلی پایین میاد و کارفرما همیشه از پایین بودن سرعت کار گله داره و کدها اینقد کثیفه که دیگه هیچ برنامه نویس دیگه ای هم حاضر نیس رو پروژه شما کار کنه و در نهایت دودش تو چشم خودتون میره.
پس همش فقط به فکر کار کردن برنامه به هر قیمتی نباشیم، وظیفه ماست که از لحاظ تکنیکال طراحی درستی انجام بدیم.
برای اینکه بتونید طراحی درست انجام بدین باید نسبت به یک سری مسائل درک درستی داشته باشید.
از کارهای مهمی که یک برنامه نویس حتما باید انجام بده، اینه که کتاب بخونه، بدون خوندن کتاب نمی تونید نسبت به خیلی از مسائل درک درستی داشته باشید و قطعا مهندس خوبی هم نخواهید شد و در سطح همون کدنویس باقی می مونید.
در لینک زیر، لیستی از کتاب هایی که میتونه به یک مهندس نرم افزار تبدیلتون کنه رو قرار دادم. با خوندن این کتاب ها میتونید هزاران پله رشد کنید.