Bushido of Software Development

12 Must Have in Software Development 

Just a minimal simple set or rules and approaches, which, I believe, help projects to succeed. Most of software developers will say that it is something like “must have” on your project and, of course, it is not complete set. Since each complete set is a process and you can always chose the most suitable process for you.

  1. Unit and integration testing full or most code coverage (of course, you don’t have to test your DTOs or VOs if they don’t have any business logic inside);
  2. Continuous integration. Running integration testing at least daily;
  3. All developers (of all sub-teams) on the project can communicate with each other directly (not only though representative person);
  4. Adequate number of developers on the project (not too small and not too much);
  5. Adequate volume of design documentation (again not too small and not too much);
  6. Design documentation must be readable, illustrative, brief, well-structured and clear; 
  7. Developers must have adequate hardware and software to develop software;
  8. Team must have at least one development server to have development version of software, DB, continuous integration there;
  9. Team must have mock-ups (separate DB) for continuous integration;
  10. Team must use source-control system, all sub-teams of the team must integrate with code in the source control at least daily;
  11. Team must have development infrastructure. Such as wiki, project management and bug-tracking software, etc.;
  12. Automate everything you can.

Unit and integration testing full or most code coverage

It will let developers be sure that their code is functioning OK. More of that, it let them to to check if some part is OK without re-testing whole application.

Continuous integration

Imagine, some developer changed behavior of her/his module and updated his unit tests. Her/his unit tests works fine, but some other, dependent part could be broken.
Continuous integration allows developers to know if there are hidden problems in their application.

All developers on the project can communicate with each other directly

Don’t let absence of communication to become bottleneck of your process. If one developer has question and/or misunderstanding regarding some part of other developer’s work, communicating though contact person could delay delivery date of your project. Or even worse: communication person could transfer information incorrectly.

Adequate number of developers on the project

No need to tell you what happens if there not enough developers on the project. The surprising problem could happen if you took too many developers:
they will face all integration issues. Sometimes small teams could perform better than big ones. The one more issue about big teams is non-uniformity of the application
design. Not all developers have the same level and not all people have the same approaches.

Adequate volume of design documentation

It is simple. Nobody will read bad-structured huge design documents. On the other hands something should stay in-written to reflect common parts, possible misunderstandings,

Design documentation must be readable, illustrative, brief, well-structured and clear

If it not readable obviously nobody will read it. Non-illustrative documentation hard to process and developers could miss something. Why should it be brief is discussed in
previous section. In badly structured document hard to find information you need, so such documents become useless.

Developers must have adequate hardware and software to develop software

Just not fast enough hardware will simply delay your project. Do you need it? Usually the biggest expense is developers themselves. So it is very improvidently to spend
their time for waiting while program is compiled. The same idea is about software. Just let your developers work more effectively.

Team must have at least one development server to have development version of software, DB, continuous integration there

By word “server” you can understand some computer. They are not so expensive nowadays.

Team must have mock-ups (separate DB) for continuous integration

Don’t let changes in your development DB break your unit-testing. It is not such a big deal to maintain 1 more DB for testing.
Just let your developers play in development DB (or DB on their PCs) and put only what you need for testing to test DB.
Your continuous integration will hardly work well without it.

Team must use source-control system, all sub-teams of the team must integrate with code in the source control at least daily

I can’t imagine a project without source control. I’m sure everyone does the same. The issue can be, for example, if you have one team in
closed proprietary network (say, writing business logic) and one outside (say for presentation layer development). Sometimes both teams
can’t use the same source-control for various reasons, but at least in one of teams should integrate with others frequently (they can put
other team’s code in their source control. Even this process can usually be automated.).

Team must have development infrastructure. Such as wiki, project management and bug-tracking software, etc.

Don’t make your developers search their emails for some important information. Just set up wiki. Your developers are still write
their tasks on pieces of paper? How do you plan to manage it? Use software to develop software.

Automate everything you can

Compilation, deployment, integration with other source controls, sometimes even code-generation, etc. Usually you already have to do much for continuous integration. You can even chose dedicated person for this task if your team is big enough. Save costy time of your developers.


Misunderstanding of Agile development

Agile development is NOT:

  1. A mess-style development;
  2. Agile does not mean that you can write programs without any design documentation;
  3. When your developers have no access to business and business do not take part in the communication with the development team;
  4. Separating development sub-teams;
  5. Absence of continuous integration;
  6. Absence of unit-testing at all or even just some unit-testing instead of full coverage;

Unfortunately, sometimes you have to be negative to distinguish misinterpretations.

BMW 328i Convertible

Впечатления от катания на BMW 328i Convertible по солнечной Калифорнии

328Праздновал тут, намедни, свой день рождения в Калифорнии. Замечательный штат – тепло, светло и мухи не кусают. Самое идеальное место для катания на кабриолетах и проч. буржуинских средствах передвижения. Вообще-то сначала я хотел взять Porshe Carrera S тоже кабриолетик, но оного в наличии не оказалось и небыло тогда когда я еще раз про него спрашивал. Живут же люди – кто-то продлил рент автомобиля еще на день. Т.е. еще на 500 местных зеленых бумажек. Но я не пожалел, что взял этот кабриолет в прокат. Первое, что мне больше всего в нем понравилось это жесткая крыша, которая убирается нажатием кнопки. Т.е. не тот убогий брезент, который обычно рефлексирует под крышу а настоящая металлическая крыша вовсе даже не черного цвета 🙂 Жутко удобно, практично и приятно. Тут тебе и кабриолет и купе в одном флаконе. И еще мне понравился сам процесс: жмешь кнопку и она поднимается. Очень волнующий зажгательно! 🙂 Единственное, крышка не будет подниматься на ходу. Вот в каком состоянии вы с ней начали движение в таком она и останется, сколько не тереби волшебную кнопку. Я разок поднимал на перекрестке, чуть зеленый не пропустил, хотя подъехал на начало красного. Причем местные жители терпеливо ждали в очереди пока я поеду. Даже не побибикали 🙂 Кстати, в случае когда крыша сложена от багажника остаются рожки да ножки 🙂 Теперь о насущном. Данные брал с американского сайта (http://www.bmwusa.com/Standard/Content/Vehicles/2008/3/328iConvertible/default.aspx), звиняйте, но судя по российскому сайту BMW такая модель в России не продается. Только чуть более мощная 330i, которая в свою очередь не продается в США. 🙂 Судя по данным производителя машинка вполне себе шустренькая: разгоняет тушку до 100 (точнее до 60 миль в час) за 7.2 секунды на автоматической коробке передач. Такая же версия но купе разгоняется уже за 6.8 секунды за счет меньшего коэффициента сопротивления (0.28 против 0.30) и значительно меньшего веса (1540 против 1780). Хотя умельцы утверждают, что умеют разгонять этот болид еще быстрее. Кушает сие чудо природы всего лишь 13.3 по городу, 6.8 за городом и 9.2 в смешанном цикле (это данные для даже более мощной модельки 330 с российского сайта) почти как 14-я вазочка и меньше, чем Волга, несмотря на в 2 раза большую мощность! Хотя масса у них практически одинаковая. Ну а

теперь о субъективном: Впечатления от вождения BMW описать словами (нематерными) практически невозможно. Сплошной восторг! По-началу я не прочухал, что автомат можно перевести в спортивный режим и довольствовался обычным, в котором машинка ведет себя достаточно стандартно (не считая отличного чувства дороги и руля). Но только стоит переключиться на спортивный режим, как сразу понимаешь, что такое BMW на самом деле и почему ее так все любят. На газ машинка начинает реагировать просто восхитительно. Ускорение напрямую зависимост от силы нажатия на педальку газа. Ощущение, как будто пересел в спортивный автомобиль. В сочетании с идеальными реакциями на руль, шикарными тормозами ничего кроме восторга не вызывает. Соверешенно непередаваемые ощущения я получил, катаясь по тому самому Mulholland Drive. Это такая дорожка по краю обрыва,Mulholland Drive где не знаешь (если, конечно же, там уже не ездил) насколько крут следующий поворот. Моим пассажирам, как они утверждают, было жутко. 😉 К сожалению ниразу не переключил передачу с самостоятельно с руля (хотя переключатели там есть), т.к. автомат работает просто отлично. Странно, только почему БМВ-шники не сделали еще его быстрее ручной коробки как это сделали менее ленивые инженеры Porsche. Кстати, если сравнивать эту машинку с предыдущей, про которую я писал (Pontiac Grand Prix) то большую мощность и больший крутящий момент ей удается развить на моторчике меньшего объема (3 против 3.8 литра), что внушает уважение немецким инженерам, хорошо умеющим превращать кубики в лошадки! 🙂 Цена же у буржуев как обычно почти в два раза ниже чем в России (от $43 200). Вот такая вот несправедливость. Хотя немцы ближе к россиянам, хотя бы географически. Кстати, тут отлично развита система лизинга и более мощную версию 335i с кучей опций (так что цена дотянет до 57 000) можно взять в лизинг на 3 года всего за 669 баксов в месяц. В России мне такое и не снилось. Все, что я мог себе позволить за такие же деньги это 3-ю мазду в кредит.