بعضی وقتا زمانی که در یک جای تاریک هستید فکر میکنید دفن شدهاید اما در واقع شما کاشته شدهاید
چگونه یک CTO بشویم
قدم گذاشتن توی مسیر تبدیل شدن به یک CTO نیازمند تشخیص ارزشهای مختلف فناوریهاست. اگر هنوز به این فکر هستید که یک پست وبلاگی در مورد نقاط ضعف PHP یا هر فناوری دیگری بنویسید، این یک نشانهای است که شاید آماده ورود به این مسیر نباشید. رهبری واقعی به معنیه بهرهبرداری از نقاط قوت هر ابزار است، نه فقط برجسته کردن نقاط ضعف اون.
تبدیل شدن به یک CTO به این معنی نیست که بهترین کد نویس یا هکرترین هکر موجود در جهان باشید.
در واقع، نوشتن کد احتمالا آخرین چیزی است که یک CTO شاید انجام بدهد. به جای این، CTO شخصی است که توانمندی تجزیه و تحلیل فناوریها را دارد و میتواند آنها را به اعضای تیم انتقال دهد و آنها را در انجام پروژه هدایت کند. CTO از تیم فناوری در برابر هرج و مرجهای خارجی محافظت می کند و زمانی که همه چیز جهت میگیرد، در مقابل خطاها و مشکلات فناوری مسئولیت قبول میکند.
شاید بشه به راحتی و تصادفی با استخدام توی یک شرکت کوچیک و بدون برنامه نویس، CTO شد، مثل حالتهایی که در اکثر استارتاپها دیده میشه. اما در حالی که عنوان ممکن است «مدیر ارشد فناوری» باشد، احتمالاً فقط یک مخفف شیک برای «برنامه نویس پرکار» هست. ولی این مسئله میتونه خودش باعث بشه که نیاز پیدا کنیم که چگونه باید مسیر CTO شدن رو طی کنیم.
من به شخصه پذیرشی از تیمهایی که همهی داراییهای استراتژیک فناوری رو از تیمهای دیگه کپی گرفتهاند، ندارم. با ارجاع به Camille Fournier که در "در مورد نقش CTO" توضیح می دهد، یک CTO باید اطمینان پیدا کند که تیم فناوری بدون ورودی یا ایدههای نوآورانهی خودش چیزی را اجرا نمی کند. این موضوع به رهبری CTO بر میگردد، شخص CTO باید تجربه و تخصص خودش و تیمش رو خوب بشناسه و اونها رو ارتقاء بدهد.
یه موضوعی که خیلی سخته و من عمیقا حسش کردم 😓 موضوع ایجاد تعادل بین فرهنگ نوآوری و هم سویی تصمیم گیریهای این فرهنگ و انتخابهاش با استراتژیهای کسب و کاره.
این جوری که استراتژیستهای لایهی کسب و کار چیزای مختلفی میخوان (( اونا هم مقصر نیستند ولی خب مجبورند دیگه 🥴)). اینجوریه که برای پول گرفتن از آدما باید بازیشون بدی و پیچیدگیها و بیچارگیهای تیم توسعه و فناوری و بقیه از همینجا شروع میشه. البته این بیشتر توی کسبهایی که وابستگی ندارند صدق میکنه! 🤠
اگر شرکتی به یک CTO یا مدیر ارشد فنی نیاز داشته باشه، اون شخص به تعریف چشم انداز تأثیر بلندمدت بر فناوری میپردازه. امروزه اینجوری نیست که بیشتر کسب و کارهای از فناوری استفاده کنند، بلکه حتی بیشتر توسط فناوری تعریف می شوند. به طور خلاصه، نقش در حال تحول CTO نشان دهنده اهمیت فناوری در تعریف و هدایت موفقیت کسب و کارهای مدرن هست. CTO نه تنها چشم انداز فناوری را تعیین می کند، بلکه تضمین می کند که شرکت به طور مداوم نوآوری دارد و از فناوری به عنوان ستون اساسی استراتژی تجاری و مزیت رقابتی خود استفاده می کند.
مثلا یک استارتاپ رو در نظر بگیرید که هدفش ارائهی سرویسهای نوآورانه در حوزه مالی یا fintech هست، حالا نقش CTO خیلی حساس میشه.
در این فضا یه CTO نمیتونه کنار بکشه و بذاره که تیم سر خود، تکنولوژیای را انتخاب و اجرا کنند،😤 دلیلش هم اینه که آخرش CTO مسئولیت پاسخ گویی را دارد.😑
یکی از چالشهای مشترک CTOها، مبارزه بر سر فناوری و توسعهی آن هست!
مثلاً) قانع کردن هیت مدیره شرکت برای تستهای مختلف! ((غالباً این افراد فرآیندهای فروش را خیلی اهمیت میدهند و CTOها باید بتونند موضوعات فناوری را خوب به دیگر قسمتهای شرکت ارائه دهند و منابع برای فناوری جذب کنند.))
یک CTO واقعی باید قدرت تصمیمگیری فنی و اجرای اون رو بدون نیاز به تأیید یا اجماع از بخشهای غیرفنی سازمان داشته باشد، و اینجا هم یک نقطه تمایز یک CTO و مهندس ارشد هست.👊
در کل اقتدار و نقش CTO در سازمان یا شرکت بسیار پر اهمیت هست.
مدیر ارشد فناوری یا CTO یک شغل یا یک موقعیت در لایهی استراتژی کسب و کار است که جهت فناوری در داخل یک شرکت یا سازمان را مشخص می کند. اگرکه از جلسات، تعامل با افراد غیر فنی متنفر هستید و فکر میکنید که همه مدیران تمام روز می نشینند و کاری انجام نمی دهند، این شغل مناسب شما نیست. اما اگر که این موضوعات برای شما مشکلی به همراه ندارد، میتوان همه اینها را آموخت، به ویژه از آنجایی که کتاب های بسیار خوبی برای کمک کردن به شما وجود دارد. هر جلسه بحثی است در مورد مسیری که کسب و کار در آن در حال حرکت است و اینکه چگونه فناوری می تواند به آن کمک کند، یا گاهی اوقات چگونه فناوری می تواند فرصت های جدیدی برای رشد ایجاد کند. همه اینها باید به زبان ساده توضیح داده شود، به نحوی که برای همه قابل درک باشد.
بنابراین درک نیازهای کسب و کار و مشتریان ضروری است. از تجربه من:
بسیاری از افراد فنی دوست دارند از "موضوعات کسبوکار" فاصله بگیرند. با این حال، این اولین چیزی است که باید به عنوان یک CTO بدانید. هیچ تصمیم فنی نباید در خلاء نگرانیهای صرفاً نرم افزاری یا سخت افزاری اتفاق بیفتد. در بیشتر مواقع CTO باید با مدیران محصول همراه باشد تا این که استراتژی محصولات با عملیات توسعه، سازگار باشند.
در نهایت CTO باید محیطی را ایجاد می کند که به تیم اجازه می دهد به چیزهای بزرگ دست یابد. امروزه بخش بزرگی از مشکلات مربوط به استخدام است. همه به دنبال توسعه دهندگان هستند، از طرفی هم تعداد آنها بسیار زیاد است، بنابراین محیط باید تا حد امکان، پذیرا باشد. این چیزی است که CTO باید بداند که چگونه آن را به خوبی انجام دهد، چرا که خودش هم یک زمانی یکی از آنها بوده است. اگر تیم بخواهد TDD یا pair programming، یا staging serversرا انجام دهد – باید همه آنها توسط CTO تایید شوند. این موضوعات تغییرات بزرگتری را به همراه خواهند داشت که باید CTO آنها را در نظر بگیرد.
و اما رابطهی CTO و موضوعات مالی 🤔:
در نظر گرفتن پیامدهای مالی مربوط به عملیات فناوری بسیار مهم است. در حالی که استارتآپها ممکن است انعطافپذیری برای استفاده از جدیدترین فناوریها را داشته باشند، ولی سازمانهای بزرگتر باید بسیار محتاطتر باشند و هر تصمیم را بر اساس بازگشت سرمایه (ROI) ارزیابی کنند. سوال اصلی این است: یک فناوری چقدر برای مشتری ارزش دارد؟ اغلب، این در مورد یافتن تعادل بین به روز رسانی زیرساخت های موجود و اجتناب از دام انجام بازنویسی های گسترده و پرهزینه است. یک استراتژی مهم شامل اعمال قانون 80-20 با هدف دستیابی به 80 درصد از منافع تنها از 20 درصد سرمایه گذاری است.
در مواقعی بوده که در برخی از تعاملات نظرات دوستان با سابقهای رو شنیدم، اغلب با سوالاتی مانند "چرا این نسخه قدیمی را ارتقاع و از React.js استفاده نمیکنید؟" درک این نکته مهم است که بازنویسی کامل برنامهها، بهویژه برای استفاده از فناوریهای جدید، همیشه بهترین رویکرد نیست. در حالی که مدیریت برنامه های قدیمی می تواند در طول زمان پرهزینه شود، بازنویسی آنها معمولاً ارزش کمی برای مشتری ایجاد می کند. تمرکز باید بر ایجاد توازن در تلاشهای توسعه باشد. گردآوری تیمی که فقط میخواهد با جدیدترین فناوری ها کار کند در دراز مدت عملی نیست.
این رویکرد چارچوبی را برای اولویت بندی آنچه که بیشتر اهمیت دارد ایجاد می کند. به عنوان مثال، من قابلیت اطمینان و امنیت را اولویت اصلی هر نرم افزاری می دانم. بنابراین، هرگونه تغییر در اهداف کسبوکار با توجه به این اولویت ها ارزیابی می شود. حریم خصوصی نیز بسیار مهم است، مفهومی که افراد غیر فنی اغلب درک کامل آن را چالش برانگیز می دانند. با این حال، اگر ابتکارات خاصی با استانداردهای حفظ حریم خصوصی مطابقت نداشته باشد، می تواند گزینه های موجود برای یک شرکت را محدود کند. اطمینان از رعایت و مدیریت این مرزها بخش مهمی از نقش من است.
تمرکز من روی فناوری است، با این حال معتقدم که باید یکپارچه و seamless باشد. بحث در مورد شایستگی PHP، یا هر فناوری، در نهایت برای من موضوع بی ربطی است. در حالی که برخی ممکن است چنین بحثهایی را جذاب بدانند، اما برای یک سازمان اهمیت کمی دارند. فراتر رفتن از این نگرانیها، نقطه عطفی در مسیر تبدیل شدن به یک مدیر ارشد فناوری یا CTO است. این در مورد تغییر توجه از جزئیات فناوری به مسئولیتهای گسترده تر، از جمله رهبری تیم و اهداف کلان سازمانی است.
و در نهایت:
یک مدیر ارشد فناوری یا CTO بودن نیازمند دانش گسترده تری از فناوری است، روزانه سوالاتی که در ذهن یک CTO میگذرد متفاوت است. دیگر سوالات از جنس مهندسی و فناوری نیست بلکه به خدمت در آوردن فناوری برای موفقیت کسب و کار هست و این نیازمند درک عمیقی از فناوری هست و چشم انداز وسیع تری را میخواهد.
https://www.linkedin.com/in/mohammadhosseinjalili/
مطلبی دیگر از این انتشارات
روش C4 در معماری نرم افزار
مطلبی دیگر از این انتشارات
چرا Cohesion (یکپارچگی) و Coupling (وابستگی) مهماند؟
مطلبی دیگر از این انتشارات
Handling Large Files in Microservices - مدیریت فایلهای بزرگ در معماری میکروسرویسها