Character Orientations

In this article, I comment on Erich Fromm’s theory of personality, by describing two of his personality types.

The Receptive Type

The receptive type needs to be supported by external factors. Eventually, this type believes it will be rewarded by the world or other people for doing a well-planned work and following controlling rules.

For example, an individual may lack confidence in their own abilities and try to follow the accepting and optimistic path.

It’s important to notice that a receptive co-worker will usually work in harmony with the productive type, can be a fundamental building member of a team and can grow into the productive type.

The Productive Type

The productive personality type transforms negative feelings into energy. In detail, a negative feeling will be fully or partially acknowledged and then it will be channeled into productive work hours, by focusing on building and delivering meaningful products and relationships.

For example, a productive type will focus on delivering a project in time valuing reason more than rules.

This is often considered as a healthy approach to the workplace inevitable challenges and usually results in a simple description such as a “good” co-worker.


People tend to deal with life in general and workplace problems more specifically, by developing certain personalities.

The receptive type focuses on external rewards and may lack confidence while it is on the path to becoming a productive type.

On the other hand, the productive type will overgrow external factors, is influenced by internal motivations and can turn negativity into productive behavior.

Productivity Tools

In this article we will discuss some every day productivity tools.


The list contains tools available to all known operating systems, for the purposes of this article I chose a Debian distribution. You can scan the list for any interesting findings or just explore one by one the presented tools.

1. Time management – Pomodoro

The pomodoro technique is a time management technique that uses a timer to break down work into intervals.
My tool of choice is the because it integrates seamlessly with my desktop. It is available for Linux, even though there are similar pomodoro applications for all operating systems.

2. Note management – Note Board

Note board is a productivity app for taking notes(!!). I use only the chrome extension as it supplement my workflow. In particular, I use it for saving small bits of any webpage for later study or further categorization into the google drive notes (see later).

3. Cloud storage – Google drive

Google drive is a free cloud storage solution by Google. It enables seamless sync with my android phone and my tablet, a good enough text editor and basic version control.

4. Reading list management – Pocket

Pocket is productivity tool which helps you manage and tide up your web reading list(you can also use it for videos). I use the chrome extension. The cool thing about pocket is that you can easily download the android app and have an offline version of your whole reading list in your phone, so you can save on your mobile plan.

5. Text editor – Vim

Vim is a highly configurable and by default extremely lightweight text editor. I use vim to write code, notes, blog posts and really anything. It’s clearly a personal choice here, so use any text editor you feel productive with.

6. Task management – Taskwarrior and Todoist

I am a fan of organised and well thought to-do lists that supplement my workflow and not dictate it. For this reason, I am using two tools to manage my to-do tasks.
For simple things that I also need to have available at my phone, I use Todoist , which provides a chrome extension and a phone application.

For more work related things or more complex tasks that for example have big descriptions I use Taskwarrior . Taskwarrior is Free and Open Source Software that manages your TODO list from the command line.

7. Version control – Git

Finally, I cannot think how my workflow would be without the ability to create different versions of the same document either for testing or experimenting with an idea without keeping many files like file1.txt, file1_1.text etc. Git enables you to do exactly that. Git is for everyone who could benefit from the aforementioned workflow and not only for developers.

With this in mind, I also use Github to host in the cloud any git directories.


Productivity is a complex problem and finding the right tools for your workflow is a worthwhile quest. On the positive side, when I learned good enough the presented tools my workflow became more standardized and I stopped wasting time thinking about where to store a temporary small note(note board, vim) or when to take a break(pomodoro). I hope you find something useful in this list.

Pragmatic Teams

In this article, we will discuss my notes regarding the pragmatic teams, what are they and why you should strive to build a pragmatic team or become a member of one.

Why build a pragmatic team?

First of all, this article’s title is influenced from the excellent book about software engineering best practices from Andrew Hunt and David Thomas, The Pragmatic Programmer: From Journeyman to Master, which I read recently.

In addition, I strongly suggest not only to read, but also take notes and think about the ideas and the engineering culture this book suggests. As an illustration, it covers topics ranging from personal development and career decisions to architectural patterns and software development methodologies, so most readers will find something interesting that applies to their current situation.

What are pragmatic teams

The first thing to remember is that a pragmatic team is not a team which is formed under some vague principles. In contrast, it is a team that consists of pragmatic developers working in an enabling environment.

Most noteworthy, the authors of the aforementioned book promise that once a group of pragmatic developers is formed, the group will define their own team dynamics that best suit them.

Pragmatic team dynamics

We should build our pragmatic team on some distinct unconditional values. In general, all members of the team internalize these values and are always seeking to improve, evolve and adapt.


Teams should not tolerate small bugs that no one fixes. All team members should take responsibility for the quality of the products the team is shipping.


Make sure everyone is able to monitor and actually monitors the project for changes. Monitor things such as:

  • Project scope
  • Time issues
  • Feature requests
  • Any requirement changes


Developers must talk to each other. Pragmatic teams communicate clearly:

  • They hold structured meetings
  • They produce consistent documentation
  • The team speaks with one voice and understands humor


The well-known development rules should be respected and followed in the context of a team too. The point of this strategy is that all team members know to whom to talk about their project issues and to eliminate duplicated work.


Team activities can’t happen today in isolation. In detail, people from different backgrounds can offer valuable insights into a problem domain they are not experts.

Call to action

To summarize, the pragmatic team notion really helped me grow as an engineer and as a valuable team member.

From my experience, before we can start discussing building our culture, refining our methodologies and expand our teams we should fulfill our own personal duties.

All things considered, we should strive to build an enabling environment. Furthermore, learn to celebrate the power that comes from individuality. Rather than fear anything not technical, focus on how to ascend beyond the engineering tasks.

Most of all, adopt a growth mindset and grow as communicators, problem solvers, and social beings.