Links #1

Employers ask for a return to the office: LinkedIn data shows how things have quickly shifted in one year: remote-work peaked March 2022 – more than 20 percent of job posting comparing with January 2023 where remote-work was at just 13 percent of job posting. This doesn’t align with employee preferences (according to a poll 60 percent prefer to be on a hybrid model while 34 percent prefer to work from home permanently).

https://www.code4it.dev/architecture-notes/caching-strategies: Caching is a process of storing data in a cache – a temporary storage that facilitates faster access to data. Using caching improves application performance. This article describes a couple of strategies used at a application level (there are more types of caching):  Cache-asideRead-throughWrite-through, and Write-behind. You can learn about the advantages and disadvantages of each strategy and you can find some useful links to some further readings.

Conventional commits

What is it?

The Conventional Commits is a specification that seeks to improve the commit messages. It can be considered as a standard format when writing commit messages.

Why use it?

Because:

  • creates explicit commit history (it describes features, fixes, breaking changes, etc) in order to better communicate the nature of changes to teammates/public/stakeholders and making it easier for contributors by allowing them to explorer a more structured commit history
  • can be processed by automated tools to produce documentation such as release notes or to trigger build and publish processes

Examples

  • fix: patches a bug in the codebase
  • feat: introduces a new feature to the codebase
  • BREAKING CHANGE: introduces a breaking change. It can be a part of commit message of any type
  • refactor: improves the existing code base
  • perf: improves the performance of algorithms or general execution time of the product, but does not fundamentally change an existing feature.
  • build: alters the build system or external dependencies of the product (adding, removing, or upgrading dependencies).
  • chore: includes a technical or preventative maintenance task but it is not tied to any specific feature
  • ci: makes changes to continuous integration or continuous delivery scripts or configuration files.
  • docs: makes changes to the documentation
  • style: makes changes to the code style (semicolon, indentation…)
  • test: add tests to an existing feature

Azure IoT

What is Azure IoT?

Azure IoT is a collection of cloud services use to connect, monitor and control IoT devices.

IoT Central – a SaaS solution to connect and manage the IoT devices

IoT Hub – facilitates messages between IoT application and devices

IoT Solution Accelerators – deploys solutions that implement common IoT scenarios.

How git works – Onion View – Content tracker

Files are untracked. Git doesn’t know what to do with them. To commit a file you need to put it in a staging area (whatever it is in staging area it will go in the next commit).

git add/git commit

A commit is compressed like a blob. If we git cat-file the commit we will see that a commit is a simple, short piece of text. Git generates the commit and stores it like a blob. The commit contains all the metadata about the commit (the name of the author, the committer, the date of the commit, the message).

Mariuss-MacBook-Air:cookbook mariusistudor$ git cat-file -p  5a464f88150a3d1c406da815c60e712099e7b4b6

tree be4d5bfce489a2591e7fed5c672f9e52cd695a43

author Marius Istudor <[email protected]> 1584872355 +0200

committer Marius Istudor <[email protected]> 1584872355 +0200

First commit

Plus, it contains the SHA1 of a tree (the way a blob is a file stored in Git, a tree is a directory stored in Git). The commit is pointing to the root directory of the project.

The blob is not a file, it is the content of a file. The file name and the permissions are not store in the blob, they are stored in the tree that points to the blob. If you have the same data, you will get the same hashes. For commit, it will be different, because it will have different content (author, date, etc).

Git tags

A tag is a label for the current state of the project. There are two types of tags in git: regular and annotated.

Annotated tags are created using the git tag command and contain metadata such as name of the tag, message, time and date and an object that the tag is pointing to. A tag can be simply considered as a simple label attached to an git object.

So, the Git object models contains:

blobs (arbitrary content)

trees (directories)

commits

annotated tags

Git can be considered like a high-level file system based on the native file system. Because it uses versioning (by commits) it is also considered a content tracker.

How git works – Onion View – Persistent structure

« Porcelain » commands

« Plumbing » commands – scripting

If you want to master git, you don’t need to worry about learning the commands. Instead, learn the concept model.

Git can be seen like an onion.

A simple persistent structure that maps keys to values (the structure is persistent, it’s stored on your disk) – the basic idea behind git: a map.

values = sequences of bytes (the content of a text value)

keys = git will calculate keys for these values using SHA1 (hash)

Every object (text files, directories, commits) in Git has its own SHA1. It is unlikely they will collide, they are unique.

Inside the .git directory, there is an object directory where Git saves all its objects.

git hash-object

git cat-file to see the content of the file (the original content was compressed to save space and added some more stuff).

Tooling helps improve codebase

What does quality of codebase mean?

  • Robustness
    Decent unit test coverage
    Good error handling
  • Maintainability
    simplicity
    Expressiveness (not obfuscated with large statements of ifs)
    Use of common idioms (
    Clean architecture
  • Ease of use
    Documentation (don’t rely on assumptions)
    Generic
  • Cost
    Development time overhead
    Technical debt
    Return on investment

Is quality worth the cost?

Quality cost is somehow easy to measure but the benefits are harder to evaluate.

  • automation and tooling can help reducing the cost
  • CPU time is cheaper than human time
  • it’s easier to replace hardware than hiring

Quality investment: Companies tend to view code as investment, regardless of its quality.

Refactoring #1

Refactoring – changes made to a piece of code to make it easier to understand and easier to modify without affecting the observable behaviour (meaning it should do the same things it did before refactoring).

Refactoring doesn’t mean cleaning up the code. It is a combination of small steps that won’t leave the code too much time in a broken state. Refactoring can be a part of a code « restructuring ». While developing you can realise that would be much easier if the code were structured differently.

Refactoring is a valuable tool that can be used for several purposes. It is not the answer to all problems.

Regular refactoring helps keep the code in shape and improves the design of software. It make the code easier to understand for the next developer which might be you. If you don’t want/can remember all the things you write, write your code in a way it will help you remember.

Refactoring can help finding bugs because when clarifying the structure of a program you can spot a lot more easier bugs.

Refactoring helps you write code faster because you can leverage the existing things and you can quickly build on what’s already there. Also, if the code is clear, you will know what subset you have to change and you are less likely to introduce a bug.

When?

You can refactor before adding a new feature, preparatory refactoring.

Understand what the code does, comprehension refactoring. Move the understanding of the code from your head to the code.

Refactoring is a part of programming.

There are cases when the refactoring efforts can take weeks to complete. A useful strategy is to agree to gradually work on the problem over the course of time and not having a team dedicated to refactoring.

Refactoring during a code review would be better with having the original author of the code present because he can provide context on the code and fully appreciate the reviewers’ intentions (code review + pair programming).

Don’t refactor when it’s easier to rewrite than to refactor it.

Resume tips

Keep the technical skills section relevant. Keep it relevant to the job you are applying to, the your brand and to the current market.

Review the job announcement for Knowledge, Skills and Abilities (KSA). Make sure some of those terms are on your CV as well.

Show impact.Make people understand the scope of your work. Tell the story of your software .

Talk about challenges faced during the development lifecycle. Show that you can handle the unexpected.

Emphasize connection with business and non-tech teams. Highlight communication and collaboration skills and show you get business and customer needs and that you work well with others.

Create a « Technology Skills » Section. Include it right below your branding paragraph on Page 1 and organize it according to category (methodologies, development tools). Omit skills that are obsolete or that you haven’t used from some time.

Once you become a senior and manage more people your leadership skills are more important than your technology skills.

For every job description add the most impactful thing you worked on. Make sure that it will be most likely to be read.

Write the most of the resume in plain English and skip the IT jargon. Don’t confuse people with words and acronyms that they won’t understand.

Follow PAR (Problem, Action, Resolution). People only are what you accomplished, so make sure that each describe the problem, followed by an action and concluded with a measurable resolution.

Be ruthless with yourself. If the bullet doesn’t meet each step of PAR, then it’s not important or impactful enough to make it onto the resume. « Face the brutal facts ».

Show domain knowledge about the industry in which you work. Round out the value you are bringing to the new role/organization with an emphasis on soft skills and business understanding.

Show ability to evolve with technology. Understanding both process and data needs are necessary to become more than a coder.

Show versatility by demonstrating the range of applications and technologies. It illustrates your adaptability.

Employers want to know the whole person they are hoping to hire and not just their technical skills.

Resume

Why is it important to have a resume?

Having a resume is a standard. It gives managers something to analyze, people will always ask for it and it is ingrained in HR’s process.

CV is a marketing document and not your obituary. Resume is a forward facing marketing document. Obituary is a backward facing list of events. You should think in terms of « here is what i bring to the table », « Here is what that means for you » and not « this is a list of what i have done ». The resume should make company saying without a lot of thinking: this person will bring value to this role. Talk more about values and the benefits you can bring.

Build your resume

There is value in creating your resume. Creating it makes you think critically. It makes you choose your best value, it is a great interview preparation at the end of which you will own the conclusions.

Buy your resume

The cost of hiring a professional to write your resume is relatively minimal comparing to the value that can be bring. Certified resume writers are trained in their space, they are experts at creating your marketing document).

  • careerdirectors.com
  • careerthoughtleaders.com
  • thenrwa.com

Audience

  • Hiring managers – intimate understanding of what your skill set is.
  • Your contacts – most of them won’t understand your skills
  • HR – has a basic understanding of what the job is about but sometimes what is on the resume won’t make sense for them.
  • ATS (Applicant Tracking System) a computer audience, it makes analyses on your resume and compares it to a job description.

Use a tagline or a cover letter for the persons who might not understand your resume.

Resume templates

Virus scan before sending it.

Avoid too much frill.

Chronological – the most popular.

Functional – thought as a format to hide age or experience level. Removes dates and don’t order by company. The focus is on the skillset.

Combination/hybrid resume –

  • top is functional (the top 2,3 skills, details and experience with those skills)
  • a list of companies and dates

Create a solid resume

  • solid – not amazing, but also not embarassing
  • good starting point and useable
  • online resume builder (livecareer.com, resumegenious.com, cvmkr.com, visualcv.com)

Convoquer des personnes dans un mail

Chers collègues,

Je vous invite à insister à notre réunion habituelle du vendredi à 13h. Cette-fois ci, elle se déroulera dans la salle de réunion du deuxième étage et son objectif restera le même: identifier les plus grands problèmes de nos clients.

Vous trouverez ci-joint le formulaire inscrivant l’ordre du jour ainsi que les quelques points essentiels à débattre. Cependant, si vous souhaitez évoquer d’autres sujets, merci de nous en faire part avant la fin de la journée.
Pour de plus amples informations ou pour confirmer votre présence, n’hésitez pas à me  contacter au numéro ci-dessus.