Relatively recently, I got a new hobby – I started doing a pet product. I’m not sure that everyone will want to immerse themselves in this matter, but I was so fascinated that I dedicate almost all my free time to my own pet project.
At once I want to tell that the purpose of article – not a sale of my services or ready development. I won’t even describe the code review tool in detail. I just want to tell you how and what I did, what I achieved as a result. I am sure that there will definitely be readers who will find my experience not only interesting but also useful.
Speaking of the first step, I believe that it was a decision to facilitate my work by reducing time. In addition, I wanted to make complex and routine work at least a little more enjoyable. But about everything in order.
During the last eight years of working in the field of programming, I mostly studied the already created code, but I did not write much.
This is the main specificity of corporate decisions. Even considering that this approach is not new and perfect, it is the main one. If we talk about the difficulties that arise, they are not related to individual algorithms. The problem is the large number of components and the connections between them – at a certain stage of work it becomes simply impossible to remember and take them all into account.
Adding to the complexity is the fact that you need to spend time and effort not only directly on the design and development of new functionality, but also on component ownership. Full mastery of the code requires a huge amount of work:
If you try to name all the specified volume of permanent work in one word, it is a code review.
Personally, my code review took up at least a quarter of my working time. An available tool for this tedious and uninteresting job is git diff. Of course, I am aware of the existence of visualizations of this tool, and even actively used SourceTree and GitHub pull requests. But it didn’t change much, the obligatory companions of my usual working day were dozens of tabs in the browser, IDE with a couple of projects, endless canvases of diffs… Given that I really love my job, this forced everyday life turned it into a real horror .
Somewhere subconsciously, I realized that I was not alone in this nightmare, and my colleagues have similar experiences. However, honestly, my reasoning was quite selfish – I wanted to reduce both time and the number of unpleasant moments at work. In addition, most importantly – I sincerely believed that another scenario is quite possible.
It would be too much to look for a difficult way to solve a difficult problem. So first, I decided to just optimize my daily work. I decided to abandon the full understanding of the code immediately – this is an impossible task. Instead, I set about creating a list of simple tasks that shape my daily workflow.
Confirmation of merges
If we move to professional terminology, we are talking about pull / merge requests and their code review. Most colleagues do not see a problem in this matter – everything is simple, fast and without hassle.
However, I have a completely different view of the situation here. For example, in systems consisting of 70 deployment units and tens of thousands of lines of code, it is not so easy to break a new feature into fragments suitable for viewing before the release of the full release. Therefore, even a basic review of changes already takes both effort and time. At the same time killing inspiration.
Another point – there were cases when the necessary component was made by four neighboring teams. In such a situation, it is not so easy to find exactly what has changed, even if it is a small decision. And the time spent on it is really huge.
Analysis of changes for QA
In the course of work it is necessary to check regularly both corrections, and a new feature. In theory, this is simple, but in practice, tickets do not always have the right amount of data. Therefore, finding the installed jackdaw in the test version can also be an interesting lesson for hours.
And if the changes are not logically related to the feature, it will be even harder to find them. This happens when making changes to the so-called kernel of the system. Or when the component affected by the direct changes is involved in two or more places.
In addition, regression constipation after changes is not excluded, and first of all it is important to understand two things:
Developers can answer these questions faster, because they know all the components of the system like no other.
The main task of programmers is the direct implementation of a technical solution. Therefore, they rarely focus on details and do not take into account that the release contains a certain number of components. Therefore, it is important to consider their sequence and configuration updates. It is also important to plan what you need to include in the next release. However, release notes collected on tickets in JIRA do not have this information.
Therefore, each release, for me personally, was accompanied by a diff between development and a stable branch. That is, we had to process the results for many weeks, or even months.
All of these actions are repetitive and interrelated. It really took a lot of time and effort. That is why I continued to look for ways to solve the problem.
Move in the right direction
Having the time and desire to finally find a solution to my problem, I came to the first hypothesis. My goal was to find a system that did not show a code comparison, but data related to the changed components.
For myself, I saw it something like this:
The result – two weeks were spent creating a presentation of 27 slides, which clearly demonstrated the genius of my idea. Yes, I was sure she was a genius.
Search for support
There are people among my acquaintances who have been able to look at my hypothesis objectively and give sound advice. Therefore, I started sharing the idea with them. They did not manage to cause admiration; rather there were neutral responses, which did not bring me any result. Nevertheless, the problem was that I myself did not understand what I wanted to hear.
A good friend of mine, who has his own experience of creating a successful product, helped to break the deadlock. So, he advised me to give up most of my “brilliant idea” and leave only one function. It is to offer it to real customers. I listened to this advice and so only 2 of my 27 slides remained.
Another acquaintance advised reading Rob Fitzpatrick’s “Test for Mom.” And for now, I think these 140 pages are the best I’ve read about product development. I am infinitely grateful for this recommendation and I advise everyone.
This was followed by a friendly recommendation to get acquainted with Startup School from Y Combinator. In the last source, I found tips that helped not only learn something new, but also save a lot of time. Honestly, I didn’t even believe that I would get such a profound result.
Promotion of the idea
I chose LinkedIn to find clients. At that time, it was almost the only option for me. Because I was not ready to sell yet. I couldn’t even pinpoint whose problem my product could solve. I did not know who to expect approval of the purchase. All actions were quite chaotic, built on their own hypotheses.
Based on my own experience, I decided that my idea would not interest programmers. However, managers will definitely like it. To speed up the implementation of the plan, I activated premium access and began my search for CA in Sales Navigator.
Yes, now I can say for sure that choosing the categories of VP of Engineering, CTO or co-founder in a company of up to 50 people, I was wrong. Now, then I thought differently and did not know how LinkedIn works.
Many questions arose at the stage of addressing a potential client. It is certainly good to write to him about your ingenious product and to promise profitable cooperation. First you need to understand the problem of the person you are addressing. Otherwise, you only get ignored.
I found the answers to my most painful questions in the book “Test for Mom”. From there, I learned how to prepare for an interview and began preparing scripts for future dialogues. The first question I always had the opportunity to talk about developments in the company. Further questions depended on the peculiarities of the company’s activities.
And even this approach did not bring me many answers – about 5 reactions per 100 requests.
Now I know exactly why this happened, there are three main reasons:
My guess was confirmed when I changed the category to engineering and then to product manager. The programmers did not react either. In general, I made sure that Linkedin is a popular tool, but its effectiveness is very high. Therefore, I postponed working with him until better times.
I am confident that I consider this online training program the best in my field. And most people who have gone through it, believe that it is better not to teach startups anywhere. This is quite logical, because its author is Y Combinator, i.e. the coolest accelerator of startups.
Training in the program lasts 8-10 weeks:
While studying at Startup School, I actively worked on the idea. The elementary description has been edited several dozen times. For a long time I could not understand my main problem, but in the process I still achieved my goal. All you need to do is learn to explain your idea simply and easily, not only to fellow programmers, but also to people who have nothing to do with this field.
That is, the main idea of this startup school is to teach people to explain their idea as quickly and easily as possible. In fact, this skill is extremely important and will be needed constantly while you are working on the product.
In addition, this school is a great option to make new useful acquaintances. At least that’s what happened to me. Shortly after the program ended, I was contacted by a former “classmate” who showed interest in my project and inquired about progress. He was interested in doing business together, so he introduced me to another guy who was able to create a successful product. I can’t say that this chain was the beginning of something grand, but for me it was a sure step forward.
Even though I still didn’t understand who was part of my target audience and how to “reach” them, I had already moved from the deadlock.
The main advantage of this school of startups is that video lectures are recorded by specialists who lead the main program of the accelerator. It’s really incredibly useful, and now I’m going to try to prove it to everyone.
At first, I looked at the startup accelerator a little differently, at my own expense – $ 150k for 7% of the future company. But this is a completely wrong direction of thought, because I received much more.
I was immediately given access to potential investors.
After finishing the winter course, I applied for the summer set. The miracle didn’t happen and I didn’t pass, but the preparation itself brought a positive result – because I was really preparing. What is worth only recording a video, where in just 60 seconds you should advertise not only yourself but also the product.
In addition, in the process of creating a commercial, I was able to formulate important questions for myself, the answers to which helped in further work:
In fact, the number of questions in my head was much greater. I only shared some of them, highlighting the main ones. And from the height of my own experience, I can advise all beginners to fill out the form for submission to the Y Combinator – this action will definitely help you take a step in the right direction.
Popular startup parties
Any school of startups advises to do a multi-level start. That is, not just launch the product, but also inform the public about your work. Advertising should be launched as early as possible and louder – this is an important component of success.
The very first advertisement happens by itself – by communicating with friends and sharing your successes and failures, you already make your product famous. But this is not enough. To increase the circle of popularization, I would advise to take an active part in various startup parties. I was advised by platforms like Hacker News and Product Hunt. Unfortunately, I did not listen to this very wise thought in time, so do not repeat my mistakes.
Learn to make your expectations real – it is possible to get advice on creating a product. But the formation of the target audience and communication – this can be learned only by doing something for startups, such as Stripe or Unicorn Nest.
Creating a viable product
Another terrible mistake of mine is the decision to make a working decision, having serious problems with attracting the target audience. As a result, I spent a huge amount of time and could not move forward.
Now I will tell you how my decision to write code was formed. First of all, I am a programmer, and I considered the startup as another area of activity. Plus, I really appreciated my talents in the field of management – frankly mediocre. That’s why writing the code was a so-called “professional suitability” test for me. Everything turned out well here – during the time of testing myself as a startup, I did not forget how to program. My 12-year experience came in handy, which helps to work almost on a machine.
My first idea was to create a universal algorithm that would be useful to managers. But even for myself I could not formulate exact questions to which this algorithm would answer. For me, it was something between informing about adding a new key to the screen and warning about a new public API or database migration. As you can see, the questions are quite abstract.
But the most interesting thing started when I started visualizing my idea – it turned out that my promises from the presentations are almost impossible to realize. The reason was that the simplest algorithm for displaying architecture required so much time that I did not have.
At this point, I thought it was possible to translate the solution into open source. In this case, a certain percentage of functionality remained for my promising projects. This allowed me to create a basic structure that is a universal platform for any web project. Then I started working on the specific functionality of the product. The launch caused some difficulties at various stages – for example, I already mentioned how to deploy and maintain the infrastructure. But it was definitely useful for further work.
I got the following result:
In the process, I was surprised by many things, because before I just did not face it and did not understand many nuances. The fact that the product just needs a page that will introduce it, was almost a shocking discovery. I’m sure most of my readers didn’t make the simplest sites for their products either. But this is not right – information pages should be.
I started working on bugs and quickly made a simple page. This gave me the opportunity to understand that this is not enough – because the information about the finished product will be much more than can be placed on the newly created resource. I chose Hugo as the solution for the information site. In the future, I was able to add several marketing tools, the most important of which I consider analytics.
I advise everyone who is working to create a new product – pay enough attention to the information for the target audience, it will definitely facilitate all further work. Do not ignore the advice on the use of marketing tools – with them testing the idea and finding the right solutions will be much easier.
If someone had given me such advice a year and a half ago, I would probably have been able to avoid a huge number of mistakes. So I will try to help with recommendations based on my own experience. This will be useful for anyone who has already started or is just planning to work on their own product.
I will try to summarize very briefly everything that has been told for so long in this article. The main reason for stopping most startups – the product is not interesting to the audience, because it does not solve its problems. And all because the author is obsessed with solving his own problem, often – very overestimated. Therefore, first access to potential customers and find ways to increase their number, and only then work on the product.
That’s all, extremely grateful that you were interested in my article. In addition, I’ll just be incredibly happy if I could be useful.
If you need to order a project from third-party contractors in which there are no strict quality requirements, try working with contractors on the Functional Requirements. This plan will help you develop a web portal, beautiful and user-friendly design, create an article for a blog or a service. Thanks to the functional requirements, you will immediately specify your own wishes and avoid “mistakes”. Let’s take a closer look at what this work plan is, what are the subtleties of the nuances of its preparation.
The concept of testing implies a fully formed specialty in the IT industry, where there are relatively minimum requirements for starting, in comparison with other areas of development. A tester is an employee who is involved in testing digital products for performance, as well as finding bugs and improving quality.
Based on the results of Candidate Experience Research