Skip to content

Instantly share code, notes, and snippets.

View yegor256's full-sized avatar
😀
reinventing OOP...

Yegor Bugayenko yegor256

😀
reinventing OOP...
View GitHub Profile
@yegor256
yegor256 / how-to-join.md
Last active June 10, 2024 16:43
How to join our team?

I'm often getting emails and Telegram messages from programmers who would like to join our team because they like what we do or are simply tired of what they are doing now. You are more than welcome to join!

However, keep in mind the following: if you want to work with us for money, you have to reside in Moscow (Russia) and attend the office every day (5 days per week, from 9:30 till 18:30, near by Smolenskaya metro station). There are no exceptions; we don't do remote work at the moment.

On the other hand, all our repositories are open on GitHub. This means that you can contribute to our projects as a volunteer (no money!). This will help you test your skills, learn something new, and maybe better understand why you should reside in Moscow :)

On this page, you can find the list of GitHub repositories that are being actively developed by us now. Pick any issue from any of the repositories,

@yegor256
yegor256 / lncs-latex-template.md
Last active April 19, 2024 07:37
A template of a research paper that uses the LNCS document class

Use the following LaTeX template, if a conference asks you to use the lncs document class (create your orcid here):

\documentclass[runningheads]{llncs}
\usepackage[utf8]{inputenc}
\usepackage{href-ul}
\usepackage{natbib}
\begin{document}
\title{Contribution Title}
\author{
@yegor256
yegor256 / acmart-latex-template.md
Last active April 22, 2024 10:53
A template of a research paper that uses the "acmart" document class

Use the following LaTeX template, if a conference asks you to use the acmart document class (create your orcid here):

\documentclass[sigplan,nonacm,anonymous,review]{acmart}
\usepackage[utf8]{inputenc}
\usepackage{natbib}
\title{My article}
\author{Yegor Bugayenko}
  \orcid{0000-0001-6370-0678}
 \email{yegor256@gmail.com}
@yegor256
yegor256 / IEEEtran-latex-template.md
Last active April 19, 2024 07:37
A template of a research paper that uses the IEEEtran document class

Use the following LaTeX template, if a conference asks you to use the IEEEtran document class (create your orcid here):

\documentclass[conference]{IEEEtran}
\usepackage[backend=bibtex,style=numeric,natbib=true]{biblatex}
\usepackage{href-ul}
\usepackage{orcidlink}
\addbibresource{main.bib}
\begin{document}
\title{Beautiful Research Paper}
@yegor256
yegor256 / painofoop.md
Last active April 8, 2024 13:27
Research Questions for Pain-of-OOP Course

These research questions are suggested to students of the Pain-of-OOP course:

Q1: In C++ objects are data structures with virtual tables, allocated either on the stack, statically, or on the heap. It would be interesting to find out how most other object-oriented programming languages maintain objects. Do they also represent them as data structures with virtual tables, or perhaps as something else? It would be interesting to analyze not only popular languages but also academic experimental ones, like Self. In the research, it would be interesting to compare different implementations and identify their pros and cons. Maybe we can also do some benchmarking to support our conclusions.

Q2: In object-oriented programming, many design patterns are recommended for use. It’s commonly believed that if programmers adhere to these patterns in their code, the code quality will improve due to clearer design. We hypothesize that most design patterns emphasize the encapsula

@yegor256
yegor256 / pmba-questions.md
Last active April 9, 2024 12:38
PMBA: Research Questions

These research questions are suggested to students of the PMBA course:

Q1: One of the methods to increase the quality of a software product is by reporting bugs found in it, so that the team can fix them. However, we believe that most software professionals consider bug reporting as a quality-decreasing activity. We conducted a survey, asking 100+ people about their perception of bug reporting, and analyzed the results. Published.

Q2: In proper project management, every person assigned to a task feels 100% responsible for its completion. This means that if the task fails, it is solely his/her fault. However, this is not what happens with most software developers. We conducted a survey, asking 100+ programmers about their attitude towards responsibility, and then analyzed the results. Published.

Q3: It’s a generally accepted truth that money doesn't motivate software professionals. Instead, other fac

@yegor256
yegor256 / osbp-questions.md
Last active May 19, 2024 10:30
OSBP: Research Questions

The following research questions are for the OSBP course students:

Q1: Is there a correlation between open source experience of a programmer and the quality of code they write? In order to answer this question we analyzed the amount of followers in 100K Github profiles and the quality of 10M pull requests made by these people. The quality of a pull request is a composite metric that we introduced, which includes time, comments, corrections, complexity, and other factors.

Q2: It is recommended to start every message in a Github conversation (issue or pull request) with a nickname of the person that is supposed to answer it. However, not everybody does this. We assume that message that start with nicknames receive responses sooner than messages without such a prefix. In order to confirm or disconfirm this theory, we analyzed 10M messages in 1000 Github repositories.

Q3: Sometimes, in order to prove some technical point in a Github discussion (issue or pull requ

@yegor256
yegor256 / sqm-questions.md
Last active April 21, 2024 07:56
SQM: Research Questions

The following research questions are for the SQM course students:

Q1: In Java, there are object methods and class methods (also known as "static" methods). We suspect that the presence of static methods in Java classes negatively affects the quality of code. To validate this intuition, we analysed 100K+ Java files from 100+ open-source GitHub projects. We measured the number of static methods in them and their size in Lines of Code, keeping in mind that larger source code files have higher Cyclomatic Complexity (CC). Higher CC means lower maintainability. Then, we summarised the results obtained.

Q2: In Java, some object attributes are mutable, while others are immutable (with the "final" modifier attached to them). Objects that have at least one mutable attribute may be referred to as "mutable" objects. We suspect that mutable objects have higher Cyclomatic Complexity (CC) than immutable ones. To validate this intuition, we analysed 100K+ Java files from 100+ open

@yegor256
yegor256 / open-source-ideas.md
Last active June 16, 2024 06:33
Open Source Ideas: Feel Free to Implement Any of Them

Feel free to pick any of the following ideas and implement them:

24 Feb 2024
Comments Density
The impact of source code commenting on the maintainability of software projects has been a subject of debate for a long time. Some comments, such as class or method doc-blocks, are considered to be useful and effective. However, inline comments are mostly indicators of high code complexity, which must be reduced instead of being commented. It would be helpful to have a command-line tool that could go through a codebase in any programming language, find comments of different kinds, evaluate them by their positive or negative effects, and then present a total Comments Density Score (CDS). Moreover, the tool should fail the build if the CDS is lower than a certain threshold.

24 Feb 2024
Highlighter of Risky Zones in Pull Requests
One of the most difficult tasks for code reviewers, as they examine new pull requests, is spotting the most importa

@yegor256
yegor256 / interview-questions.md
Last active February 15, 2024 13:45
some interview questions

These are typical interview questions I ask most of job candidates. The most complex questions are on the top. They are more relevant to architects and designers, while questions at the bottom of the list should be addressed to programmers.

Architecture:

  • What is the difference between aggregation and composition?
  • Name three most popular layers in layered web architecture