Какво мисля ..
What i think ..
Что я думаю ..
-
Описанието на методологията в един мой проект
Description of methodology in one of my projects
Описание методологии в одном из моих проектов
Напоследък много се говори за Пъргава-методология и "злоупотреба" с нея...
Ами, "Пъргавината" е като зен-будизма (виж накрая на препоръчаните четива). Не е религия, и не е
панацея, а начин на живот. Не става въпрос за докарване на външен вид, става въпрос за
съдържанието. Ако не идва отвътре - т.е. се разглежда като списъци и правила и отмятане по
точки - няма никаква полза. И няма смисъл да се спазва буквално - ползвай това което те
кефи. Но имай предвид че веднага лъсва _всичко_друго_ което не е наред.
Recently there's a lot of talk about Agile methodology and its "misuse"...
Well, "Agile" is like zen-buddhism (see at end of recommended readings). It's not a
religion, and not a silver bullet, but a way of life. It's not a facade to keep, it's
about contents. If it's not in the heart - i.e. is only taken by lists and rules and
checkboxes - there's no use. And there's no point sticking blindly to it - pick whatever
makes u tick. But have in mind that it makes _all_other_ deficiencies come to light.
В последнее время очень много говорится о "Проворной-методологией" и о
"злоупотреблением" с ней... Ну, "Проворность" как зен-будизм (см. в конце рекомендуемых
чтений). Это не религия, и не панацея, а способ жизни. Это не вопрос внешнего вида, а
вопрос о содержанием. Если не приходит изнутри - т.е. рассмaтривается только как списки и
правила да точки - никакой пользы не будет. И незачем применять буквально - бери то что
нравится. Но имей ввиду что сразу увидится _все_другое_ что не работает.
-
Правенето на софтуер като граф във време/пространството, и ролите
Software process as a graph in time/space, and roles
Софтуерный процесс как граф во время-пространстве, и роли
Then come the agile vs waterfall/cmmi wars. IMO, the process of making
software has to be viewed as a graph, both in time (when), and space (what and _who_).
Different metodologies idealize it to be specific kind of graph, e.g. single
multi-point-line, spiral, whatever... and then expect/assume it's the only one, in whole
graph. Which is not correct, pieces (person/time/feature) can be of different kind, and
all the "wars" are because of lazyness/reluctance to accept the NO-single-silver-bullet,
learn all the ways, and most of all, leave (local-piece-) control to the actual doers.
-
Криза? Каква криза? или ефикасното правене на ефективен софтуер
Crisis? What crisis? or the efficient making of effective software
Кризис? Какой кризис? или еффикасно делать еффективный софтуер
-
Аутсорсинг, ишлеме, глобална разработка на софтуер -
т.е. изнасяне и разпределяне на работа, географски или не...
предизвикателства на общуването
Outsourcing, offshoring, global software development -
taking out and distributing work, geographically or not...
challenges of communication
Аутсорсинг, офшоринг, глобалная разработка софта -
т.е. выносить и распределять работу, географски или нет...
предизвикательства общения
-
изисквания, анализ, спецификация... най-важната връзка, без която не може.
requirements, analysis, specification... the most important link that can not be missing.
требования, анализ, спецификация... самое важное звено, без которого нельзя.
А основните инструменти в правенето на софтуер са... правилните въпроси.
Били те 3-те нива в случай на употреба (use-case: защо-какво-как), или вида
програмиране - процедурно (как), функционално (какво), причино-следствено (защо),
обектно-ориентирано (кой) ... или простото съмняващо се "Дали трябва".
And main tools in software making are... the right questions. Were they
the 3 levels in a use-case (why-what-how), or the kind of programming - procedural
(how), functional (what), reason-goal (why), object-oriented (who) ... or the simple
doubting "Whether it should".
А основные инструменты в создании софтуера это... правильные вопросы.
Были бы они 3 уровня в случае пользования (use-case: почему-что-как), или вид
программирования - процедурное (как), функционалное (что), причино-следственое
(почему), обектно-ориентираванное (кто) ... или простое сомневающееся "Да-надо-ли".
- I keep six honest serving-men
- (They taught me all I knew);
- Their names are What and Why and When
- And How and Where and Who.
Rudyard Kipling
- Слуги аз имам шест на брой
- от странно естество.
- Наричат се: Защо, Как, Кой,
- Кога, Къде, Какво.
Ръдиард Киплинг
- Есть у меня шестерка слуг,
- Проворных, удалых.
- Зовут их: Как и Почему,
- Кто, Что, Когда и Где.
|
-
тестването - нещото, без което не трябва (всъщност винаги го има...
крайния потребител)
testing - the thing that should not be missing (actually it's always
there... end-user)
тестирование - штука, без которой не надо (всущности ее всегда есть -
конечний пользователь)
-
my open sources - dbcook.sf.net, kiosk-demo, ...
моя свободен софтуер - dbcook.sf.net, киоск-демо, ...
мой свободный софт - dbcook.sf.net, киоск-демо, ...
мото-та
Ето някои мото-та, от автобиографията ми - може да са полезни:
- Намери си приятел да бъде твоите сетива.
- Не можеш да направиш свестен инструмент/нещо, ако никога не си му бил потребител.
- Направиш ли нещо да могат да го ползват идиоти, само идиоти ще го ползват.
- Езиците са инструменти. Ако има подходящи, ползвай ги. Ако няма, направи си!
- Асоциациите са велико нещо - вярвай на собствения си (интуитивен) нюх.
- Софтуерът всъщност е за и относно хората, а не за и относно машините.
- Доверието е същността на правенето на софтуер. Машината има 100% доверие на
програмиста... докато на другия край хората изобщо си нямат доверие.
Човек трябва да реши къде е в тази редичка - колко доверие и недоверие
можеш да понесеш?
- www-Mрежата прави световното село - така че _всичко_ и всеки е на почти-нулево
"разстояние". Но НИКОГА нулево. А понякога човек се нуждае точно от това - леко
докосване - или добър ритник...
motto-s
btw, here some mottos, from my cv/resume - might be useful:
- Find a friend to be your senses.
- One can't make a decent tool/thing if never has been an user of it.
- If you make something to be usable by idiots, only idiots will use it.
- Language is a tool. If there is one suitable, use it. If not, make it!
- Association is a great thing - trust your common (intuitional) sense.
- Software is actually about people, not about machines.
- Trust is the essence of making software. The machine trusts the
programmer 100%... while at the far end people don't trust each other
at all. One has to see hirself in this chain - how much trust and
distrust you can handle?
- www-web makes the global village - so _everything_ and everyone is at near-zero
"distance". But NEVER zero. And sometimes one needs just that - a warm touch -
or good kick...
мотто
а вот некоторые из моих мотто, из автобиографии - могут быть полезными:
- Найди себе друга, который был бы твои ощущения.
- Не можешь сделать хороший инструмент/чтото, если никогда не был его потребителем.
- Если сделаешь чтото употребляемое идиотами, только идиоты будут его пользовать.
- Языки являются инструментами. Если есть подходящие, пользовай их. Если нет, сделай сам!
- Ассоциация - великая штука. Верь своему собственному (интуитивному) носу.
- В сущности Софтуер есть для и о людей, а не для и о машин.
- Доверие является сущностью всего изготовления софтуера. Машина доверяет програмисту на
100%... а на другом полюсе люди вообще не доверяют друг друга.
Человек должен найти свое место в этой цепи - сколько доверия и недоверия
ты сможеш нести?
- www-Сеть делает мировую деревню - так что "расстояние" до _всех_ и до _всего_
почти-нулевое. Но НИКОГДА нулевое. А человек иногда нуждается точно в этим -
легкое прикосновение - или хороший пинок...
|
|
|
Recommended readings
Препоръчвам за четене
Рекомендую для чтения
Ето някои неща за софтуера, които препоръчвам като основополагащи:
Here some things about software, which i recommend as fundamental:
Вот некоторые вещи о софтуере, которых я рекомендую как основополагающие:
-
Software Engineering book
-
Ian Sommerville
( amazon8 -
amazon6 )
Това е Книгата за софтуера като инженерна наука. В нея има всичко.
За темата "стари системи" (legacy software), виж по-старото 6-то издание (черното).
This is The Book about software as engineering science. There is
everything in it. On topic of legacy software, see the older 6th edition (black).
Это Книга о софтуере как инженерная наука. В ней есть все. Для
темы о "старых систем" (legacy software), смотри на старое 6-ое издание (черное).
-
Design patterns book (Erich Gamma et al -- Gang of Four, GOF)
- wikipedia
This is a book playing important role in software development.
It's a bit watered with example code. See wikipedia for a list of the patterns.
Това е книга с много важна роля в разработката на софтуер.
Малко е разводнена с примерен код. Виж уикипедия за списъка от
шаблони/мотиви/шарки (patterns).
Это книга с очень важной роли в разработке софтуера. Хотя там
излишно много примерного кода. Смотри на уикипедия для списка
шаблонов/мотивов/шарок (patterns).
-
Usability Engineering book
-
Jakob Nielsen
( wikipedia )
Това е книгата по темата Използваемост. Насочена е към
софтуера, но заложените принципи са общовалидни за всякакви потребителски интерфейси
(напр. управление на касетофон или автомобил). Общо-интересни са първите няколко части.
This is the book about Usability. It is targeted at software but the
underlying principles are generally valid for all kinds of user interfaces (e.g.
controls of a tapedeck or a car). Of general interest are the first several chapters.
Это Книга о Использоваемости. Предназначенная для софтуера, но
принципы являются общовалидными для всяких потребительских интерфейсов (напр.
управление радиолы или автомобиля). Общо-интересные - первые несколько части.
-
Organisational patterns book - James Coplien, Neil Harrison
Това е "библия" на тема организационна култура и общуване. Насочена е към
правене на софтуер, но би била полезна и за други (творчески) дейности. Откъси:
This is a "bible" about organisational culture and communication.
It is targeted at software, but can be useful for other (creative) activities.
Excerpts:
Это "библия" по теме организационной културы и общения. Насочена она к
созданию софтуера, но могла быть полезной и для других (творческих) деятельностей.
Отрывки:
- Summary Patlets
- 6.1. Priming The Organization For Change
мирише на промяна... ако се управлява чрез кризи, или отборът е прегорял...
smells of change... if managed by crises, or the team is overburned...
пахнет переменой... если управляють кризисами, или команда перегорела...
-
Манифест на съвместната игра - Алистар Кобърн и др.
Cooperative game manifesto - Alistair Cockburn et al
Манифест совместной игры - Алистар Кобърн и др.
" Software development is a series of resource-limited,
goal-directed cooperative games of invention and communication. The primary goal of
each game is the production and deployment of a software system; the residue of the
game is a set of markers to assist the players of the next game. People use markers
and props to remind, inspire and inform each other in getting to the next move in the
game. The next game is an alteration of the system or the creation of a neighboring
system. Each game therefore has as a secondary goal to create an advantageous position
for the next game. Since each game is resource-limited, the primary and secondary
goals compete for resources. "
" Разработката на софтуер представлява последователност от
съвместни игри на изобретяване и общуване, с определена цел при ограничени ресурси.
Основната цел на всяка игра е направата и внедряването на дадена софтуерна система;
това което остава след играта, е набор от жалони (маркировка), които да подпомогнат
играчите на следващата игра. Хората използват тези жалони за да си напомнят, да се
вдъхновяват и осведомяват един друг по пътя към следващия ход в играта. Следващата
игра може да е за промяна на софтуера, или за създаване на друг. Така че всяка игра
има за вторична цел създаването на благоприятни позиции за следващата игра. И тъй-като
всяка игра е ограничена откъм ресурси, първичната и вторичната цел се надпреварват за
тези ресурси. "
" Разработка софтуера представляет последователность совместних
игр на изобретение и общение, имея определенной цели при ограниченних ресурсов.
Основная цель каждой игры - создание и внедрение какой-то софтуерной системы; остаток
после игры является набор меток (маркировка), чтобы помочь игрокам следующей игры.
Люди используют эти метки и опоры для напоминания, вдохновления и осведомления друг
друга по пути к следующему ходу в игре. Следующая игра может бить о перемене той самой
системы, или о создании другой. Так что у каждой игре есть вторичная цель на
создавание благоприятних позиций для следующей игры. И так-как каждая игра ограничена
ресурсами, первичная и вторичная цели состязаються об этих ресурсах. "
виж също Разработката на софтуер като съвместно писане на поезия
see also Software development as community poetry writing
см. тоже Разработка софтуера как совместное писание поезии
-
Декларация на взаимозависимостта -
Declaration of interdependence -
Декларация взаимозависимости -
"We ...
- increase return on investment by --
making continuous flow of value our focus.
- deliver reliable results by --
engaging customers in frequent interactions and shared ownership.
- expect uncertainty and manage for it through --
iterations, anticipation and adaptation.
- unleash creativity and innovation by --
recognizing that individuals are the ultimate source of value, and creating an environment where they can make a difference.
- boost performance through --
group accountability for results and shared responsibility for team effectiveness.
- improve effectiveness and reliability through --
situationally specific strategies, processes and practices.
"
"Ние ...
- увеличаваме възвръщаемостта на инвестицията чрез --
съсредоточаване върху непрекъснатия поток на стойности.
- даваме надеждни резултати чрез --
включване на клиента в чести взаимодействия и споделяне на собствеността.
- очакваме несигурността и се справяме с нея чрез --
итерации, предвиждане и приспособяване.
- даваме воля на съзидателността и нововъведенията чрез --
признаване на личностите като първоизточник на стойности, и създаване на среда, където да могат да се развият.
- повишаваме производителността чрез --
групова отчетност за резултатите и споделена отговорност за отборната ефикасност.
- подобряваме ефикасността и надеждността чрез --
специфични за ситуацията стратегии, процеси и методи.
"
"Мы...
- увеличиваем возвращаемость инвестиции через --
сосредоточивание на непрерывный поток стойностей.
- даем надеждних результатов через --
включение клиента в частые взаимодействия и разделение собствености.
- ожидаем неуверенность и справляемся ей через --
итерации, ожидание и приспособливание.
- даем свободу созидательности и нововведениям через --
признавание личностях как первоисточник стойностей, и создание среды, где они
могли развертыватся.
- повишаем производительность через --
групповая отчетность о результатах и разделяя отговорность об ефикасности команды.
- улучшаем ефикасность и надеждность через --
специфичные для ситуации стратегии, процессы и методы.
"
виж също Манифест на Пъргавостта:
see also Agile manifesto:
см. тоже Манифест Проворносты:
... we value:
Individuals and interactions - over processes and tools;
Working software - over comprehensive documentation;
Customer collaboration - over contract negotiation;
Responding to change - over following a plan;
... ние ценим повече:
Личностите и взаимодействията - отколкото процесите и инструментите;
Работещия софтуер - отколкото изчерпателната документация;
Сътрудничеството с клиента - отколкото предоговарянето;
Реагирането на промените - отколкото следването на плана;
... мы ценим больше:
Личности и взаимодействия - чем процессы и инструменты;
Работающий софтуер - чем обширная документация;
Сотрудничество с клиентом - чем предоговаривание;
Реагировать на перемены - чем следование плана;
-
Краят на софтуерното инженерство и началото на икономически-съвместните игри - Алистар Кобърн
The end of software engineering and the start of economic-cooperative gaming - Alistair Cockburn
Конец софтуерного инженерства и начало экономически-совместных игр - Алистар Кобърн .
"... This means the speed of the project is proportional to the
speed at which information moves between people's heads. Every obstacle to detecting
and moving information between heads slows the project. Understanding and attending to
this issue is essential to playing the game effectively. ..."
"... Това значи че скоростта на проекта е пропорционална на
скоростта с която информацията се придвижва между главите на хората. Всяко препятствие
при откриването и прехвърлянето на информация между главите забавя проекта.
Разбирането на това изискване и грижата за него е от изключителна важност за да се
играе играта ефективно. ..."
"... Это значит что скорость проекта право пропорциональна
скорости передвижения информации между голов людей. Каждое препятствие обнаруживанию и
передачу информации между голов замедляет проект. Понимание этого требования и забота
о нем является изключительно важной для ефективной игре. ..."
-
"Кристално-Ясна - Движена-от-хора Методология за малки отбори, включваща
Седемте свойства на Ефективните софтуерни проекти", 1998-2004, Алистар Кобърн
"Crystal Clear - A Human-Powered Methodology For Small Teams, including
The Seven Properties of Effective Software Projects", 1998-2004, Alistair Cockburn
"Кристально-Ясная - Движимая-людями Методология для малых командах, включая
Семь свойства Ефективних софтуерных проектов", 1998-2004, Алистар Кобърн
Ползвам тази методология от 4-5 години. Прилича на Скрум, има си и
малко теория, като най-младша от семейството Кристални методологии.
Общо-интересните части са 1,2, и 9 (какво и защо); останалото са подробни
обяснения (как)
i am using this methodology for 4-5 years now. It is similar to
Scrum, and has some theory to it, being lightest in the family of Crystal
methodologies. Chapters of general interest are 1,2 and 9 (what and why); the rest is
detailed explanations (how)
Я употребляю эту методологию уже 4-5 лет. Наподобляет Скрум,
имеет и немножко теории, являясь младшей из семьи Кристальних методологий. Части
общего интереса - 1,2 и 9 (что и почему); остальное есть подробние объяснения
(как)
:
-
шу-ха-ри
shu-ha-ri
шу-ха-ри
-
Back to the roots... a lecture by E.W.Dijkstra
Обратно към корените... лекция от Е.Дийкстра
Обратно к корням... лекция Э.Дийкстра
- 1988:
On the cruelty of really teaching computing science;
(За жестокостта наистина да обучаваш по изчислителни науки)
(О жестокости воистине обучать в вычислительних науках)
The "How to program if you cannot" science... Read and think...
whether IT (or technology at large) has since progressed even a bit into right
direction, or... Are the actual pursued values+outcome the right real one, or a
bogus substitute... Whether we learned to tailor the machines to the job or
instead, tailor the job to the machines...
Науката "Как да програмираш като не можеш"... Чети и мисли... дали ИТ
(или технологията като цяло) е напреднала оттогава поне малко в правилната посока или...
Дали гонените резултати+ценности са правилни и същностни, или само кух
заместител... Дали сме се научили да приспособяваме машините към работата, или
напротив, приспособяваме работата към машините...
Наука "Как програмировать если не умееш"... Читай и думай... ушла ли
ВТ (или технология вообще) с тех пор хоть немножко в правильную сторону или...
Являются ли искомые ценности+результаты правильными и сущностными, или пустой
заместитель какой-то... Научились ли мы приспособлять машин к работу, или
напротив, приспособляем работу к машинам...
-
Software as knowledge medium, and effects thereof - Phillip Armour:
Софтуерът като носител на знание, и произтичащите последствия - Филип Армур:
Софтуер как носитель знания, и вытекающие последствия - Филлип Армур:
... software is not a product but a medium for storing knowledge, and software
development is not a product-producing activity, it is a knowledge-acquiring activity.
...the real job is not writing the code, or even building the system - it is acquiring the
necessary knowledge to build the system... Code is simply a by-product of this activity.
The problem arises when we think the code, rather than the knowledge in the code, is
the product.
... When we use models and mindsets that are rigid and deterministic to manage an activity
that is fluid and variable, it is not surprising that people get disappointed.
-
5 orders of ignorance - CACM'2000
5 степени на незнание - CACM'2000
5 степени незнания - CACM'2000
-
Some of the Realities of Software Project Estimation
Някои истини за Оценката на Софтуерни проекти
Некоторые истины об Оценке Софтуерних проектов
-
The Laws of Software Process: A New Model for the Production and Management of Software, 2003;
(Законите на софтуерния процес: Нов модел за производство и
управление на софтуер)
(Законы софтуерного процесса: Новая модель производства и
управления софтуера)
тази книга е... философска? Все едно всичко по-горе заедно със
себеподобните си, на едно място - опит да се поставят нещата на краката им.
Например, виж това следствие: "... като цяло, (софтуерните) инженери
не _знаят_ как да направят системите които се опитват да направят; тяхната работа
е да _открият_ как се прави това." което според мен значи, че
програмистите трябва да умеят да учат (и може би обучават) - да се научат на това
и/или да бъдат научени. Всичко друго са само инструменти, подпомагащи тази
дейност.
this book is... philosophical? Like all the above together with
all its peers, in one place - an attempt to put them things with their legs down.
For example, see this consequence: "... for the most part, (software)
engineers do not _know_ how to build the systems they are trying to build; it's
their job to _find_ out how to do it." which in my opinion means
that, programmers must be able to learn (and maybe teach) - should learn that
and/or be taught to it. All else are tools supporting that activity.
эта книга... философская? Все равно все что выше вместе со
себеподобными, на одном месте - попытка поставить вещи вниз ногами. Например, см.
это следствие: "... в целом, (софтуерные) инженеры не _знают_ как
построить системы которые они питаются сделать; их работой является _открить_ как
это делается." что по моему значить что, програмистам надо уметь
учить (и можеть быть обучать) - надо им научиться того и/или их научить. Все
другое - только инструменты, воспомагащие эту деятельност.
-
PHILOSOPHY OF SOFTWARE;
(Философията на софтуера)
(Философия софтуера)
, 1996
още нещо за размисъл...
this book is... philosophical. Like all the above together with
all its peers, in one place - an attempt to put them things with their legs down.
For example, see this consequence: "... for the most part, (software)
engineers do not _know_ how to build the systems they are trying to build; it's
their job to _find_ out how to do it." which in my opinion means
that, programmers must be able to learn (and maybe teach) - should learn that
and/or be taught to it. All else are tools supporting that activity.
эта книга... философская. Все равно все что выше вместе со
себеподобными, на одном месте - попытка поставить вещи вниз ногами. Например, см.
это следствие: "... в целом, (софтуерные) инженеры не _знают_ как
построить системы которые они питаются сделать; их работой является _открить_ как
это делается." что по моему значить что, програмистам надо уметь
учить (и можеть быть обучать) - надо им научиться того и/или их научить. Все
другое - только инструменты, воспомагащие эту деятельност.
и някои интересни четива, не-съвсем софтуерни, но... човешки и
организационни:
and some interesting readings, not-exactly-software, but... human and
organisational:
и некоторые интересные вещи, не-совсем софтуерние, но... человеческие
и организационные:
библиотека - наука като суши, TaoTeChing, Зен/Пирсиг, Паркинсон,
антропология и култура, измерения на културите,
library - sushi science, TaoTeChing, Zen/Pirsig, Parkinson,
anthropology and culture, cultural dimensions,
библиотека - наука как суши, TaoTeChing, Зен/Пирсиг, Паркинсон,
антропология и культура, измерения культур,
...
| |