Thanks everyone, we did it. We have collected
We all should feel a little bit happier because of that!
💙💛
611€ and 10.000UAH. These money are now on the way to be converted into the car.We all should feel a little bit happier because of that!
💙💛
❤32👍5👎3
👋,
As a saying goes — there is no better time to start than now. I considered reviving tech posts here in the next year, but then I thought — what blocks me from doing it already this year? So we start today. I want to write digest posts once a week, where I wrap up my last week and current thoughts.
As a saying goes — there is no better time to start than now. I considered reviving tech posts here in the next year, but then I thought — what blocks me from doing it already this year? So we start today. I want to write digest posts once a week, where I wrap up my last week and current thoughts.
👍24
GoodDevDigest #1
🔥 Layoffs
Many tech companies around the world were affected with the current market situation and SHARE NOW is not an exception. So it was announced, that we have to do restructuring, which also means letting people go.
But here starts the interesting part. We are in Germany and right before “the news” we, employees, had formed the works council, which is meant to represent us. Because of this, our management was not able to do layoffs on their will, but they had to negotiate conditions with the works council. And even more — the way they do these negotiations is forced by the law, including the sequence of the negotiation phases.
Another interesting topic — how people who were laid off were chosen. Massive layoff shall be based on the new vision — how company will function afterwards, in other words — restructuring. So it’s not that company fires certain people, but company removes certain positions. Then all the people who have this position (for example — Senior Java Engineer) are “sorted” by their social rating (number of years in the company, number of dependent people, disabilities, etc.) and one who has the “lowest” rating is a candidate to be removed.
At the end, our works council has negotiated good compensations for the people who will depart. I will not. I continue to work at SHARE NOW.
🤖 ChatGPT
I believe many people here have already heard about ChatGPT or even played with it. I want to share my personal “WOW”. Recently I had to find out how can I encode
Then I decided to ask ChatGTP about this for fun. And that thing has answered me with the code example. After few obvious tweaks that code has worked and solved my problem.
Will we all lose our jobs because of this? No. But this again proves that we need to learn new things to be competitive.
📈 Pipeline game
Many of us do CI. There are times when you join the project where it is already configured, there are times when you need to invent one.
In both cases it’s good to review what’s happening during the continuous integration and if it’s possible to optimize (speed it up). For this cases I want to recommend the Pipeline Game. It’s an online game where you have set of different steps, which you may have within your real pipeline, and your job is to design the ideal pipeline. You do it by placing the cards on the table — in parallel or sequentially. You can also add their execution time and see how long will it take for your project to pass this pipeline. It can be played online together with your colleagues.
⬛️ That was it. These were the things which were interesting for me recently. Next issue — next week.
🔥 Layoffs
Many tech companies around the world were affected with the current market situation and SHARE NOW is not an exception. So it was announced, that we have to do restructuring, which also means letting people go.
But here starts the interesting part. We are in Germany and right before “the news” we, employees, had formed the works council, which is meant to represent us. Because of this, our management was not able to do layoffs on their will, but they had to negotiate conditions with the works council. And even more — the way they do these negotiations is forced by the law, including the sequence of the negotiation phases.
Another interesting topic — how people who were laid off were chosen. Massive layoff shall be based on the new vision — how company will function afterwards, in other words — restructuring. So it’s not that company fires certain people, but company removes certain positions. Then all the people who have this position (for example — Senior Java Engineer) are “sorted” by their social rating (number of years in the company, number of dependent people, disabilities, etc.) and one who has the “lowest” rating is a candidate to be removed.
At the end, our works council has negotiated good compensations for the people who will depart. I will not. I continue to work at SHARE NOW.
🤖 ChatGPT
I believe many people here have already heard about ChatGPT or even played with it. I want to share my personal “WOW”. Recently I had to find out how can I encode
uuid to the BinData type 3 format, to inject it to the MongoDB document. I, together with my colleague, were doing a pair programming session and spend good 30 minutes trying to google that or derive this with our hands on experiments. No luck. Then I decided to ask ChatGTP about this for fun. And that thing has answered me with the code example. After few obvious tweaks that code has worked and solved my problem.
Will we all lose our jobs because of this? No. But this again proves that we need to learn new things to be competitive.
📈 Pipeline game
Many of us do CI. There are times when you join the project where it is already configured, there are times when you need to invent one.
In both cases it’s good to review what’s happening during the continuous integration and if it’s possible to optimize (speed it up). For this cases I want to recommend the Pipeline Game. It’s an online game where you have set of different steps, which you may have within your real pipeline, and your job is to design the ideal pipeline. You do it by placing the cards on the table — in parallel or sequentially. You can also add their execution time and see how long will it take for your project to pass this pipeline. It can be played online together with your colleagues.
⬛️ That was it. These were the things which were interesting for me recently. Next issue — next week.
👍35
GoodDevDigest #2
⚙️ New hardware
Finally, after a delay of several months, we've received a new hardware from the company. From now on, my work machine is a 16-inch MacBook Pro. I was looking forward to it most of all because of the annoying fan noise from the old machine, especially, when
🐈 Pet project
Next year I want to be back with pet projects. And, as we've already concluded, there is no reason to wait for the next year to happen — better to start now.
I'm planning to develop an app. So I chose something I had tried before — Expo and something what I had not — AWS Amplify. So far, I've experimented with Auth and I liked it. Within only ~2h I was able to add proper Auth, where customer can register, login, set custom property to their identity. Next step — add some API.
I will report on the progress in the next digests.
📚 Books
Started to read "Modern Software Engineering: Doing What Works to Build Better Software Faster". I did not progress a lot there, but here are couple of interesting thoughts.
* The author stresses out, that his goal is to put Engineering back to the Software Engineering. He claims that many people say that Software Engineering is very unique. It's so unique that it cannot be compared to bridge building or any other "real" engineering. However, he continues, same people do not know how the real bridge building process looks like.
* The author compares two terms — craft and engineering. When you are doing the craft — you design everything from scratch each time you start. And you receive cool custom products. But your products are unique, they differ from each other. So craft has limits — yes, you can create a chair, but how would you create 10.000 chairs? Engineering, in its way, allows us to scale. The products might be less "cool", but they will be replicable.
This correlates with the question that I ask often, when we argue about the solution. What will the newcomer think when they encounter this solution? Will they be able to grasp what's going on here quickly? We need to produce solutions that are easy to understand.
⬛️ That was it. These were the things which were interesting for me recently. Please, share, what are you reading right now?
⚙️ New hardware
Finally, after a delay of several months, we've received a new hardware from the company. From now on, my work machine is a 16-inch MacBook Pro. I was looking forward to it most of all because of the annoying fan noise from the old machine, especially, when
Docker was launched. Now I'm relieved, this machine is so quiet, that sometimes I wonder if it does anything or not because there is no acoustic feedback.🐈 Pet project
Next year I want to be back with pet projects. And, as we've already concluded, there is no reason to wait for the next year to happen — better to start now.
I'm planning to develop an app. So I chose something I had tried before — Expo and something what I had not — AWS Amplify. So far, I've experimented with Auth and I liked it. Within only ~2h I was able to add proper Auth, where customer can register, login, set custom property to their identity. Next step — add some API.
I will report on the progress in the next digests.
📚 Books
Started to read "Modern Software Engineering: Doing What Works to Build Better Software Faster". I did not progress a lot there, but here are couple of interesting thoughts.
* The author stresses out, that his goal is to put Engineering back to the Software Engineering. He claims that many people say that Software Engineering is very unique. It's so unique that it cannot be compared to bridge building or any other "real" engineering. However, he continues, same people do not know how the real bridge building process looks like.
* The author compares two terms — craft and engineering. When you are doing the craft — you design everything from scratch each time you start. And you receive cool custom products. But your products are unique, they differ from each other. So craft has limits — yes, you can create a chair, but how would you create 10.000 chairs? Engineering, in its way, allows us to scale. The products might be less "cool", but they will be replicable.
This correlates with the question that I ask often, when we argue about the solution. What will the newcomer think when they encounter this solution? Will they be able to grasp what's going on here quickly? We need to produce solutions that are easy to understand.
⬛️ That was it. These were the things which were interesting for me recently. Please, share, what are you reading right now?
❤14👍10
GoodDevDigest 2022 recap edition
Last year I had my Christmas vacation, so I don't really have something to share with you. I decided to recap on the important things from 2022.
❤️ Attachment theory
Last year I've learned about the Attachment theory. And, namely, that there are three attachment styles in the relationships — secure, avoidant and anxious. I have the third type, it's neither good or bad, but this has helped me to understand myself better.
People with anxious attachment style are used to better notice any small changes in the behavior of other people (and then make theories about the reasons of such behavior). While this is a useful skill, it's important to understand, that this skill is something we have developed in our childhood as a coping mechanism, to feel ourselves more secure. And, when we are grown up, we may want to use it differently.
Does this apply to you?
📔 Journaling
Since 18th of October, I start my day with 8 minutes of journaling. First I notice what has made me happy yesterday and then just write whatever is on my mind — good or bad, doubt or proud. I do it with pen and paper and I enjoy the process.
It's scientifically proven (random article, but it is), that journaling is good for your mental health. I think this helps me to cope with everything what's going on these days.
🎥 Best film 2022
Everything Everywhere All at Once is a masterpiece, the best movie I've discovered in 2022. This movie has so many layers that you can watch it with any purpose — entertainment, science fiction, philosophical. It's fascinating, how parent child relationship problem was presented in the movie ❤️🩹
👖Uniqlo
~5 years ago, I and my wife were in some museum in Milan. And they were giving out basic t-shirts as a gift for visiting the museum. I opened that t-shirt after several years and loved it. It was thin, nice to the body, it stayed the same after the washing. I learned, that it was produced by Uniqlo, but I never did anything about it.
This year I decided to buy more of such t-shirts and also to try their basic joggers and a hoodie, to improve my home outfit. It was a match. Best home suit ever and I want to buy the second one. Unfortunately, hoodies are out of stock now, but I am waiting for the restocking.
If you want to feel comfort on your body — try Uniqlo.
⬛️ That was it. 2022 was a difficult year, I will do everything to make 2023 better and wish the same to you. What's your favorite movie from the last year?
Last year I had my Christmas vacation, so I don't really have something to share with you. I decided to recap on the important things from 2022.
❤️ Attachment theory
Last year I've learned about the Attachment theory. And, namely, that there are three attachment styles in the relationships — secure, avoidant and anxious. I have the third type, it's neither good or bad, but this has helped me to understand myself better.
People with anxious attachment style are used to better notice any small changes in the behavior of other people (and then make theories about the reasons of such behavior). While this is a useful skill, it's important to understand, that this skill is something we have developed in our childhood as a coping mechanism, to feel ourselves more secure. And, when we are grown up, we may want to use it differently.
Does this apply to you?
📔 Journaling
Since 18th of October, I start my day with 8 minutes of journaling. First I notice what has made me happy yesterday and then just write whatever is on my mind — good or bad, doubt or proud. I do it with pen and paper and I enjoy the process.
It's scientifically proven (random article, but it is), that journaling is good for your mental health. I think this helps me to cope with everything what's going on these days.
🎥 Best film 2022
Everything Everywhere All at Once is a masterpiece, the best movie I've discovered in 2022. This movie has so many layers that you can watch it with any purpose — entertainment, science fiction, philosophical. It's fascinating, how parent child relationship problem was presented in the movie ❤️🩹
👖Uniqlo
~5 years ago, I and my wife were in some museum in Milan. And they were giving out basic t-shirts as a gift for visiting the museum. I opened that t-shirt after several years and loved it. It was thin, nice to the body, it stayed the same after the washing. I learned, that it was produced by Uniqlo, but I never did anything about it.
This year I decided to buy more of such t-shirts and also to try their basic joggers and a hoodie, to improve my home outfit. It was a match. Best home suit ever and I want to buy the second one. Unfortunately, hoodies are out of stock now, but I am waiting for the restocking.
If you want to feel comfort on your body — try Uniqlo.
⬛️ That was it. 2022 was a difficult year, I will do everything to make 2023 better and wish the same to you. What's your favorite movie from the last year?
👍11❤7
GoodDevDigest #3
🦚 Brag document
Often, developers think that they do not do enough. Usually, this happens because they forget about all of the great stuff they already did. Brag document will help you and your manager to notice your impact.
Being honest — last year I almost skipped this practice. But I want to continue this year. So I set a weekly reminder to myself to fill it in for the last week on Friday. This week is ✅
📚 Books
Continue to read "Modern software engineering". The book is difficult to read — pure text and almost no pictures. I set a goal to read it at least 20 minutes a day.
The author says, that there are two proven factors which allow you to measure how good your software development is — stability and throughput. These two are based on the DORA metrics.
This allows us to measure if we are improving or making our software development process worse. For example — we introduce Rust. How will stability and throughput behave? Knowing that we can assess if our decision was good or bad and take another one.
Another example, this time from the book, you observe that your failure rate is high. After the releases there are bugs. So you might think — our features are poorly verified, let's introduce the
With this "simple" measurement, we can verify each adjustment to the development process and take informed decisions.
🎥 Kaleidoscope
Last week, Netflix released a unique TV series (trailer) where viewer can watch episodes in any order (except the last one) and they make a complete picture. From a techical perspective, as I understand, they just shuffle first 7 episodes for each account. Each customer will have their own unique watching experience.
I'm a big fan of new formats on TV, so I watched it. It's fascinating to reflect on the questions like "How I would feel if this episode was shown as the first one to me?". Authors made a great work, that each episode adds new details ot the picture.
Have you watched it already?
⬛️ That was it for the last week. Attached image is what Midjourney thinks "software engineer is filling a document where they list all the achievements they made recently".
🦚 Brag document
Often, developers think that they do not do enough. Usually, this happens because they forget about all of the great stuff they already did. Brag document will help you and your manager to notice your impact.
Being honest — last year I almost skipped this practice. But I want to continue this year. So I set a weekly reminder to myself to fill it in for the last week on Friday. This week is ✅
📚 Books
Continue to read "Modern software engineering". The book is difficult to read — pure text and almost no pictures. I set a goal to read it at least 20 minutes a day.
The author says, that there are two proven factors which allow you to measure how good your software development is — stability and throughput. These two are based on the DORA metrics.
This allows us to measure if we are improving or making our software development process worse. For example — we introduce Rust. How will stability and throughput behave? Knowing that we can assess if our decision was good or bad and take another one.
Another example, this time from the book, you observe that your failure rate is high. After the releases there are bugs. So you might think — our features are poorly verified, let's introduce the
Change Approval Board and they would to thoroughly check and approve each change. Turns out, science proves, that this will only make your throughput worse. So, now you have low stability and low throughput. Not cool. While introduction of the auto tests will improve both stability and throughput 📈. With this "simple" measurement, we can verify each adjustment to the development process and take informed decisions.
🎥 Kaleidoscope
Last week, Netflix released a unique TV series (trailer) where viewer can watch episodes in any order (except the last one) and they make a complete picture. From a techical perspective, as I understand, they just shuffle first 7 episodes for each account. Each customer will have their own unique watching experience.
I'm a big fan of new formats on TV, so I watched it. It's fascinating to reflect on the questions like "How I would feel if this episode was shown as the first one to me?". Authors made a great work, that each episode adds new details ot the picture.
Have you watched it already?
⬛️ That was it for the last week. Attached image is what Midjourney thinks "software engineer is filling a document where they list all the achievements they made recently".
👍14❤1
Which content format in this channel would you prefer?
Anonymous Poll
21%
Many topics in one digest, once a week
79%
One topic = one post, several times a week
🎥 Building a military brigade or an engineering team — is it that different?
This Monday, sergeant Markus, quite known person from Ukrainian military, has released his talk on the topic of "Desertion".
Well, it's named this way, but what it really is — it's a talk on the topic how teams are built and the role of the leader. He starts from the question — which reasons might be there, so that soldiers leave their position? And, from his perspective, there is only one main reason — bad work of their leader (sergeant in army terms). Bad work, because they were not able to build an effective motivated team — their troop. While the rules of building a motivated troop are almost the same, as building a motivated team in your IT company.
Then he goes over the principles of the new formation, which they are building — 47 brigade. First and foremost one is the continuous learning. They expect everyone from the brigade to learn and keep learning. And it's the leadership task to make this possible. Leaders shall be a role model for their subordinates.
He firmly says, that they do not want people with the "victim" mindset in their brigade. Good thing that this mindset is not a curse and in good environment one may change that. So they try to create such environment using different tools.
They start to create a Myth around their brigade — special chevrons, legend of the mountain Magura, their own rituals like climbing that mountain. All of this will eventually help to build a strong team spirit within the brigade, even if it sounds awkward from the beginning. But the more people do that — the less questions others will ask and the more they will believe.
They also integrate simple cognitive behavioral therapy principles into their day-to-day life. For example, they prohibit to call something "a problem", but suggest calling it "a challenge". You are even allowed to correct your leader, if they use this word. Also, at the end of the day each sergeant shall ask their subordinates — what did you do today on your way to Magura? In other words — what was your achievement today?
This talk gives a perfect perspective that effectiveness of the group depends on the mindset. They try to apply the same principles which we know and execute in the IT environment in our attempts to build lasting organisations.
I'm curious how would this work in army, which is definitely different from IT. But I expect it will work, it definitely will make things better comparing to the setup where these practices are not applied.
The talk is in 🇺🇦. Have you watched it? What do you think?
This Monday, sergeant Markus, quite known person from Ukrainian military, has released his talk on the topic of "Desertion".
Well, it's named this way, but what it really is — it's a talk on the topic how teams are built and the role of the leader. He starts from the question — which reasons might be there, so that soldiers leave their position? And, from his perspective, there is only one main reason — bad work of their leader (sergeant in army terms). Bad work, because they were not able to build an effective motivated team — their troop. While the rules of building a motivated troop are almost the same, as building a motivated team in your IT company.
Then he goes over the principles of the new formation, which they are building — 47 brigade. First and foremost one is the continuous learning. They expect everyone from the brigade to learn and keep learning. And it's the leadership task to make this possible. Leaders shall be a role model for their subordinates.
He firmly says, that they do not want people with the "victim" mindset in their brigade. Good thing that this mindset is not a curse and in good environment one may change that. So they try to create such environment using different tools.
They start to create a Myth around their brigade — special chevrons, legend of the mountain Magura, their own rituals like climbing that mountain. All of this will eventually help to build a strong team spirit within the brigade, even if it sounds awkward from the beginning. But the more people do that — the less questions others will ask and the more they will believe.
They also integrate simple cognitive behavioral therapy principles into their day-to-day life. For example, they prohibit to call something "a problem", but suggest calling it "a challenge". You are even allowed to correct your leader, if they use this word. Also, at the end of the day each sergeant shall ask their subordinates — what did you do today on your way to Magura? In other words — what was your achievement today?
This talk gives a perfect perspective that effectiveness of the group depends on the mindset. They try to apply the same principles which we know and execute in the IT environment in our attempts to build lasting organisations.
I'm curious how would this work in army, which is definitely different from IT. But I expect it will work, it definitely will make things better comparing to the setup where these practices are not applied.
The talk is in 🇺🇦. Have you watched it? What do you think?
Telegram
Сержант Маркус
ПІДТРИМКА КОПІЙКОЮ:
Моно: 4441 1110 2626 9971
Otp: 5468 8697 3022 9822
Приват: 5363 5420 1281 1056
Patreon: https://bit.ly/3E8qzQk
СОЦМЕРЕЖІ:
Instagram: https://bit.ly/3J8wXVy
Facebook: https://bit.ly/3pQmGpa
Twitter: https://bit.ly/3MFCEMx
Моно: 4441 1110 2626 9971
Otp: 5468 8697 3022 9822
Приват: 5363 5420 1281 1056
Patreon: https://bit.ly/3E8qzQk
СОЦМЕРЕЖІ:
Instagram: https://bit.ly/3J8wXVy
Facebook: https://bit.ly/3pQmGpa
Twitter: https://bit.ly/3MFCEMx
👍25❤4
🛠 Useful tools
The life of a modern developer is often a task of moving JSONs from the place A to place B. Sometimes you do it between your own services, sometimes you need to integrate 3rd party services into your workload.
Let's see what can help you quickly test if integration works without deploying your software. Here are the tools that are helping me.
1️⃣ ngrok
In case you have something locally and want to expose it online. Then you can do the following:
2️⃣ webhook.site
In case you do not have an actual app, but still want to test what would happen if X sends you that
Just open the website, and it will give you the unique url. Then do:
3️⃣ Insomnia
I remember the times, when Postman was a thing. Many people continue to use it. To me it's cumbersome. So I switched to Insomnia and use it for basic cases.
⬛️ Do you know the tools alike? Please, share them in the comments.
The life of a modern developer is often a task of moving JSONs from the place A to place B. Sometimes you do it between your own services, sometimes you need to integrate 3rd party services into your workload.
Let's see what can help you quickly test if integration works without deploying your software. Here are the tools that are helping me.
1️⃣ ngrok
In case you have something locally and want to expose it online. Then you can do the following:
ngrok http 8080 --subdomain=my-awesome-project
and in seconds, your app will be available under https://my-awesome-project.eu.ngrok.io. You can use that endpoint as long as both your app and ngrok process are up.2️⃣ webhook.site
In case you do not have an actual app, but still want to test what would happen if X sends you that
JSON. Just open the website, and it will give you the unique url. Then do:
curl -X POST https://webhook.site/8f965f86-869f-4c79-aeda-1e96fffd18f4 \
-H 'Content-Type: application/json' \
-d '{"login":"good","password":"dev"}'
And you will see this request in the browser.3️⃣ Insomnia
I remember the times, when Postman was a thing. Many people continue to use it. To me it's cumbersome. So I switched to Insomnia and use it for basic cases.
⬛️ Do you know the tools alike? Please, share them in the comments.
👍25👎2
🎥 The Dropout
This week I started to watch a TV series "The Dropout". The one which tells us the story of Elizabeth Holmes and her company Theranos. So far I like it.
What did I know about Theranos before watching this series?
1. They wanted to do a rich health analysis at home using just one drop of the patient's blood.
2. They WANTED, but they never figured out how to do that. So they cheated to get more investments.
In the 2nd episode it was shown HOW they've cheated. The creators of the series have shown
So what the code does? They've just commented out any actual calculations and returned a result from the file. That's a high level overview.
🐞 BUT
1. The file extension is .dbk and it seems it's a Sony Ericsson Mobile Phone Backup File
2. The editor — VEX. The only thing I found is Vex (A Visual Editor for XML)
3. The code itself.
4.
5. They load a file using the Windows path
Now let's speculate on their engineering culture — I bet they were bad with DORA metrics.
⬛️ Have you watched it?
This week I started to watch a TV series "The Dropout". The one which tells us the story of Elizabeth Holmes and her company Theranos. So far I like it.
What did I know about Theranos before watching this series?
1. They wanted to do a rich health analysis at home using just one drop of the patient's blood.
2. They WANTED, but they never figured out how to do that. So they cheated to get more investments.
In the 2nd episode it was shown HOW they've cheated. The creators of the series have shown
the code on the screen. Let's examine it (see attached picture).So what the code does? They've just commented out any actual calculations and returned a result from the file. That's a high level overview.
🐞 BUT
1. The file extension is .dbk and it seems it's a Sony Ericsson Mobile Phone Backup File
2. The editor — VEX. The only thing I found is Vex (A Visual Editor for XML)
3. The code itself.
Serial.begin and Serial.println tell us that this is an Arduino code.4.
raise_eception("ERROR") has a typo5. They load a file using the Windows path
Now let's speculate on their engineering culture — I bet they were bad with DORA metrics.
⬛️ Have you watched it?
👍10
✍️ Writing skills
Writing skills are one of the most underestimated skills for a software developer. We are often comfortable thinking that we are paid for the software we produce, but this is not the right answer. We are paid for the problems that we solve. And with good writing skills it's easier to solve issues.
I remember once I wrote to my manager a mail, where I asked their approval for the conference visit. What did they answer? Well, they've approved it, but they started their answer with some advice. "Pavel, executive managers have not that much time, so when you want something from them — use the pyramid principle. Start from the solution which you suggest and then explain why exactly you think this is what shall be done". Well, this was not the best form of communication, but the advice was good, so I started to use it.
When we write the text, we first need to answer the question, "What is the purpose of this message — what do I want to achieve?". Then formulate your text or message in such a way, that for the person who reads it, it's easier to do what you want them to do — always try to remove the cognitive load.
⬛️ There are many tricks we can use when we communicate via text. Texts are a great form of communication.
Writing skills are one of the most underestimated skills for a software developer. We are often comfortable thinking that we are paid for the software we produce, but this is not the right answer. We are paid for the problems that we solve. And with good writing skills it's easier to solve issues.
I remember once I wrote to my manager a mail, where I asked their approval for the conference visit. What did they answer? Well, they've approved it, but they started their answer with some advice. "Pavel, executive managers have not that much time, so when you want something from them — use the pyramid principle. Start from the solution which you suggest and then explain why exactly you think this is what shall be done". Well, this was not the best form of communication, but the advice was good, so I started to use it.
When we write the text, we first need to answer the question, "What is the purpose of this message — what do I want to achieve?". Then formulate your text or message in such a way, that for the person who reads it, it's easier to do what you want them to do — always try to remove the cognitive load.
⬛️ There are many tricks we can use when we communicate via text. Texts are a great form of communication.
👍43
🌟 Phase II
I continue to watch The Dropout and got another post inspiration idea from there. So Theranos needs to launch a project in September, but their product is far from being ready. What do they do? Elisabeth decides to start the project, do blood analysis using the Siemens device, and call it Phase I. Which assumes that the product of Theranos will still be eventually built, but it will be the Phase II.
Phase II is a magical place, which we also often use in software development. You work on the feature or a project and by doing that, you and your team often see areas for improvement. You can add more automation, make a better UX, prepare your project for scaling, etc. All these ideas are good, but this impacts our scope. The scope gets bigger, and that delays the project's launch.
Good dev knows, that it's more important to launch the project and start measuring whether our idea was right or not, than delay the product launch in favor of perfectionism.
Phase II trick allows you to deliver faster. If your team has ideas that are good, but you think that current scope will already help customer or business, suggest them to put these ideas to the epic called "Phase II". This decreases the cognitive load and keeps everyone happy.
⬛️ Our job is to deliver, not "work". There are always more ideas, than resources which our team has. Postpone non critical stuff for later. Later, you will have time to reevaluate these ideas, and, what is also important, you will have more information, that allows you to assess their impact better.
I continue to watch The Dropout and got another post inspiration idea from there. So Theranos needs to launch a project in September, but their product is far from being ready. What do they do? Elisabeth decides to start the project, do blood analysis using the Siemens device, and call it Phase I. Which assumes that the product of Theranos will still be eventually built, but it will be the Phase II.
Phase II is a magical place, which we also often use in software development. You work on the feature or a project and by doing that, you and your team often see areas for improvement. You can add more automation, make a better UX, prepare your project for scaling, etc. All these ideas are good, but this impacts our scope. The scope gets bigger, and that delays the project's launch.
Good dev knows, that it's more important to launch the project and start measuring whether our idea was right or not, than delay the product launch in favor of perfectionism.
Phase II trick allows you to deliver faster. If your team has ideas that are good, but you think that current scope will already help customer or business, suggest them to put these ideas to the epic called "Phase II". This decreases the cognitive load and keeps everyone happy.
⬛️ Our job is to deliver, not "work". There are always more ideas, than resources which our team has. Postpone non critical stuff for later. Later, you will have time to reevaluate these ideas, and, what is also important, you will have more information, that allows you to assess their impact better.
👍12
🤖 How much do you trust your robots?
Recently, I had to contribute to the project, namely a node module, that belongs to the other team. I did what I wanted, asked my peer to review, and then he merged. I asked, "Can you, please, release it? Or how shall I do this?". His answer was, "You don't need to, it will be released automatically".
The gist is, that their project setup is done in a way, that each merge to the main trunk (
Ok, this is not new. Everyone releases using CI. But in their case, they use the semantic release tool. This tool analyses commits, understands which release is it going to be (major, minor, patch), updates the
I need to say that I liked what I saw. Before this point, I was rejecting the idea that
Yes,
⬛️ Perhaps it's time to let CI write into your projects. Let's run the questionary, maybe most of you are already doing that.
Recently, I had to contribute to the project, namely a node module, that belongs to the other team. I did what I wanted, asked my peer to review, and then he merged. I asked, "Can you, please, release it? Or how shall I do this?". His answer was, "You don't need to, it will be released automatically".
The gist is, that their project setup is done in a way, that each merge to the main trunk (
main branch in their case) might be released through the CI step. Ok, this is not new. Everyone releases using CI. But in their case, they use the semantic release tool. This tool analyses commits, understands which release is it going to be (major, minor, patch), updates the
CHANGELOG.md based on the commit messages and then does two things — releases the module and pushes back changes to the repository.I need to say that I liked what I saw. Before this point, I was rejecting the idea that
CI has the right to write into my repositories. Now I might change my mind. Yes,
CI can break your repo or git history, but so can I or my colleagues. But if CI does release, this may remove another portion of the cognitive load from the developer and also force the team to write clear commit messages in the unified format.⬛️ Perhaps it's time to let CI write into your projects. Let's run the questionary, maybe most of you are already doing that.
GitHub
GitHub - semantic-release/semantic-release: :package::rocket: Fully automated version management and package publishing
:package::rocket: Fully automated version management and package publishing - semantic-release/semantic-release
👍10❤1
Does your CI pushes into the project's repository? (any project where you contribute)
Anonymous Poll
40%
Yes, it does
60%
No, it does NOT
🤖 Proxies that help
Sometimes during the development process we have to work with other applications. And, from first sight, these applications are a black box. We do not know what they do. How do they interact with the world? There are tools to help.
1️⃣ mitmproxy
Once, when I was working on integrating the WebView into the iOS app, I needed to see if the WebView called a specific url. Since everything was happening on the phone, it was not trivial.
Luckily, I remembered that I'd heard about
So in my case, I ran it on my local machine, configured my iPhone to use the internet through this proxy and then I was able to see all the requests that my iPhone made to the external resources. This way I tracked, that my WebView calls what I want it to call ✅.
It's also very handy for reverse engineering. Just install it, run any app, and see which requests it makes. You can explore the API or even find a vulnerability.
2️⃣ proxyman
Another tool, which I discovered only recently, is
⬛️ Proxies may allow us to observe what does the software do without intruding it. What are your use cases?
Sometimes during the development process we have to work with other applications. And, from first sight, these applications are a black box. We do not know what they do. How do they interact with the world? There are tools to help.
1️⃣ mitmproxy
Once, when I was working on integrating the WebView into the iOS app, I needed to see if the WebView called a specific url. Since everything was happening on the phone, it was not trivial.
Luckily, I remembered that I'd heard about
mitmproxy (MITM is man in the middle). mitmproxy is a proxy that you can insert between the thing that makes the request and the thing that it calls. So in my case, I ran it on my local machine, configured my iPhone to use the internet through this proxy and then I was able to see all the requests that my iPhone made to the external resources. This way I tracked, that my WebView calls what I want it to call ✅.
It's also very handy for reverse engineering. Just install it, run any app, and see which requests it makes. You can explore the API or even find a vulnerability.
2️⃣ proxyman
Another tool, which I discovered only recently, is
proxyman. This is a Mac app with a very nice UX, that shows you which calls are done by the software on your machine.⬛️ Proxies may allow us to observe what does the software do without intruding it. What are your use cases?
👍19❤2
⚙️ Test Driven Development
Test Driven Development, or
1. You write your test BEFORE you write any code
2. Then you run the test — it shall fail 🛑
3. Now you write your code/feature
4. You did it right, run your test again — it passes ✅
5. Optimise your code
I continue (and finishing!) to read the "Modern Software Engineering" book, and the author has uncovered another perspective of
Profit.
⬛️ I remember once I've rediscovered UML and thought that it's great, you do not need to code to design applications. You can just draw diagrams and, this way, run thought experiments for all the ideas in my head. Now it may be even different — do not write an app, write tests and design your app this way. I'm going to try it out soon.
Test Driven Development, or
TDD. Have you heard of it? Yes, I believe so. Do you practice it? No, I believe. I don't either. Usually I write tests AFTER the code itself. Today I want to talk about the specific angle of TDD — using TDD to architect your code.TDD concept is simple:1. You write your test BEFORE you write any code
2. Then you run the test — it shall fail 🛑
3. Now you write your code/feature
4. You did it right, run your test again — it passes ✅
5. Optimise your code
I continue (and finishing!) to read the "Modern Software Engineering" book, and the author has uncovered another perspective of
TDD to me. The purpose of this concept lies not in the assumption, that this way you are sure that your code is tested. Even bigger advantage hides, that if you do your development this way — you force yourself to write the code which is testable. And if you write code that is testable, there is a high chance, that it will be easy to maintain and extend this code. Why? Because if your code is testable, it's highly likely that you use inversion of control, loose coupling, modularity and other traits which we like to see in the good code.Profit.
⬛️ I remember once I've rediscovered UML and thought that it's great, you do not need to code to design applications. You can just draw diagrams and, this way, run thought experiments for all the ideas in my head. Now it may be even different — do not write an app, write tests and design your app this way. I'm going to try it out soon.
❤11👍2
🛠 Text manipulation tools
How often during your day-to-day work do you work not with the programming language, but with plain text? I do it quite often. There are some tools that help me.
1️⃣ delim.co
This is my favorite. Imagine you have a list of 1000
2️⃣
⬛️ Which text manipulation tools do you use? Please, share, I'm curious.
How often during your day-to-day work do you work not with the programming language, but with plain text? I do it quite often. There are some tools that help me.
1️⃣ delim.co
This is my favorite. Imagine you have a list of 1000
uuids and you need to query your PostgreSQL database about them. What would you do? With the help of delim.co you can convert your list from:f50e781f-233d-461e-948b-db7fae9147f6to
ba86bc1b-1b17-4915-bcfa-890be8cb2f40
bf6885cc-76f6-4f68-8ab0-7956b4ec1d34
'f50e781f-233d-461e-948b-db7fae9147f6',it helps me a lot! And that tool can do even more.
'ba86bc1b-1b17-4915-bcfa-890be8cb2f40',
'bf6885cc-76f6-4f68-8ab0-7956b4ec1d34',
2️⃣
atob and btoa
Another use case. You need to look up your database password from the kubernetes secret. Oh, crap, it's base64 there. Let's google base64 decode. NO! Wrong answer ❌. We can use JavaScript functions atob and btoa and do not post our secrets online. Just open the web console and run:atob("WW91IGFyZSBhd2Vzb21lIQ==")
(yes, you are)⬛️ Which text manipulation tools do you use? Please, share, I'm curious.
http://delim.co/
Free Online Comma Separating Tool
👍14❤3👎3
🤝 Helping the team to agree
We often discuss something with the team. It can be a discussion about the technology, trying to align on how to fix an issue, a process adjustment, or even an open one. One where it seems that nobody knows what is being discussed and how shall it be ended. I bet you often observed something like this and thought "I wish I can stop it and we can move on". Good news: you can. Let's see how.
Often, when such discussions are taking place, this happens because the scope of the initial topic grows and nobody has noticed this. For example, you tried to figure out if you could shift a "Stand up" from 09:30 to 10:00, and in five minutes you realise, that the team discusses if you need to have a retrospective this week.
Be the one who notices it 👀. Noticing is the key. As soon as you notice that the scope got bigger, quickly reflect on what is being discussed right now and split it into the different topics.
For example:
1. Can we shift a stand up?
2. Which Agile rituals shall we practice?
3. Do we need a retrospective this week?
Interrupt your group and share your observation, that you are now trying to solve three topics instead of one. Suggest to align on answering the first one and taking another action on the others (for example, schedule a separate meeting). Voilà, you got your answer, and your group is grounded.
⬛️ By dividing the uncontrolled discussion flow into the different questions, we help a group to agree. Because it's much easier to agree on a simple topic, than to agree on something as a whole.
We often discuss something with the team. It can be a discussion about the technology, trying to align on how to fix an issue, a process adjustment, or even an open one. One where it seems that nobody knows what is being discussed and how shall it be ended. I bet you often observed something like this and thought "I wish I can stop it and we can move on". Good news: you can. Let's see how.
Often, when such discussions are taking place, this happens because the scope of the initial topic grows and nobody has noticed this. For example, you tried to figure out if you could shift a "Stand up" from 09:30 to 10:00, and in five minutes you realise, that the team discusses if you need to have a retrospective this week.
Be the one who notices it 👀. Noticing is the key. As soon as you notice that the scope got bigger, quickly reflect on what is being discussed right now and split it into the different topics.
For example:
1. Can we shift a stand up?
2. Which Agile rituals shall we practice?
3. Do we need a retrospective this week?
Interrupt your group and share your observation, that you are now trying to solve three topics instead of one. Suggest to align on answering the first one and taking another action on the others (for example, schedule a separate meeting). Voilà, you got your answer, and your group is grounded.
⬛️ By dividing the uncontrolled discussion flow into the different questions, we help a group to agree. Because it's much easier to agree on a simple topic, than to agree on something as a whole.
❤7👍2
👋, honorable people,
At the end of this week, on the 5th of March, I have a birthday 🎂
This year I want to get the best present ever— the one that brings 🇺🇦 victory closer. But that's not it, I have something to give away as well.
First things first. My close friend Yulia and her team are running a project that delivers cars to the UAF and not only. They are in "business" since 2014 and have direct contacts with people on the ground, ones who actually protects our freedom. They have already delivered 350+ cars, and you have already helped them as well.
Why the cars are needed? Vehicles on the war are expendables, they are always in need and allow people to do their main job. Right now, they have a list of requests for more than 50 cars. I want us to help them as much as we can, so I will gather donations for them until the 5th of March and then transfer everything to Yulia. Every cent helps us to stop this war and prosper.
I hope I convinced you to donate, so here are the requisites. Donate, and read what I offer in return.
Here are the requisites:
IBAN:
Mono: https://send.monobank.ua/jar/63kXNYa6Nv
In return, I promise to organize a stream and present you with my learnings from the book Modern Software Engineering. In just like 30 minutes, you will learn universal rules, which will help your software prosper. How cool is that? As a sneak peak, just have a look at one of the slides that I have prepared 🐘. I bet you don't question why I'm a Principal SE right now.
Let's make this fundraiser big. I pledge 200€ and will report on our progress here.
Thank you and Glory to Ukraine! 💙💛
At the end of this week, on the 5th of March, I have a birthday 🎂
This year I want to get the best present ever— the one that brings 🇺🇦 victory closer. But that's not it, I have something to give away as well.
First things first. My close friend Yulia and her team are running a project that delivers cars to the UAF and not only. They are in "business" since 2014 and have direct contacts with people on the ground, ones who actually protects our freedom. They have already delivered 350+ cars, and you have already helped them as well.
Why the cars are needed? Vehicles on the war are expendables, they are always in need and allow people to do their main job. Right now, they have a list of requests for more than 50 cars. I want us to help them as much as we can, so I will gather donations for them until the 5th of March and then transfer everything to Yulia. Every cent helps us to stop this war and prosper.
I hope I convinced you to donate, so here are the requisites. Donate, and read what I offer in return.
Here are the requisites:
IBAN:
DE69100110012620227756, Pavlo Poliakov; BIC: NTSBDEB1XXX
PayPal: https://www.paypal.com/paypalme/PavloPoliakov or me@pavelpolyakov.comMono: https://send.monobank.ua/jar/63kXNYa6Nv
In return, I promise to organize a stream and present you with my learnings from the book Modern Software Engineering. In just like 30 minutes, you will learn universal rules, which will help your software prosper. How cool is that? As a sneak peak, just have a look at one of the slides that I have prepared 🐘. I bet you don't question why I'm a Principal SE right now.
Let's make this fundraiser big. I pledge 200€ and will report on our progress here.
Thank you and Glory to Ukraine! 💙💛
❤23👍6👎2
Good day,
Here are the first stats about the fundraising. Together we've collected.
Average donation in EUR is
Not bad, but we can do even better. Every cent counts, please, spam me with microdonations.
Let's talk a little about the cars themselves. On average, the whole process of the vehicle delivery to Ukraine costs 6000$. These costs include car purchase, fuel, export declarations, train tickets for the people who drive the cars, etc.
As you see, what we have is already around 1/5 of the car. But we can do more. Please, continue your donations 🤝.
Here are the requisites:
IBAN:
Mono: https://send.monobank.ua/jar/63kXNYa6Nv
Below I will attach a video report for the last year, where you can see all variety of cars, which were delivered. That's really impressive.
Thank you and Glory to Ukraine! 💙💛
Here are the first stats about the fundraising. Together we've collected.
632.16€ and 1860₴ + 200€ from me.Average donation in EUR is
50€. Biggest donation in UAH is 1000₴.Not bad, but we can do even better. Every cent counts, please, spam me with microdonations.
Let's talk a little about the cars themselves. On average, the whole process of the vehicle delivery to Ukraine costs 6000$. These costs include car purchase, fuel, export declarations, train tickets for the people who drive the cars, etc.
As you see, what we have is already around 1/5 of the car. But we can do more. Please, continue your donations 🤝.
Here are the requisites:
IBAN:
DE69100110012620227756, Pavlo Poliakov; BIC: NTSBDEB1XXX
PayPal: https://www.paypal.com/paypalme/PavloPoliakov or me@pavelpolyakov.comMono: https://send.monobank.ua/jar/63kXNYa6Nv
Below I will attach a video report for the last year, where you can see all variety of cars, which were delivered. That's really impressive.
Thank you and Glory to Ukraine! 💙💛
PayPal.Me
Pay Pavlo Poliakov using PayPal.Me
Go to PayPal.Me/PavloPoliakov and enter the amount. It's safer and more secure. Don't have a PayPal account? No problem.
❤10👍5👎2