Having the right tools is one of the core things you need to have if you want to succeed in business. We have a toolset which enables us to deploy fast, develop easily and get forward.
I want to help you to have a more efficient process in place. I describe which tools we use and how we think about employee management.
- reduce friction: everyone uses the same OS and software, this saves a lot of time
- search for efficiency gains in our daily routines: boring or monotone activities get automated
- use proven project management tools: we use ClickUp and Clockify, tools used by Google and other efficient companies
- write down your knowledge: use a wiki system to document processes and checklists (we use Outline), this is extremely important
- care about emotions: business is based on people - give them the tools to grow and both sides will benefit
- use checklists: we don't forget anything because we defined the whole process - even if we forget something, our process corrects us (weekly status updates, continuous feedback)
What tools do we need for a good structured business?
There are some core tools every company and especially tech companies should have. It seems obvious to say that you need a wiki, a task management tool and other important things, but I've seen many companies where bad tooling slowed down the whole process.
Good tools for the employees
The Setup and the OS platform
Before getting started with the tools to structure a business, it's important to also focus on the tooling of the employees. We use macOS with a network drive and everything is connected with LDAP so you can easily switch between computers. All computers have the required design and development software and all the other tools. Every employee has a MacBook or works on a Mac. I'm not passionate about Apple products, I just want to reduce the friction for the employees.
Windows doesn't support the easiest things like ssh, generation of SSH keys, git, python and others. You have to install Cygwin or MinGW to get the required tools while most Linux distributions and Mac installations come with it pre-installed. It's more time-efficient to use that OS instead. It also reduces the friction for designers - most of them are familiar with macOS because some design tools like Sketch are only available on Apple computers.
It just works and it does it without any problems and this is the only thing that matters for me. And macOS looks very polished. The choice of the smartphone OS is not important for us and the employees are free to use whatever they want (iOS and Android), because all tools we use support both platforms.
Our pre-installed software on every machine
- Design tools: Adobe Suite (InDesign, Photoshop, XD, ...), Sketch, RightFont for font management
- Development tools: Sublime Text, Python 3, Node.js, Docker, GitKraken for visual git repository management (free), Sequel Pro
- For Mobile Developers: XCode, Android Studio, Phonegap
We use ZulipChat. I prefer it over Slack because it's open-source, can be hosted on your own and has a better thread model (it uses topics to organize channels). In Slack it gets overwhelming very fast ("You have 100+ unread messages", sigh) - Zulip supports asynchronous communication better (which makes sense for us because my co-founder lives in New Zealand). Missing a message because Slack isn't organized is very dangerous. Therefore something like Zulip Topics is extremely helpful to get an overview over the discussed topics. It has great apps and it's completely free.
For everyone who isn't satisfied with Slack - give Zulip a try.
Every company needs a place where they can put their knowledge. Many big companies prefer Atlassian Confluence, but Nuclino and Wiki.js (this one is open-source) are good choices, too. We use Outline Wiki (also open-source) which is very simple. We don't need something fancy: a minimal tree structure with a Medium-like editor is all we need.
I've seen many companies where there is no knowledge base. I think this is one of the most fundamental aspects of a company. If an employee leaves or is ill, the knowledge should still be there. We use the wiki for onboarding, project overview and general information about projects. Without a knowledge base, you're basically hoping that you won't forget your current know-how. This tool is crucial for any business.
Many people love Toggl, but I'm a fan of software where I'm able to self-host (or better: open-source). I see Clockify as the best option - it's free, it has on-prem service (if you need it) and it supports teams, projects and it's simple to differentiate between billable and non-billable work. It has export functionality and detailed reports so we can click on a button and the time sheets are done. Apps and Desktop clients are also included.
We use ClickUp for our task management. It's similar to JIRA, Trello and Asana. It has a slick UI/UX and it's easy to use. We simply need lists with tasks and their assignees. This helps us more than cards on a Kanban like Trello Boards.
Every list has a general description about the general task and has specific points (e.g. "Responsive Design for devices with <768px width works now", "Tested on Chrome, Android 7 and Safari, iPhone X") that have to be solved.
We use templates with a general outline of a project (e.g. for a website project) so we can bootstrap the task management of a project in seconds instead of minutes or hours. This makes us more efficient. It also integrates with Clockify, Toggl and others.
We simply use Google Calendar and share our calendars. It gets the job done. For people who want to self-host, I can recommend NextCloud - it's open-source and has a ton of features like file sharing, group management, calendar and plugins.
We use Trello Boards for general management. We have a general Trello Board where we discuss the general direction and strategy of the company ("What are your life goals? How can we help you to achieve them? What values are important for you? What are the values and the culture of our company?").
We don't use Trello for our daily task management because we're not convinced that the system with the cards is sufficient to visualize the dependencies of the tasks. ClickUp serves us better because projects get complex fast and design and development process on the same Kanban makes it confusing very fast. Personally I prefer simple To-Do lists (I use Omni Notes on my Android phone and Bear on my MacBook), so something like ClickUp or Asana fits me more.
We've built spreadsheets that calculate tax and health insurance costs. We can easily create payrolls with them. There are many people who use services for that. We need <1h every month to create it ourselves. I think it's a good thing to keep this under control because payroll is such a critical process in a company and you don't want it to fail, ever.
Tooling is not only the software we use - it's also the processes we define. We have several processes in place to make our business more efficient.
Many people despise meetings because they take so much time. We're not fans of pointless stand-up meetings and doing Skype calls all day long. We love short meetings that get to the point.
We have four types of meetings:
- WIP: Mondays in the morning - we talk about upcoming projects, the current state of every project we're currently working on. Afterwards, every client gets a weekly status update (Where are we? Are we on budget? Do we see problems? Nothing new this week?).
- Mood: Two times a week - we talk about our feelings. How are you? Do you feel good - if not, can we help you out? We try to focus on the people. If the employees are happy, the company is happy.
- Learn: Every two weeks - we talk about our learning goals. You want to learn that new framework? Great, we'll search for videos and online courses. You need help with something or want to build new skills? Great, we'll support you. We want that our employees can grow on their own terms.
- Life: Every three months - we talk about our life goals. Where am I? Who am I? Where do I want to be in 3 months, 6 months, 3 years, 5 years? How can we help you to be there?
These types of meetings seem to be pretty inefficient on first sight - why do we care about the emotions so much? It's because we're convinced that every company is only as good as the employees. The culture we're building defines every interaction with every customer. The values we live define how we communicate and how we work. So it's natural to talk about those values and to embrace them.
We would be inauthentic if we would tell clients that we care about them and don't even know if our employees have big life decisions. Being totally clueless about the inner feelings of employees is what makes companies so inhumane. It's worth it and the meetings don't take much time. Most of the time it's "I'm ok, let's rock this!" - only sometimes there is a "I have some pain points I want to discuss". And then you take the time for it.
If you don't have those talks, you're not saving time: If your employee suddenly leaves your company because you never listened to the problems and wishes, it will take you a lot of time to find somebody new. So it's also economically rational to care about your employees on this personal level.
Every project type has a checklist. You can start at the top (acquiring the client, do the workshop, get the texts, logos etc.) and work your way down the list and after you've completed all the points on the checklist, you have a satisfied client. Example:
- Create internal project: Create client and project in ClickUp, Clockify and the projects folder
- Do the workshop with the client: What are the goals and values of the company? Who are you and what do you want to be?
- Analyze the results of the workshop and send the final report to the client: They will learn something new about themselves e.g. who their ideal customer is and who they really are.
- Get all their stuff through fill-out-forms: Existing texts, websites, images, logos, favourite colors, print media, ... - we need this to know exactly what we need to give the customer to give them maximum value.
- Wireframes: Sitemap, sections (Header, Carousel, Text with Image, ...), required data fields - we talk with the customer about the specific expectations. If they're satisfied, we go to the next phase.
- Development of the final design and website: The designers make a final design (with feedback by the customer) and the developers start to develop the website.
- Testing: We get feedback from the customer and iterate on the final website until they're truly satisfied.
- Afterwards, we talk about the project. How did it went? Do you need something else? How can we help you succeed? This conversation is very important, because it gives a nice frame around a project and prepares the next project with this client.
Our development server
We use a Linux machine with Debian and Docker that resembles our production server. It's very important that they are very similar so you don't encounter problems in the production phase that you didn't notice because you've only deployed on your Mac or your own Arch Linux installation.
Our production server
We use CaptainDuckDuck which gives us Heroku-style deployments (just
captainduckduck deploy) and Minio.io (open-source S3-compatible server) for our file storage. We have two deployment projects (gaia and terra) which gives us the foundation for every type of project (PHP, Django, Node.js and others). We can build and deploy a project in seconds with this tooling.
Alternatively I can recommend drone.io (open-source CI/CD platform) to do this, we prefer to do it explicitly using CaptainDuckDuck.
We can set up MySQL, MongoDB and PostgreSQL instances in seconds using CaptainDuckDuck. Automatic scaling, health reports and automatic SSL is also supported out of the box.
Where do we host?
We use Netcup servers. They are very cost-efficient, it's easy to manage them and the support team is top-notch. We like to avoid Amazon AWS because we're able to do the scaling on our own and most projects have limited traffic. For websites with high traffic, we use caching strategies and Cloudflare (it has a free plan which is very generous).
How do we manage code?
We use Gitea, a fork of Gogs. It's very easy to set up and has an issue tracker. Every project has a TODO.md file in its root directory where we write every task down - this process is easier than integrating Asana or Trello into the workflow for the developers. Without changing tools, we can see where we are and which tasks are next.
# TODO - [ ] a task -- [ ] a subtask - [o] working on it - [x] done // a comment
Those are the tools and processes we use to run a successful business. We're fans of minimalism and simple principles. I hope you've found something useful. We would love to listen about your efficient workflow and your values!