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 that enables us to deploy fast, develop easily, and push forward.
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 and some of these were even missing. So here is a list of tools that we need for a well-structured business.
- care about your employees: the people are the business
- use checklists: every standardized process needs a checklist - it reduces cognitive load and errors
- reduce friction: everyone uses the same 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 big companies
- write down your knowledge: use a wiki system to document processes and checklists for fast onboarding of new employees and intricate details of project requirements
Tooling is not only the software we use - but 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, either. But these are the five meetings that we've learned are indispensable:
- Weekly WIP: Mondays in the morning - we talk about upcoming projects, the current state of every project we're currently working on. Afterward, every client gets a weekly status update (Where are we? Are we on a budget? Do we see problems? Nothing new this week?).
- Daily Standup: Every day, all developers meet for about 10-15mins. The questions are: What am I currently working on? Do I need help? Can I help somebody using my know-how?
- Satisfaction Meeting: Every two weeks - we talk about our feelings. How are you? Do you feel good - if not, can we help you out? Are you dissatisfied with the work or are there any unresolved conflicts? We try to focus on the people. If the employees are happy, the company is happy.
- Monthly Growth Meeting: Every month - we talk about our learning goals. Do you want to learn that new framework? Great, we'll search for tasks where you will need it. You need help with something or want to build new skills? Great, we'll support you. We want to enable our employees to grow
- Quarterly Growth Meeting: Every three to six 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 get there?
These types of meetings seem to be pretty inefficient at 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 any upcoming 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 an "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 an internal project: Create client and project in ClickUp, Clockify, and the projects repository
- 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, favorite 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 go? Do you need anything 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.
Good tools for the employees
The Setup and OS
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 have support for 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 of 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 the latter.
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 timesheets 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 of 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 the 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 and we can easily create payrolls with them. There are many people who use services for that, but we have the advantage that we know a tax expert who checks the numbers. 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.
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 CapRover (formerly CaptainDuckDuck) which gives us Heroku-style deployments (just
caprover 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. Very small projects (prototypes) also have 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 have to be solved in which order.
# 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. I hope you've found something useful in this post!