Developer's notes
4 subscribers
2 photos
1 video
16 links
Developer's notes: memories about projects, tasks, and advice to the beginners
Download Telegram
Channel created
Channel photo updated
Unusual project.

Some time ago (but within the current decade) it happened to me to be a senior C++ developer in a famous international corporation which doesn't work in Russia any longer. The corporation works according to oursource/outstuff business model, particularly for this project out customer was one German automotive firm. My responsibility there was an unusual project that I always struggle to describe. Let's judge yourself about that: desktop application for Windows written in C++ Qt\QML without any network interactions and even without SQL-queries I mean at all. Well, what the hell can it be then? Perhaps, it appears to be some kind of crap: the app parses XML-based files and provides handy graphical user interface to edit those files. That's all. As a result: lots of untrivial tasks had been done almost without making usual forms. #job #Qt #QML #C++ #English #automotive #c_plus_plus
1
Weird project.

To cut long story short, the company from https://t.me/SomeDevelopersNotes/4 decided to leave Russia, the developers were offered to move to Serbia with the same (humble) salaries, as a consequence most of them (including me) made up their minds to change job in pursue of better conditions.

So, once upon time I found myself working in a Russian company whose main niche is "import substitution". Surely an interview that I passed to get this job as well as interviews in IT industry in general deserves its own posts, so I'll keep silent here about it. Getting back to the job, initial project description given by a team leader sounded pretty interesting: web-engine, no deadline, take your time to dive into it. In the reality it turned out to be a small poorly functioning library written in C++\Qt which provides a highly inconvenient QML-component. All this crap can render only very limited subset of HTML tags and there was another application also developed by this company where to this component was integrated. Because the current functional covered all the requirements there was no actual business tasks and there weren't even planned in the foreseeable future. The team leader gave tasks according to the idea: "we're developing a Chrome substitution". As a result, 6 months later the company realized that no one needed the project, the budget was optimized. #job #C++ #Qt #QML #weird #English #c_plus_plus
Entwine it.

It’s summertime, a heatwave has come to central Russia, and a thermometer on my balcony is rising higher and higher. Having awakened because of a ringing doorbell in the morning – that was a currier delivering my usual products – in my thoughts, I’ve been sunbathing in the nearest park since, though, in fact, it isn't so.

Several days ago, I started reading Andrew S. Tanenbaum's “Computer Networks”, 6th edition. Many years ago, being a student, I was reading another edition of the book (4th? 3rd?), and from the very beginning, I noticed a huge difference between editions, well, no surprise. The reason why I decided to read this book is just curiosity, I don’t want to confuse someone with a phrase like “As a software developer I have to read it”, because it wouldn’t be true.
Nevertheless, so few people talk about computer networks and related technologies even though it’s a foundation of the entire IT industry, and our (developers) salaries result from the fact that the networks exist and work better than the famous Swiss watch. When we develop another e-commerce or delivery app we stand on the shoulders of network technology giants.  
#today #summer #weekend #flood #books #networks
Let's speak up!

There is a belief that software developers as well as other people from the IT world don't know how to talk with other people. Well, if you could look at the meeting schedule of a regular developer or even better at a team leader's one you would be surprised... Highly doubtedly any serious software can be developed by just one person, and supposedly a level of communication in developers' teams exceeds the same level in teams of other white collars. If you take into account a popular T-shaped skills idea and the fact that a developer team consists not only of developers but also different roles: QA engineers, DevOps, designers...I guess my idea must be clear by this point.

"Everything that they do is just writing down code according to exact task description" - is another common and wrong belief. In reality, writing an accurate task description is a pretty demanding task, and for complex problems, it's never detailed enough, so developers can't just bluntly write a code without diving into the product. Most of the real tasks are complex: everything that can be automated, copy-pasted, and so on got done a long time ago even without ChatGPT

#job #IT #General
Threads and interviews

As I mentioned above interviews in IT are weird and full of cringe. In case you're a software developer and want to get a decent income interviews are a "necessary evil", bearing in mind that many companies have several interview sections - highly likely that you'll see tens of them during several years in the industry.

Today I want to bring up memories of my interviews with a quite famous company that altered its name several times. The plot of that wasn't particularly unusual: an online meeting with HR, a test task, a C++ question section, and the final meeting with a department manager. Well, the test task part is unusual. In general, I wouldn't advise anyone to accept this part as long as it isn't paid or you're not just curious about that. I succeded in all the sections except the final one - guess they just found someone ready to get a smaller salary. I have neither negative nor positive emotions with that. Because interviews aren't covered with NDA nothing prevents me from publishing all the details: without further delay the test task description:

Write a console C++ program with two threads, where the first thread prints '1' and the second one prints '2', and, the most important condition, a one always precedes a two, so the output should be '12121212...', the program works endlessly. Use only the standard library (std).


Below you can find a naive version of it without any synhronizaation at all, the solution along with a detailed description will be published later.

#include <iostream>
#include <thread>

using namespace std;

int main()
{

auto firstRoutine = [](){
while (true){
cout << '1';
}
};

auto secondRoutine = [](){

while (true){
cout << '2';
}
};

thread th1{firstRoutine};
thread th2{secondRoutine};


th1.join();
th2.join();

return 0;
}


#job #C++ #interview #today #memories #c_plus_plus
The tip of the iceberg

Having mentioned earlier about technical specifications I realized that I’d like to discuss it deeper. Though at first, I’ll present a general description of how a software development team works.

I’d like to note two major points: everything is based on my personal experience, and there is no way to grasp an entire range of possible situations in great detail. Let me explain the latter: nowadays companies, developing software, vary in their sizes and spheres so that it can be a start-up with 2 software engineers, it can be a bank with a thousand employees or it can be a giant corporation consisting of one hundred thousand employees. As you might have heard software development itself falls into different specializations, though a well-known frontend/backend dichotomy is not comprehensive, for instance, it doesn’t cover the following: driver development, embedded development, Windows-based game development, and so on. Plenty of programming languages and frameworks are out of the current discussion scope because I want to focus on how processes are organized rather than coding here. Let’s also close our eyes on other roles in a team that can also accidentally write code: DevOps, QA engineers, etc. Last but not least: personality traits of a team leader as well as other team members, on one team a team leader, has read a book about Scrum and now they groom their backlog every day and have all sorts of meetings, in another place everyone has decided that Scrum is too complicated, so their team leader tries to split tasks themselves, finally in one more place a whole IT department consists of two people who work as they can without time or intention to read books about how it’d be perfect.

So, in future posts, I’ll tell you about different roles involved in software development, and how the processes can be organized, little by little, I'll come to examples of successful and unsuccessful cases from my personal experience. Finally, after all the introduction we’ll come back to the technical specifications. Stay tuned!
#job #IT #General #Introduction
Heavy tails

Recently I remembered times when I was hard studying probability theory, though here I’m not going to bring up with formulas and faint definitions, let’s think about a simple and easily observed physical value, namely the height of a grown-up (over 18 years) man. Remember your acquaintances, people who you face during your commuting, and so on. Of course, I can’t be certain about your neighborhood, but in mine, their height varies from 160cm to 195cm, where the boundaries aren’t too often. Is it possible to face a guy higher or lower than that? – Surely, but how often? – Not that much (I suppose you don’t hang out with a basketball team). If you don’t believe that people higher than 195cm are a rare event to observe here you can read a bit about how few of them are.

Hopefully, by this point, everyone has realized that men’s height is a value mostly concentrated in a certain range. It’s called Gaussian or normal distribution and is represented in the form of those boring formulas I promised not to bring up here. Briefly, it means the following: if we lay a height on the X axis and its share over the population by the Y axis, we’ll get a figure close to a bell, with its maximum at the average value and with symmetrical borders in a certain range. Everything is already drawn for us (scroll to the phrase "Height is normally distributed").

Are all the values distributed according to the normal distribution? - No. Let’s consider another very practical value – a person’s income, very often we can’t know this value for their people but we can estimate it by their expenses. If you spend some time thinking over it you’ll probably realize that there are much fewer rich people than there are poor people, and if you take a person who is considered to be rich in your neighborhood and multiply their income by ten and try to find someone with this income you’ll immediately realize that they are even more rare: there are around 3 thousand of billionaires over the world. And again, all these facts were summarized and expressed as a mathematical law a long time ago. Look at the first picture there: there is a maximum at a low value and then an infinitely long tail coming to the right. If we apply this law to the example with an income it’ll give us the following picture: most people have several hundred dollars a month and then rarely and more rarely we’ll find richer people ending with very separate points representing people from the Forbes list. It’d be much funnier if we try to apply the same to the example about men’s height: most men are 170cm tall though it’s possible to find one who is as tall as the Eifel Tower or Empire-State-building, or one whose height equals to the distance from the Earth to Pluto…

These kinds of distributions are called heavy-tailed ones, several years ago I started reading the famous “The Black Swan” book, but ended it up soon because I’d already learned the statistics.

#flood #education #math #probability_theory #books
🔥1