Отворен програмиÑÑ‚ ли Ñи ?
Хората в Ð½Ð°ÑˆÐ¸Ñ Ð·Ð°Ð½Ð°ÑÑ‚ аз ги Ð´ÐµÐ»Ñ Ð½Ð° два типа – едните Ñа иÑтинÑките „програмиÑти“ (или по-широкото понÑтие „разработчици“), и хора, които проÑто това работÑÑ‚ (да ги наречем „невдъхновени Ñлужители“). Предполагам, че не Ñамо в нашата профеÑÐ¸Ñ Ðµ така, но вÑе пак аз като Ñтереотипен инжинер трудно виждам отвъд моето Ñи блато. Ðали е излишно да казвам, че Ð½Ð°ÑˆÐ¸Ñ Ð·Ð°Ð½Ð°ÑÑ‚ е по-оÑобен, защото нещата Ñе развиват много бързо, и трÑбвада Ñе учи поÑтоÑнно. Много малко от нещата, които Ñа били актуални преди деÑет години, Ñа актуални Ñега (разбира Ñе, Ð³Ð¾Ð²Ð¾Ñ€Ñ Ð½ÐµÑ‰Ð°Ñ‚Ð° Ñ Ð¿Ñ€Ð°ÐºÑ‚Ð¸Ñ‡ÐµÑка наÑоченоÑÑ‚, теоретичните иÑтини Ñа „вечни“). Поне половината неща от преди две години Ñа актуални Ñега. Което означава, че и ние трÑбва да Ñе развиваме ÑÑŠÑ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñщата Ñе Ñреда, за да Ñме актуални на пазара, и на ÑитуациÑта в коÑто Ñе намираме. Ето затова и питам, ти отворен програмиÑÑ‚ ли Ñи ?
ИзумÑвам Ñе колко мързеливи, или неправилно мотивирани може да Ñа хората, или проÑто защо Ñа чаÑÑ‚ от Ñивата маÑа на „невдъхновените“ Ñлужители, които проÑто го работÑÑ‚ това, и малко ги интереÑува какво Ñтава навън, и как Ñе развива Ñвета около Ñ‚ÑÑ…. Да започнем Ñ Ð¿Ð¾-меките примери и въпроÑи, и поÑтепенно ще преминем към по-фрапиращите. ФокуÑÑŠÑ‚ ми ще падне главно върху уеб разработчиците, Ñ ÐºÐ¾ÐµÑ‚Ð¾ Ñе извинÑвам на вÑички други, които Ñе впиÑват под термина „програмиÑÑ‚“, които Ñъщо заÑлужават внимание, но пък аз нÑмам толкова опит там.
За начало, колко от Ð²Ð°Ñ Ñа решили да екÑпериментират Ñ Ð´Ñ€ÑƒÐ³ тип платформа за работа ? Примерно да Ñте решили да Ñкочите от PHP на Ruby, или от Perl на Python. Ðко не решите да екÑпериментирате, как ще разберете дали нÑма по-добър начин за правене на нещата ? Или ако не по-добър, то поне по-различен … защото понÑкога решаването на проблема лежи в опита който имате натрупан алтернативно, и Ñ€Ð°Ð´Ð¸ÐºÐ°Ð»Ð½Ð¸Ñ Ð¿Ð¾Ð³Ð»ÐµÐ´ от друга гледна точка почти винаги помага.
Ропитвали ли Ñте актуалните и обÑъждани в момента Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ? Примерно опитвали ли Ñте rapid development Ñ CakePHP или CodeIgniter ? Разглеждали ли Ñте популÑрни Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÐºÐ°Ñ‚Ð¾ например Symfony, което Yahoo ползва за Ñайтове като Yahoo Bookmarks и от Ñкоро Delicious? Или Ñравнително Ð½Ð¾Ð²Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚ Zend Framework, в който Zend вкарват толкова много уÑилиÑ, и Ñе опитват да наложат като „платформата“ за разработване на уеб Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ? Ðми по принцип интереÑували ли Ñте Ñе за огромното количеÑтво „рамки“ (абе „frameworks“ … имаше купешка дума за това на българÑки, но не Ñе Ñещам Ñега), които Ñа в момента, които Ñа Ñъбрали нÑкакво популÑрноÑÑ‚ до една или друга Ñтепен – примерно Akelos и SolarPHP, или обещаващ, но позабравен проект като WACT ? Ð’Ñичките Ñа токова различни, и решават различни проблеми по толково различни начини, вÑеки Ñ Ð¿Ð»ÑŽÑовете и минуÑите Ñи, че непременно ще Ñъберете огромен арÑенал за торбата Ñ Ñ…Ð¸Ñ‚Ñ€Ð¾Ñтите, дори и да не използвате Ð´Ð°Ð´ÐµÐ½Ð¸Ñ framework като оÑновна Ñреда за работа по проектите Ñи.
Разглеждали ли Ñте популÑрни готови Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñ Ð¾Ñ‚Ð²Ð¾Ñ€ÐµÐ½ код ? Ðз Ñупер Ñи изумÑвам нÑкой в нашата профеÑиÑ, ако не е чувал за WordPress. ПроÑто трÑбва да Ñи Ñе крил две-три години по пещерите, за да не знаеш за едно толково популÑрно решение. Ðми другите ? Примерно Joomla, Drupal, Typo3 … дори phpbb или oscommerce ? Ðа нÑкои от тези проекти кодът им не Ñтава за гледане, но пък има добри иде за това как да Ñе Ñправиш Ñ Ð½Ñкои проблеми, не Ñамо програмно, но и като интерфейÑ, Ð¸Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ñ Ð¸ Ñ‚.н.
Ðми оÑвен готови Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñ Ð¾Ñ‚Ð²Ð¾Ñ€ÐµÐ½ код, ползвали ли Ñте и библиотеки Ñ Ð¾Ñ‚Ð²Ð¾Ñ€ÐµÐ½ код ? Друго нещо което ме изумÑва, е когато никой не е чувал за неща като domPdf, Smarty, Snoopy, MagpieRSS, SimplePie, или SwiftMail и phpMail, или дори по-инертното PEAR хранилище… и вмеÑто това Ñе правÑÑ‚ на Колумб като пишат грозни и бавни дилетанÑки глупоÑти. Ðко ги питаш защо ти Ñи ги пиÑал тези неща, като ги има готови, Ñ Ð¾Ñ‚Ð²Ð¾Ñ€ÐµÐ½ код, и най-важното – Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ°, обикновенно отговорÑÑ‚ „ами за да е по-Ñигурно“ или „ами за да ми е по-леÑно, като го знам как работи“. Добре, че не правÑÑ‚ автомобили, че ще Ñи изгубÑÑ‚ една петилетка да откриват колелото. Сега Ñе Ñещам, че нÑкои отговарÑÑ‚ „ами моето е по-бързо“, въпреки че Ñъм 99% Ñигурен, че едва ли Ñа пробвали да ÑравнÑÑ‚ бързодейÑтвието Ñ Ð½Ñкои от готовите библиотеки. За да Ñи продуктивен, трÑбва да ползваш Ñтабилен код, и нещата да вървÑÑ‚ гладко. Библиотеките Ñ Ð¾Ñ‚Ð²Ð¾Ñ€ÐµÐ½ код Ñа Ñупер заради това, че отговорноÑтта за поддържането не лежи върху ваÑ, и вие нÑма да губите време да Ñе занимавате Ñ Ð½Ñкаква библиотека, а ще може да Ñе ÑÑŠÑредоточите върху проекта над който работите. Ð, да, и да знаете, PHPClasses е за аматьори … кажете ми, че ползвате нÑкой ÐºÐ»Ð°Ñ Ð¾Ñ‚ там и гледайте как ще Ñе пръÑна от ÑмÑÑ…. Ðко Ñте нÑкой начинаещ новобранец може да хвърлите нÑкое око там , но най-много да прихванете нÑкой лош навик от там, така че най-добре въобще преÑкочете този Ñайт.
Горното Ñе отнаÑÑ Ð¸ до JavaScript библиотеките, въпреки че не Ñъм Ñрещал нÑкой да Ñи пише ÑобÑтвен набор от функции .. по-Ñкоро Ñе правÑÑ‚ нÑкакви „клани-недоклани“ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð°Ð½ код от DynamicDrive или AjaxDaddy, който е напиÑан Ñупер къÑогледо, и вÑÑкаква промÑна по него е изключително изтезание. Сега поне изборът е голÑм – за вÑеки Ñтил на работа ще Ñе намери библиотека: Prototype, MooTools, MochiKit, Dojo, YUI и невероÑтното jQuery.
Сега, на финала, иÑкам да обърна внимание на хората които Ñа замръзнали на ниво 2000-2002 година. Този тип програмиÑти ползват процедурен код, защото това е Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð½Ð°Ñ‡Ð¸Ð½ на който Ñа Ñе научили да работÑÑ‚, и нали Ñе върши нÑкаква работа – нÑма нужда да Ñе ÑменÑ. Пишат обектно-ориентиран код на ниво кръжок по информатика за 3 клаÑ. ДоÑкоро Ñупер закоÑтенÑло Ñа ползвали PHP4, защото не Ñа Ñе Ñетили да видÑÑ‚ колко предимÑтва им предоÑÑ‚Ð°Ð²Ñ PHP5. Става и по-зле … например не Ñе ползва нищо за контрол на верÑиите, ами вÑичко Ñе трупа на една Ñподелена машина, в коÑто в отделни папки Ñе запиÑват Ñледващите верÑии ;) ПоÑле като Ñе Ñчупи нещо върви търÑи от ÐºÐ¾Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð½Ð°Ñ‚Ð°Ñ‚ÑŠÐº е изплувала грешката, и кой Ñ Ðµ направил. Става и още по-зле … например вÑички работÑÑ‚ отдалечено на една машина, „Ñървъра“, където ако един от вÑичките прецака файл, необходим в проÑеца на зареждане на Ñтраница, вÑички други „маймуни на клона“ духат Ñупата и чакат, докато Ð²ÑŠÐ·Ð½Ð¸ÐºÐ½Ð°Ð»Ð¸Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼ Ñе отÑтрани. Ðа колко от Ð²Ð°Ñ Ð¸Ð¼ Ñтана ÑÑно къде е проблема, и как Ñе решава той чрез Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð·Ð° контрол на верÑиите?
И Ñега най-голÑмата тъпащина … още има хора, които работÑÑ‚ като Ñупер безотговорно омазват едно от най-елементарните правила, които Ñе учат още от началото и които трÑбва да Ñе Ñпазват проÑто оповавайки Ñе на Ð·Ð´Ñ€Ð°Ð²Ð¸Ñ Ñ€Ð°Ð·ÑƒÐ¼ (дори преди да Ñте разбрали какво е MVC). Това е разделÑнето на предÑтавÑнето от логиката. Ðали Ñте наÑÑно, че Ð²ÑŠÐ½ÑˆÐ½Ð¸Ñ Ð²Ð¸Ð´ на Ñайтовете Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾-чеÑто от кода, който задвижва цÑлото приложение … тогава защо ÑмеÑвате двете ? Първоначално може да ви е по-леÑно, но това Ñъпер Ñкоро Ñпира да работи в момента когато трÑбва да промените нещо, или да го използвате на повече от едно мÑÑто.
Който Ñе заÑрамил, заÑрамил… да не хващам пак парализа на показалеца, и да го размахвам поучително. Хващайте Ñе да четете, и да екÑпериментирате, вмеÑто да вегетирате на работното Ñи мÑÑто, и да го карате като Ñив „леминг“.