Java, NoSQL, SQL, REST API and other scary words

My Udemy course is a bestseller

Today I found out that my Udemy “Requirements from idea to implementation. BA and SA guide” course is a bestseller:

2018-02-12_13-23-52

 

 

Advertisements
Standard
Java, NoSQL, SQL, REST API and other scary words, QA (eng)

Blue Green Deployment, Canary Run, A/B testing difference

I put the word “difference” to the header just for fun because all these things are different and could work together. Here are definitions:

  • Blue Green Deployment  is about how to deploy a new version of your software
  • Canary Run is about testing your software on a small amount of random participants who got no ideas that they are testers now
  • A/B Testing is about testing your ideas about how to improve  usability, popularity, noticeability, etc on a different focus groups.

Let’s start with the most complicated of these 3 items –

Blue Green Deployment Continue reading

Standard
Java, NoSQL, SQL, REST API and other scary words, Requirement management (rus)

Requirements from idea to implementation. BA and SA guide

I started my career in 2008 as a Business Analyst. Since then I worked as a Business Analyst, Systems Analyst, Product Owner, Test Automation and Software Engineer. I worked with custom development projects (for example I made Federal State Statistics Unit Warehouse and Portal) and I worked with products (Case Management System, Customer Relationship Management Systems, etc), so this course is an overview of technologies, practices and tips I used during my career.

I also got couple other Udemy courses, more then 15 articles and some on-site and online courses. This course build accordingly problems I saw during educational process and I really tried to highlight that (especially you will hear a lot of “concentrate on a problem first” tips).

So, to build this course, we had a group of 10 BA-SA volunteers and we started with usual problems BA-SA got, set a course structure you can hear in introduction and wrote something like a 600 pages book, which you will find at the end of the course as a downloadable PDF attachment. This is a base information for the theoretical part. We also researched templates, prepared a set of our favorites and you’ll be able to download these documents templates. Then we made a practice section based on example from one of my practical online course I made at the end of summer 2017 (you’ll get PDF practice examples as well, but they are not 100% done because we would like to show you a process of creating requirements).

Please note that we analyzed more then 900 web sites to combine all necessary theory for you (all these hyperlinks available at the second PDF file with theory).

Here is the link:

https://www.udemy.com/requirements-guide

Discount limited promo code is – AKDISCOUNT2018

PS.

I also would like to say special thanks to my colleagues, who really helped to control quality of all
materials, examples, etc:
● Evgenia Pavlova
● Olesia Volodina
● Maria Begouleva
● Julia Dorozhkina
● Anna Letunovsky
● Dmitry Ivannikov

And there were a bunch of people who were also involved in creating of all these materials:
● Daria Volkova
● Ekaterina Ilyashina
● Julia Vasilieva

And many thanks to Ekaterina Gert for the title image.

Standard
Java, NoSQL, SQL, REST API and other scary words, QA (eng)

Cucumber + ExtentReport

Prerequisites: Cucumber Again. From Requirements to Java Test

To create any simple Cucumber+Java test, we will need to create a glue file, that is pretty simple to do, because, if you don’t need all vhistles and blows on your first step – this will be enough:

package com.cucumber.StepDefinitions;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(
        features="src/test/resources/feature",
        glue = "com.cucumber.StepDefinitions"
)
public class CukesRunner {
}

My favorite report engine is ExtentReports, so, let’s add a proper class:

package com.framework.common;

import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;
import org.testng.annotations.AfterSuite;

public class ExtentReport {
    public static ExtentReports extentReports;
    protected static ExtentTest extentTest;

    public static ExtentReports getExtentReport() {
        if (extentReports == null){
            extentReports = new ExtentReports(System.getProperty("user.dir") +"/ExtentReport/index.html", true);
        }
        return extentReports;
    }

    public static ExtentTest getExtentTest(String testName) {
        if (extentReports == null) {
            getExtentReport();
        };
        if (extentTest == null){
            extentTest = extentReports.startTest(testName);
            extentTest.log(LogStatus.INFO, testName + " configureation started");
        }
        return extentTest;
    }

    @AfterSuite
    public void endSuite(){
        ExtentReport.getExtentReport().close();
    }
}

and implementation is extremely simple:

ExtentReport.getExtentTest(getClass().getSimpleName()).log(LogStatus.INFO, "Run test for " + className);

This is how it looks like:

After that I tried to research if there are any ready to go plugins or examples about how to make reports in Gherkin-like format. I easily found one, but that was working with no problems only with Eclipse. Here is an example – (https://automationissues.wordpress.com/2017/09/29/cucumber-extent-reporting/):

Continue reading

Standard
Java, NoSQL, SQL, REST API and other scary words, QA (eng)

Cucumber Again. From Requirements to Java Test

So, this is another one article abut cucumber, but I’ll try to describe SDLC methodology. If you skipped posts about correct Gherkin/Cucumber format , please have a look here: Cucumber — bridge or another one abyss between BA and QA

If you would like to try Java+Cucumber, please, have a look here: Create a Cucumber Project by Integrating maven-cucumber-selenium-eclipse

Feature File Naming Convention

But if you would like to get a overview on a process, please, continue reading. As every educated Analysts, as a result of our work, we got a list of requirements. We know that we could have functional and non-functional requirements.  This is my typical workflow to deliver requirement to QAs:

  1. Usually I’m starting my IT Projects with Vision document where I got User Stories as a key entity,
  2. I’m doing idealization via Use Cases.
  3. QA adding extra details for my Use Case steps. In general – they are adding steps to add data like “qweqweqwe” in date and number fields and all that kind of negative testing.

If we would like to test particular requirement, then you are:

  1. Searching for a User Story
  2. Searching for a related Use Cases (via matrix, if I already spent some time to create and maintain it)
  3. Searching for a Test Cases, related to this Use Cases
  4. Open Eclipse, configure TestNG xml file to run required test.
  5. Run selected tests

So, it would be great to find one particular Use Case and run it from the one place, without tons of Word document (+ xls tables as an option). The problem is – Cucumber  is not about User Stories, Use Cases, etc. Let’s answer couple important questions:

  1. What is the difference between Use Cases and Features? Features are descriptions of high-level product functionality. We then derive one or more use cases from each feature.
  2. What is the difference between Feature and User Story? A user story can be a specific justification for a feature, or a specific way to do it. Or it could be a totally different thing, like, for exampleUser story: as a customer, I want to pay with the most popular credits cards. While Feature: support the GOV-TAX-02 XML API of the government.

I would place User story and Feature at the same detail level, but the problem is: User Story is way  too long for the Cucumber Feature. Why? Because Cucumber Feature is a simple text file, while Feature Name is a name of this file! This looks nice on the different demo, where teachers got “MyFeature1” and “MyFeature2”, but in fact,  we should split feature files into groups via packaging, otherwise this will be a disaster.But anyway, we will not be able to put all these “As a User”, so, here is the key thing why they got features, because if we are using User Stories, we got space only for ” < some goal >” from “As a < type of user >, I want < some goal > so that < some reason >”.

There is also another one method we could use – add requirement number, this will extremely help us to support consistency and traceability. Continue reading

Standard
Java, NoSQL, SQL, REST API and other scary words, QA (eng)

Udemy “Requirements from idea to implementation. BA and SA guide” course announcement

Here is my new Udemy “Requirements from idea to implementation. BA and SA guide” course . 86 lectures with examples and templates, etc. Will be available in January 2018.


I started my career in 2008 as a Business Analyst. Since then I worked as a Business Analyst, Systems Analyst, Product Owner. I worked in custom development projects (for example I made Federal State Statistics Unit Warehouse and Portal) and I worked with products (Case Management System, Customer Relationship Management Systems, etc), so this course is a overview of technologies, practices and tips I used during my career.

I also got couple other Udemy courses, more then 15 articles and some on-site and online courses. This course build accordingly problems I saw during educational process and I really tried to highlight that (especially you will hear a lot of “concentrate on a problem first” tips).

So, to build this course, we had a group of 10 BA-SA volunteers and we started with usual problems BA-SA got, set a course structure you can hear in introduction and wrote something like a 600 pages book, which you will find at the end of the course as a downloadable PDF attachment. This is a base information for the theoretical part. We also researched templates, prepared a set of our favorites and you’ll be able to download these documents templates. Then we made a practice section based on example from one of my practical online course I made at the end of summer 2017 (you’ll get PDF practice examples as well, but they are not 100% done because we would like to show you a process of creating requirements).

Please note that we analyzed more then 900 web sites to combine all necessary theory for you (all these hyperlinks available at the second PDF file with theory).

I really hope you will enjoy this course and please let me know if you would like to learn some more or would me to add some clarifications.

Thank you!


 

Standard
Java, NoSQL, SQL, REST API and other scary words, QA (eng)

Free on-line course “Practices for Systems Analysts to Write Implementation Tasks”

Free on-line course «Practices for Systems Analysts to Write Implementation Tasks»
https://www.udemy.com/sa-implementation-tasks/

This course will tell you how to write proper tasks for your developers, if you got any UI with set of fields.

What you will leard from it?
• How to write tasks for developers (UI with fields, grids, buttons)
• What is the high level difference between SQl and NoSQL
• How REST API works

Standard
Java, NoSQL, SQL, REST API and other scary words, QA (eng)

Cucumber – bridge or another one abyss between BA and QA

Cucumber Introduction:

Cucumber is a tool based on Behavior Driven Development (BDD) framework which is used to write acceptance tests for web application. It allows automation of functional validation in easily readable and understandable format (like plain English) to Business Analysts, Developers, Testers, etc.

Cucumber feature files can serve as a good document for all. There are many other tools like JBehave which also support BDD framework. Initially Cucumber was implemented in Ruby and then extended to Java framework. Both the tools support native JUnit.

Behavior Driven Development is extension of Test Driven Development and it is used to test the system rather than testing the particular piece of code. We will discuss more about the BDD and style of writing BDD tests.

Cucumber could be used along with Selenium and Java and this is more than enough to make me happy.

Cucumber Basics:

In order to understand cucumber we need to know all the features of cucumber and its usage.

#1) Feature Files:

Feature files are essential part of cucumber which is used to write test automation steps or acceptance tests. This can be used as live document. The steps are the application specification. All the feature files ends with .feature extension.

Sample feature file:

Feature: Login Functionality Feature
In order to ensure Login Functionality works,
I want to run the cucumber test to verify it is working
Scenario: Login Functionality
Given user navigates to SOFTWARETETINGHELP.COM
When user logs in using Username as “USER” and Password “PASSWORD”
Then login should be successful
Scenario: Login Functionality
Given user navigates to SOFTWARETETINGHELP.COM
When user logs in using Username as “USER1” and Password “PASSWORD1”
Then error message should be thrown

Continue reading

Standard
Java, NoSQL, SQL, REST API and other scary words

Best Practice to display image on a page

Let’s start with something simple – there are three universally supported image formats: GIF, PNG, and JPEG. In addition to these formats, some browsers also support newer formats such as WebP and JPEG XR, which offer better overall compression and more features. So, which format should you use?

1

At first – we should do a good work with images itself (this part is so boring, so, I’ll just provide a short list of recommendations):

  • Sizing. Developers / designers – make sure the images you deliver perfectly fit their required website dimensions. Even if the same image should be made into different sized thumbnails to fit different pages, it’s well worth creating all these different thumbnails rather than deliver a large image and rely on the browser to resize it.
  • Quality. don’t be afraid to experiment with lower JPEG quality levels. For certain websites we found that using a 50% JPEG quality yielded a very reasonable result.
  • Correct Format.Once again, PNG should be used for computer generated images (charts, logos, etc.), JPEG when you are showing a captured photograph.Notice that despite the common belief, PNG will outperform GIF in almost every other aspect.
  • Use compression tools
  • Useless data. Make sure you strip the meta-data off your images and user uploaded photos
  • Using images when CSS3 can be used. This one point is more interesting, but still, we are far away from algorithms. Just make sure you use CSS3 whenever possible. If your graphics designer is responsible for the markup, make sure you ask for CSS3 based elements where it makes sense. This thing should go as a non-functional requirement.
  • Incorrect image cache settings. we highly recommend using aggressive caching for all your website images by setting your images HTTP ‘Expires’ header to as far in the future as possible.
  • Using a single image size across all delivery mediums. The solution is pretty simple – identify your visitors mobile devices and resolution using their user agent and optionally additional client-side Javascript code. With the correct resolution in hand, retrieve the best fitting image from your servers.

Delivering static icons one by one

Other than photos and thumbnails, your website most likely includes many icons (arrows, stars, signs, marks) and auxiliary images. Google’s search results page is comprised of over 80 (!) tiny icons.

A simple solution for this problem is to utilize a CSS Sprite, a single image that contains all your smaller icons. Your web page is modified to download this single image from your server and the page’s HTML uses alternative CSS class names to point to the smaller images within the larger one.

Now, instead of 80 images, Google’s visitors download just a single image. Their browser will quickly download and cache this single image from Google’s servers and all images will be immediately visible.

To be honest, would also highly recommend Font Awesome to be implemented at your page.

Continue reading

Standard
Java, NoSQL, SQL, REST API and other scary words

Rest Chat – Avatars, News Feed and State Machine

So, as a next step I decided to implement Avatars, News Feed and State Machine.

Avatars

That was pretty simple to add avatars – add module which will handle image upload/cropping for future upload to the DB Avatar field. I found couple modules to add, but they are not 100% working:

  1. https://github.com/andyshora/angular-image-crop Zoom is not working for chrome 57.0 and angularjs 1.4.8
  2. https://github.com/allenRoyston/ngCroppie is not working at all (I made a bug – https://github.com/allenRoyston/ngCroppie/issues/32).
  3. etc

So, finally I found ngImgCrop module for this purpose.

State Machine

I used classic state machine to handle friendship statuses (and errors), so, I draw a pretty simple scheme with transitions and after that – excel file with description of every transition (including errors handling with proper messages). You will never see this error messages unless you would like to modify existing RESR URLs to try to approve friendship of some unknown user and etc.

Cause this is a pretty simple and well known area – here is some theoretical description and implementation of the state machine:

2017-05-18_12-58-04

code snapshot:

case "Restore Subscription":
 switch (relationFriend){
 case 0: errorExists = 1;errorText = "There is no ignored friend. "; break;
 case 1: errorExists = 1;errorText = "There is no ignored friend. "; break;
 case 10: errorExists = 1;errorText = "There is no ignored friend. "; break;
 case 11: errorExists = 1;errorText = "There is no ignored friend. "; break;
 case 12: errorExists = 1;errorText = "There is no ignored friend. "; break;
 case 20: errorExists = 1;errorText = "There is no ignored friend. "; break;
 case 21: errorExists = 1;errorText = "There is no ignored friend. "; break;
 case 22: errorExists = 1;errorText = "There is no ignored friend. "; break;
 case 23: errorExists = 1;errorText = "There is no ignored friend. "; break;
 case 30: newRelationFriend=21; break;
 } break;
 case "Unsubscribe":

News Feed

In fact, news feed is a somewhat like a messaging, but with the different security and CQL statement of course. Therefore, new requirements for the New Feed are:

  1. Add News Feed item
  2. Edit News Feed item
  3. Delete News Feed item
  4. Add subscription
  5. Delete subscription
  6. Hide News Feed item from everybody
  7. Show News Feed item for friends only
  8. Show News Feed item for everybody
  9. Select favorite authors

I don’t want to make a full description for each requirement and don’t want to describe User Stories because I’m a Facebook user and requirements on this level are pretty obvious and straight forward. I skipped some of these requirements during implementation and will implement them during some of the next iterations.

Let me describe my current database structure (I used draw.io for that):

unnamed

Let me introduce DB changes:

1)  Introduce new object to store News Feed items

2) Add fields to store avatars

So, as a result I got this demo video and a bunch of items for the next version at my backlog.

Standard
Java, NoSQL, SQL, REST API and other scary words

Cassandra Datastax and Java – best way to set up connection

I’ll research the best way to make a connection from my Java to Cassandra here. There are a lot of examples how to do that, but the main thing, but I’m developing some kind of chat application on my localhost (will do single insert/update statements, etc.) when all this Spark examples are perfect for analytical workflows.

The first one example is Spark 1.6:

public static JavaSparkContext getCassandraConnector(){
         SparkConf conf = new SparkConf();
         conf.setAppName("Chat");
         conf.set("spark.driver.allowMultipleContexts", "true");
         conf.set("spark.cassandra.connection.host", "127.0.0.1");
         conf.set("spark.rpc.netty.dispatcher.numThreads","2");
         conf.setMaster("local[2]");

         JavaSparkContext sc = new JavaSparkContext(conf);
         return sc;
    }

So, I also got an example for Spark 2.x where the builder will automatically reuse an existing SparkContext if one exists and create a SparkContext if it does not exist. Configuration options set in the builder are automatically propagated over to Spark and Hadoop during I/O. Continue reading

Standard
QA (eng)

Test Suite Report Builder Comparison

Here is a short comparison of for most popular ways to build test report for TestNG + Java framework (with comparison table in the end of the post).

Log4J

This is a pretty simple logger which throws test suite execution to the Windows Console, Eclipse Console and text file.

There is no screenshot capturing or easy navigation between multiple suites, so, this is just a huge text file.

1 Continue reading

Standard
QA (eng)

Test Framework (Java, TestNG, ANT, etc)

Introduction to Automation testing:

Testing is an essential part of a software development process. While testing intermediate versions of products/projects being developed, testing team needs to execute a number of test cases. In addition, prior to release every new version, it is mandatory that the version passed through a set of “regression” and “smoke” tests. Most of all such tests are standard for every new version of product/project, and therefore can be automated in order to save human resources and time for executing them.

Benefits of using automated testing are the following:

  • Reduction of tests’ time execution and human resources required
  • Complete control over the tests’ results (“actual results” vs “expected results”)
  • Possibility to quickly change test’s preconditions and input data, and re-run the tests dynamically with multiple sets of data

Automation workflow for the application can be presented as follows:

  • First of all it is required to identify tasks that an application has to accomplish.
  • Second, a set of necessary input data has to be created.
  • Third, expected results have to be defined in order one can judge that an application (a requested feature) works correspondingly.
  • Fourth, Executes a test.
  • Finally, Compares expected results with actual results, and decides whether the test has been passed successfully.

Goal:

The goal of this framework is to create a flexible and extendable automated testing framework, which should expand test coverage for as many solutions as possible. Framework must have input and output channels and library of methods to work with UI.

Environment Specifications:

  • Selenium Webdriver. Selenium is a suite of tools for cross-platform automated testing of web applications. It runs on many browsers and operating systems and can be controlled by many programming languages and testing frameworks. Selenium WebDriver is a functional automation tool to automate the applications. It makes direct calls to the browser using each native support for automation.
  • Eclipse IDE. Eclipse is an integrated development environment (IDE) used in computer programming, and is the most widely used Java IDE. It contains a base workspace and an extensible plug-in system for customizing the environment. Eclipse is written mostly in Java and its primary use is for developing Java applications.
  • Java.
  • TestNG. Is a testing framework inspired from JUnit and NUnit. It has extended new functionalities, which made it more powerful and easier than the other testing frameworks. It supports ReportNG (simple HTML reporting plug-in) and XLST (Graphical / Pictorial reports) plug-ins to customize or extend the default TestNG reporting style. TestNG also provides ability to implement ‘IReporter’ an interface which can be implemented to generate a Customized TestNG report by users. It has ‘generateReport()’ method which will be invoked after all the suite has completed its execution and gives the report into the specified output directory.
  • Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications.
  • AutoIT Tool used to handle Windows popups for Document Uploads and Downloads.
  • Apache POI to perform operations with excel like read, write and update the excel sheet
  • Webdriver is a driver that contains programming interface for controlling all kinds of possible actions in browser.
  • Selenium TakesScreenshot to take screenshot in case of error.
  • Log4j is a reliable, fast and flexible logging framework (APIs) written in Java, which is distributed under the Apache Software License.
  • JDBC. Java Database Connectivity (JDBC) is an application programming interface (API) for the programming language Java, which defines how a client may access a database. It is part of the Java Standard Edition platform, from Oracle Corporation.

Continue reading

Standard
QA (eng)

Test Suites for Simple Chat Application (REST API)

Introduction

This is a framework with test suites which allows me to test my Simple Chat Application UI in 5 minutes.

test app

I could provide bitbucket project access upon request and this is a link to original chat application.

Short Demo

Architecure

  • TestNG and Java
  • Webdriver is a main test library
  • JDBC to work with DB (clean up test data)
  • ANT to display test results
  • Test Suites and data stores as xls files and their status updates with every run
  • Easy to use with Jenkins

Framework example to begin with

Step by step instruction how to create framework

Standard
Java, NoSQL, SQL, REST API and other scary words

Simple Chat Application (REST API)

Introduction

This is a simple restfull chat application to send messages between friends. Key features:

  • Register to the System
  • Login
  • Send/Approve Friendship Request
  • View friends list
  • Ignore User
  • Send Message
  • Delete account Minor features:
  • Auto update messages and friends lists
  • Security by Token

Link to the project upon request.

Short Demo

Continue reading

Standard
Project management (rus)

Путь

Тут у меня будет одна скромная просьба – выделить на этот рассказ 5 минут и прочитать его до конца, либо не начинать читать вообще (только потратите время и даже не поймёте о чем я).

Итак, чаще всего в жизни вам приходиться выбирать (нет, я не рассматриваю банальщину в виде дыхания и т.п.). Осознанно, неосознанно, на скорую руку, посовещавшись или упрямо стоя на своём, несмотря ни на что, вы всё время делаете выбор. Иногда выбираете просто, где разместить поле на форме, а иногда вы выбираете его – Путь. Про поле на форме я с радостью расскажу на каком-нибудь очередном практикуме, а я сейчас расскажу про Путь.

При выборе определённого жизненного пути вы должны помнить одну штуку: путь в ответ тоже выбирает вас. Или не выбирает… В зависимости от этой взаимности вы потом и будете по нему идти. Если Путь вас не выбрал, то будет это тяжело, мучительно, натужно и, наверняка, с сожалениями потом о том, что вы по нему пошли. А если он выбрал вас, то конечно же будет трудно, но вспоминать потом о нём вы будете с теплом где-то в глубине своей души, если, конечно, не бросите его. Бросить захочется, наверняка; даже путь праздности, роскоши и богатства некоторым надоедает, так что уж о наших аналитческо-тестировочных путях говорить? И Путь будет вам мстить, знайте об этом, если вы его не пройдёте до конца. Если причина покажется ему весомой, то он просто заложит в вашу душу уголёк сожаления, который будет тлеть там всегда, то затухая, то разгораясь, но увы, никогда не погаснет совсем. Путь вас может даже убить. В автомобильной аварии, после очередного дедлайна и пятой ночи без сна.

И не важно, выбрали ли вы Путь Аналитика (нет, тут речь не одноименной книге, 2/3 которой я считаю откровенно слабой), или какой другой: пройдите его обязательно до конца или, хотя бы до ближайшей логичной развилки.

Если рассмотреть это жизненно и с практической точки зрения, вот когда вы делаете демонстрацию заказчику и начинается: “сейчас мы покажем данные о сделке, ой, не, не, не покажем. Сейчас покажем контрагента наверное.” Это что за демонстрация такая с элементами внезапности и неопределённости по середине выверенного процесса? Что это за – “отчёт строится, ой нет бля не строится, это же долго”. Так же и ваш выбранный Путь – ждёт от вас последовательности и логичности.

А раз уж я перешел на аналогии, то я попробую обосновать выбор Пути на гипертрофированном примере командира атомной подводной лодки. Да, я не подводник и даже не знаю, как правильно погладить гюйс, но я постараюсь до вас донести одну довольно простую мою жизненную концепцию.

Сразу предвосхищу вопрос – почему именно о нем? Я принципиально не хочу писать здесь о своей семье и их влиянии на меня и мою карьеру. Скажу только, что мой дедушка был офицером ВМФ СССР и он очень любил смотреть фильмы и новостные материалы про флот. Так я и узнал об Александре Сергеевиче Богачеве (а сегодня о нем узнаете и вы) и его имя прочно ассоциируется для меня со словами Долг, Честь и Верность, не из-за красивых слов, а потому что он всегда с достоинством шёл по выбранному им Пути, как и теперь пытаюсь сделать я в банальной и скучной аналитической жизни. То была середина 90-х, самое поганое время, если вы помните, я тогда в школу ходил, но и то немного помню. Никаких ориентиров, никаких моральных принципов – воруй, бей, еби гусей сплошное. Нормальные люди в 1996 уже давно водкой торговали или проститутками вдоль дороги, но никак не в армии на боевом корабле служили.

Если кто помнит фильм на НТВ “Русская акула” про автономный поход подводной лодки – это прям про него. Экипаж прям умоляли все сходить в эту автономку, так надо было показать всему миру, что России не пиздец, хотя ей был тогда пиздец был полный, что вот ребятанавассмотритвсястрана и всё прочее. Догадываюсь, что похрену было стране на них, но Александр Сергеевич принял решение выполнить поставленную задачу, чего бы ему это ни стоило. В той автономке экипаж впервые в истории человечества на планете Земля запустили баллистическую ракету из района Северного Полюса. По возвращении Александра Сергеевича представили к званию Героя Российской Федерации, но звезду получил не он, а начальник штаба флотилии, который выходил с ними на месяц старшим на борту.

Я когда боюсь какого то важного доклада или совещания, всегда думаю об этом – лёд 3 метра, глубина 7 метров. 3 месяца небось нервы как струны гитары, 250 или сколько там жизней от тебя зависит. А я всего на пол миллиона максимум напотрачу. Так как же надо так любить и своё дело и верить в свой Путь? Это же не за айфоны и поездки на курорт – они же там зарплату месяцами не получали, на сколько я читал.

В фильме “Русская Акула”, показана его квартира такой, какой она была всегда. Если честно, то мне сейчас и от вида его подъезда уже жутковато. Но он жил кораблём и своим экипажем и мне даже трудно понять тот груз ответственности, который лежал тогда на его плечах, и тот багаж знаний, который был в его голове.

В 1997 году его экипаж дважды стрелял полным боекомплектом ракет с целью их утилизации методом подрыва в воздухе. Я не знаю, понимаете ли вы, насколько это сложная и опасная задача – стрелять из подводного положения баллистическими ракетами, у которых не то что срок эксплуатации, а срок хранения на складах истёк! В интернете эти ролики тоже можно найти, тогда с ними ходили суда сопровождения с американскими наблюдателями на борту. Флагманский ракетчик дивизии Акул (я не моряк, даже часть не назову по памяти), который тоже с ними ходил наблюдателем, рассказывал, что сначала американцы спорили чуть ли не на полуостров Аляска, что ничего не выйдет и только зря погубят людей и корабль, а потом плакали, когда ракеты, одна за одной выходили из-под воды.
– Отчего плакали-то? – спрашивал Командир, – Аляску жалели?
– Нет, Саша! Они плакали и хлопали в ладоши, а потом трясли нам руки и говорили, что это же, блядь, какая гордость быть свидетелями такого подвига, доблести, отваги, выучки и умения русских моряков! Вы же герои, Саша, понимаешь? Ты же герой, Саша! Я, блядь, уверен!

Александра Сергеевича, который осуществил два таких пуска и сэкономил стране сумму денег, равную хрензнаетсколько долларов США минимум, представили второй раз к званию Героя РФ. И все были уверены, что уж сейчас-то точно дадут, ну! Но не дали. Дали орден “За Заслуги перед Отечеством” 4 степени. Поправьте меня, если я ошибаюсь, но даже у Пугачёвой с Леонтьевым ордена высшей степени, чем у Александра Сергеевича.

Но и это его не сломало! Он же не за награды служил, а потому что это был его Путь, который он сам выбрал.

Атомная подлодка к 2005 уже стояла на мёртвом приколе (а я уже учился в университете), а в 2013 у него обнаружили злокачественную опухоль, её удалили, и он проходил курсы химиотерапии, но потом у него обнаружили тромб, удалили его. Лечение требовало корректировки и консультаций с зарубежными врачами, так что собирали ему деньги в интернете всем миром, кто сколько мог на лечение в Израиле. 15 февраля 2015 года Александр Сергеевич ушёл из жизни не дожив даже до 60 лет.

Это был Командир самого ходового корабля 941 проекта (самая большая подлодка в мире высотой с 9-этажный дом и два футбольных поля в длину, внесена в книгу рекордов Гинесса), который первый в мире стрельнул ракетой с восемьдесят восьмой широты и которому, на секундочку задумайтесь, принадлежит мировой рекорд по количеству осуществлённых пусков баллистических ракет.Он не заработал ни денег, ни славы, ни сытой жизни, ни здоровья, но пример, который он показал тогда, пример Человека, верного своему выбранному Пути, я думаю дорогого стоит.

Александр Сергеевич похоронен на городском кладбище города Подольск. И один раз в году вы там обнаружите группы суровых мужчин, тихо говорящих друг с другом, пьющих водку и плачущих. Мне наверное напишут в месенджерах, что мужики вообще-то не плачут, но это говорит о том, что вы не поняли сути рассказа. Тут я, как аналитик, могу увидеть причину только в том, что мой рассказ получился сбивчивым и я не полностью раскрыл смысл выбора Пути и следования ему по жизни не взирая на трудности.

К чему всё это написал? Просто меня часто спрашивают – зачем я делюсь опытом, помогаю другим, занимаюсь благотворительностью и т.д. Так вот, я просто выбрал свой скромный (крайне скромный на фоне описанного выше) жизненный Путь Аналитика и стараюсь пройти по нему как можно более достойно, по мере моих сил и возможностей.

Standard
Java, NoSQL, SQL, REST API and other scary words

Business and Systems Analysts Guided Training

Hello everybody! My name is Alexey Kiselev and I’m a Head of a Systems Analysts Department with 10+ years of experience. I did multiple courses (something about 15), video courses like this one from Udemy with more than 2500 students from 120 countries, my last Russian language course attended by 280 students, I also got a blog with more than 100 000 views (this one).

I started my career in 2008 as a Business Analyst, since 2013 I’m mostly playing a Systems Analyst’s role. I built couple asset management system for oil corporations, government statistic storage, amount of different Case Management solutions, improved couple platforms for budgeting and Case Management, etc.

I received more than 30 requests to repeat the training I made in Russian in 2017, so I decided to repeat it but for 6 students only.

Why do we need it in general?

My main aim is to give you an opportunity to partially complete real application requirements from idea to implementation. No long lectures, tasks and challenges only under my control and with my help (ok, my useful hyperlinks). More performance – more results.

What are we going to do?

Oh, this is obvious – we are going to study. A lot.

  • We will find a problem, we will try to solve it via our small application.
  • To create our small application – we will do a full vision with a couple of supportive diagrams like Context Diagram.
  • Then we will do a use case steps scenarios for one of the user stories defined in vision.
  • Fix non-functional requirements.
  • Do a database model.
  • Create a task for developers to implement one user interface.

It will be no customer – only year ideas and my skeptical view. Do not expect a lot of pure BPMN and UML because I’m a bit tired of them and analysis is mostly about your brain and analysis skills and techniques – not about just a diagram. I wish we could do an implementation and testing, but I believe we will have no enough developers in our group.

How we are going to do that?

I’ll provide a at least 2 feedback sessions for all of your documents. This is not a boring theoretical course (if you need a boring one – you’ll get an access to this one available on click on this hyperlink). My feedback available in Telegram text form 8 am – 3 pm weekly and 4 pm – 8 pm weekly via Telegram or Skype conference. My time zone is PST.

What you’ll receive at the end of the training?

My respect and reference via Linkedin. Why respect? Because it seem ok to me to remove people from group with no refund if they are not actively working for any reason (if you got intensive project at work – please do not apply). You’ll also get a free certificate from the Udemy.

Who’ll find this training useful?

It seem to me that 1-5 years of experience will be best to fit course entry requirements. All you need is a theoretical base.

What is the length of the course?

Depends on your performance. i would expect 1-2 months.

When are we going to start?

I believe we should start in March.

How it is possible to become a student?

Just apply via google form whenever it’ll be available. I’ll got 6 spots there only..

Approximate Schedule

# Task Days allocated
1 Problem Solving 5
1.1 Find at least 5 interesting problems you are able to solve with a small application 3
1.2 Analyze Problem (ishikawa diagram) 2
2 Vision 10
2.1 Problem Description 2
2.2 Stakeholders 2
2.3 Goals 2
2.4 Features (User Stories) 2
2.5 Context Diagram 2
3 Use Case 21
3.1 Use Case Diagram or Traceability Matrix 5
3.2 Use Case Description 10
3.3 Non-Functional Requirements 2
3.4 ER-model 4
4 Implementation Task 18
4.1 Database description 7
4.2 UI Prototype 3
4.3 UI Description 5
4.4 REST API description attempt 3

 

Standard