Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Install ubuntu 18.04 on Thinkpad X1 carbon in a proper way #27

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
## SparkFabrik dockerized Raneto-based playbook
## SparkFabrik playbook

This repository contains our company playbook (and possibly all the knowledge around our company-wide practices and policies), packed with a Raneto container to consult them.
Ideal destination for this stuff is on a domain like **playbook.sparkfabrik.com**. So far you can `docker-compose up -d` and visit http://playbook.sparkfabrik.loc to enjoy the result.
This repository contains our [company playbook](https://playbook.sparkfabrik.com) (and possibly all the knowledge around our company-wide practices and policies), packed with a Raneto container to consult them.

## Contributions

So far the project is meant to be internal. All company members can download the project and provide merge-requests towards `master` branch.
The naming convention for the branches is:
So far the project is meant to be internal, all company members can clone the project and set up a local environment with the command `docker-compose up -d`.
After that, a local instance of the playbook will be available at `http://playbook.sparkfabrik.loc`.

To contribute provide pull-requests towards `master` branch. The naming convention for the branches is:

* `section/section-slug-title` for new sections (hardly they will be open by a company member, mostly it will be a matter of pre-made structure, but suggestions are welcome)
* `content/description-of-the-content` for content contributions of various nature, like typo corrections, adding a new procedure or policy, etc
Expand Down
16 changes: 8 additions & 8 deletions content/guides/local-development-environment-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ On MacOSX the local host resolver is the one native to MacOSX itself, while the
### Automatic installation with the sparkdock privisioner (recommended way)

```
bash <(curl -fsSL https://raw.githubusercontent.com/sparkfabrik/sparkdock/master/bin/bootstrap)
bash <(curl -fsSL https://raw.githubusercontent.com/sparkfabrik/sparkdock/master/bin/install.macosx)
```

This will provision a VirtualBox VM ready to use and will do most of the configuration required to access containers from outside the VM. Also dnsdock container will be created and activated.
Expand All @@ -60,7 +60,7 @@ If you already have VirtualBox, select a custom ("Ad hoc") installation and dese
After installing Docker Toolbox, use the terminal to create *a new Docker machine* using this command:

```
docker-machine create dev -d virtualbox --virtualbox-disk-size 50000 --virtualbox-cpu-count 1 --virtualbox-memory 4096
docker-machine create dinghy -d virtualbox --virtualbox-disk-size 50000 --virtualbox-cpu-count 1 --virtualbox-memory 4096
```

Adjust the settings according to your system; the command above specify:
Expand All @@ -73,18 +73,18 @@ At the end of the installation use the `docker-machine ls` command, and you shou
```
% docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
dev * virtualbox Running tcp://192.168.99.100:2376
dinghy * virtualbox Running tcp://192.168.99.100:2376
```

Now you should add to the init script of your shell sessions something that automatically loads environment variable needed in order to connect to the dev machine.
Now you should add to the init script of your shell sessions something that automatically loads environment variable needed in order to connect to the dinghy machine.
Add this lines to your *.bashrc* or *.zshrc*:

```
eval "$(docker-machine env dev)"
export DOCKER_MACHINE_IP=$(docker-machine ip dev)
eval "$(docker-machine env dinghy)"
export DOCKER_MACHINE_IP=$(docker-machine ip dinghy)
```

Install *dnsdock* with this command, that will create a container that will always start once the dev machine starts:
Install *dnsdock* with this command, that will create a container that will always start once the dinghy machine starts:

```
docker run --restart=always -d -v /var/run/docker.sock:/var/run/docker.sock --name dnsdock -p 172.17.42.1:53:53/udp aacebedo/dnsdock:v1.15.0-amd64
Expand All @@ -97,7 +97,7 @@ After either manual or automatic installation, it's recommended to manually conf
*Set up routing*

```
sudo route -n add -net 172.17.0.0 $(docker-machine ip dev)
sudo route -n add -net 172.17.0.0 $(docker-machine ip dinghy)
```

*Clear your DNS caches*:
Expand Down
15 changes: 15 additions & 0 deletions content/job-roles/administration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
Description: Administration roles and functions in SparkFabrik
Sort: 15
*/

## Administration owners

Administration in Sparkfabrik is carried out mainly by members of the [Executive Board](/job-roles/governance) with the help of [Supporters](/job-roles/role-isc-supporter) - employees owning one or more processes and procedures vital to the health of the company.

Despite not being directly involved in core-business or value delivery, Supporters are **the glue that holds governance and operations together**, thus being an essential gear in the company machinery.
They are facilitators, assistants, secretaries, organizers and the ultimate source of truth about so many information necessary to managers to properly hold the steering wheel.

The [Supporter role](/job-roles/role-isc-supporter) has its own [impact scoring card](/working-at-sparkfabrik/impact-scoring) and, if not for the nature of its duties, is subject to the same requirements and quality standards as the other [operational roles](/job-roles/operations).

In addition to supporters, [Lead developers](/job-roles/role-isc-lead-developer) and [Professionals](/job-roles/role-isc-professional) are often involved in administrative processes like reporting, project budgeting, lead assessment and so on.
53 changes: 53 additions & 0 deletions content/job-roles/governance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
Description: Governance roles and functions in SparkFabrik
Sort: 20
*/

Governance in Sparkfabrik is organized in functions, not roles.
C-level roles are assigned to key people, that generally own government functions. Owning doesn't imply the function is totally carried out by that person. Professionals and lead developers at operational level cooperate with the government function owner to make it happen.

## Executive board

The executive board is in charge for the strategy and business planning of the company.
Current board is composed by company founders, with the following duties.

* **Stefano Mainardi**: CEO - Responsible for the overall progress of the company. Praised for success, and held responsible for setback.
* **Paolo Pustorino**: Head of HR - Responsible for workforce training, development, management, recruitment, rewarding, compliance and ethos.
* **Marco Giacomassi**: CFO - Oversees company's financials. Responsible for budgeting, accounting, reporting, forecasting and investing.
* **Paolo Mainardi**: CTO - Oversees company's technology. Works to ensure that technology-related decisions align with business goals.
* **Alessio Piazza**: COO - Oversees company's day-to-day operations, sourcing, process control, resource allocation and activity planning.

## Steering committee

The steering committee works to overcome organizational problems and advance company's practices. It operate on a constant basis on top of the projects level, overseeing the processes, validating methodologies and improving the whole delivery process.

This committee is composed by the CTO, COO, Head of HR, all Professionals and all Lead Developers in the company.
The owner of Steering committee events is the COO.

Each quarter (the first Wednesday of each quarter first month) the committee has a 2 hours facilitated meeting in which they define:

* Top priorities to be addressed (C-levels can set them or call for co-generation and voting)
* State top priorities in terms of initatives
* Willing people can apply as owners of those initiatives

Initiatives clearly states SMART goals to address the related top priority. They should bring a change or even revolutionize an aspect of our work, such as introducing a new technology, change an organizational approach, introducing longed-for tools, etc.

Owners commit to lead the completion of the initiative goals by the end of the quarter. Initiative owners will be pubblicly appointed. We want those people to challenge themselves and take on additional responsibilities to shape those skills that may in the future make them C-levels.

The format of the quarterly meeting is aggressively timeboxed:

* 20 mins: Identify and list weaknesses or opportunities for improvement in current approach.
* 30 mins: Define goals for a better condition (1 to 3 goals depending on the size).
* 30 mins: Generate SMART initiatives for the quarter that fulfills the goals.
* 20 mins: Appoint a single owner for each initiative.
* 10 mins: Define a scheduled session within 7 days where the owner will present and discuss his incremental plan to the completion of the goals (this will allow resource planning and assignement).

The presentation of the initiative plan must include:

* Quantification/qualification of time and resources necessary to fulfill the goal.
* A list of the deliverables to be expected (tools, docs, materials, etc).
* A calendar for brown bags/internal presentation to review increments with the whole company.
* If and how the company is expected to support the initiative deliverables, during the quarter and in the future (say, open source contributions etc).
* A list of outward facing material to communicate how your initiative is making a difference, such as blog posts, events speeches or the maintenance of open source contributions.

While the initiative should be completed in the quarter, the ownership won't stop there: communication, promotion and ongoing maintenance may last longer and owners are supposed to take the commitment.
33 changes: 33 additions & 0 deletions content/job-roles/operations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
Description: Operational roles and functions in SparkFabrik
Sort: 10
*/

In Sparkfabrik the term _developer_ is used generally to identify employees that deliver solutions to the customer.
It doesn't really matter if your job is to write code, design a new interface or taking care of the operations on a cloud appliance. Your job is still to _develop_ things: be it from scratch or to improve them.

## Careers

Operationals career paths expand vertically (_Growth_) and horizontally (_Specialities_).

### Growth

We recognize four levels of professional skills, depending on seniority and level of proficiency. Each level has its own salary bracket, mission and clear expectations. Developers [progress over this career path](/working-at-sparkfabrik/career-advancement.md) by their lenght of service, their results and by nurturing their technical and non-technical skills.

* **Junior developer**: this is the level where duly graduated people or developers already experienced on other technologies start. We expect people to quickly step up to the next level, ideally in 12 to 36 months of employment.
* **Senior developer**: this is the level that compose the big part of our company and that we heavily rely upon. People at this level are skilled and proficient with both our technology and our methodology. They can mentor juniors and are authonomous in their work.
* **Lead developer**: those are the people that lead teams and projects in Sparkfabrik. Those people have a senior level background on top of which they developed the soft skills necessary to govern the social, technical and organizative complexity of our work.
* **Professional**: this is the highest operational role in Sparkfabrik. Professionals are the people that embody a speciality, can work with one or multiple teams at once, represent Sparkfabrik at important tables, provide training and mentorships, etc. Professionals may occasionally lead a team, but they are actually supposed to work cross-teams as reference key people.

### Specialities

We explained Sparkfabrik only employs _developers_. Sure there are differences and each person has her own natural or acquired inclination. We broadly recognize four _Specialities_ that qualifies you as a developer and do our best to make you shine in accordance with your nature. During your career you will be probably cover more than a single speciality, even at the same time.

* **Analyst**: Analysts are great when it comes to map a domain, fathom complexity and express it in a clear, rational, understandable form. Analysts may not always have a solution at hand but for sure they know when a need is fulfilled or a problem is solved. Analysts skills make for great Product Owners.
* **Architect**: Architects describe the best possible solution to a framed problem. They are great decision makers, understand the long term implications of technical choices, know how to quickly probe, understand and adapt and always grasp the big picture.
* **Specialist**: Specialists are vertically expert in a discipline or area, be it writing software, cloud operations, implementing Agile or UX design. Those are the most keen to work in pair with project teams on the long run, when there are critical challenges.
* **Manager**: Managers make things work. They coach, measure, plan, steer and ultimately support people to give their best, remove obstacles, improve their processes and procedures. In Sparkfabrik people are never managed, work is. So managers govern but never rule.

## How to advance

We track and rule [people career advancement](/working-at-sparkfabrik/career-advancement.md) to make it fair and clear to everybody.
59 changes: 59 additions & 0 deletions content/job-roles/role-isc-junior-developer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*
Title: Roles - Junior Developer
Description: Junior Developer role in SparkFabrik
Sort: 50
*/

## Mission

* To realize technical solutions that satisfies customer's needs.
* To follow the direction of your team lead in doing so.
* To work following our agreed procedures and matching our quality standards.
* To value collaboration and critiques as the building blocks for trust with colleagues and customers.
* To value continuous improvement, seek out opportunities to learn and live by the principles of the Agile manifesto.
* To seek assistance every time you are in the need, not trying to shine by self-love or obstinacy.

## Values

* Passion
* Curiosity
* Communication

## Awesomeness horizon

If you score three times in a row over `2.5` you may get a career advancement.

## Attitude

### Teamwork

You share your goals with your mates and work with them, never playing the hero or being a team of one. You speak your voice clearly, even when it's difficult, without holding relevant information for fear or stubbornness. When being frank makes you uncomfortable, you still strive to be polite and cheerful so you can make your point.

### Self-organization

Your own schedule and workload balance is your responsibility. You have clear what's expected to you each iteration (week, sprint, milestone) and step up to discuss conflicting priorities and possible bottlenecks with the management.

### Lucidity

You have clear what's expected from you and what you have to do to match the expectation. When you feel like you lost your goals, you speak up and do your best to have them clear.

### Awareness

You perceive the overall impacts of your day-to-day choices and know when to ask for validation. You face challenges proactively, not always waiting for others to solve problems for you, but know when to stop and ask for help to avoid wasting time or losing your mind on things bigger than you.

### Strong opinions, lightly held

You speak your mind and sustain your ideas with words and facts, but you are open to criticism and listen with open ears.

## Business impacts

* You define implementative details of solutions that fulfill business goals, matching our high quality standards.
* You realize solutions that fulfill business goals, matching our high quality standards, as defined with your team.
* You learn new, useful skills, taking advantage of any opportunity, balancing possible negative impacts on your duties.
* You help improve internal projects (even if just with bugfixes or documentation) based on your skills, aspirations and training goals.

## Contributions

* You propose or help to generate content about technology, methodology or practices for Sparkfabrik's media.
* You keep our Company Playbook up to date, extend and fix it every time you see the need.
* You deliver contributions (bugfixes, documentation, translations) to community projects based on your skills, aspirations and training goals.
Loading