Authy was my bad decision to use it for two-factor authentication. I remember that I chose it because of its ability to work on both PC/Mac and mobile phone, so if I work on a PC, I don’t need to use my phone to see the validation code. The GUI was very bad on all platforms, but it was working at least. Authy is sunsetted, the team explained on their website and stated that it will no longer be supported after March 19, 2024.
On the other side, I was using KeePass for storing passwords, backup codes, and other secret texts. The reason for the choice of KeePass was the same: it works on multiple platforms and devices. But there were some problems:
I need to find a way to sync the passwords myself. All KeePass clients have their options, and keeping the files in iCloud is one of them.
Every client comes with a missing feature or a bug. The fact that the application was paid was not a problem for me, but it’s not a good idea to make payment for each client. Some clients support multiple platforms, but they don’t work as well on all platforms.
I was using KeePassXC on MacOS and KeePassium on iPhone. If I decide to go back to Windows, I will have to find a client for that too. I really don’t have time to investigate it…
In short, I was not happy with either of them and I started to search for an alternative app. My expectations are:
If it’s possible, I want to use one app for two-factor authentication and password storage to reduce app requirements and subscriptions.
I want to choose the sync method myself. You know there were leaks in some applications like LastPass and OnePassword, and there’s no a trustable way of syncing the passwords so each new syncing method means another system that must be secured. I want to continue to use my preferred cloud storage service for syncing the passwords.
And, of course, I still need to access my passwords from multiple devices.
I would like to share with you what I prefer at the end of this article, but I really could not find a long-lasting solution to meet these needs. All I’m doing now is waiting, Apple announced that it is developing a new password manager called “Passwords”. I hope it will solve my problems completely.
The existing password application in Apple is not a separate application; it’s a part of Settings. However, you can use it for two-factor authentication and storing passwords. For all other secret texts like backup codes and the secret keys of your blockchain wallets, you can use the Notes app, but don’t forget to lock the notes for added security.
I’m very conservative to avoid changing my routines, habits about my preferred software and hardware. But on the other hand, I always follow the new tools and try them as much as possible. It’s not easy to change habits, but if I think that the new alternative is better than my current one, and if I think that the new tool will increase my work quality, then I take a risk and replace it.
Sometimes I’ve made the wrong decision, for example I was a KeePass user and switched to the Pass CLI application because I thought I didn’t need such features. But then I noticed that pass app doesn’t have a good client for desktop and it’s not easy to configure GPG, repository access for iOS. Then I decided to use Apple Passwords to get rid of installing extra password and two-factor authentication applications.
Many developers have a repository that contains their public configuration files, and most of these are open to the public. I often look at these repositories, but unlike many people, I prefer to keep my config files as simple as possible, because it’s like adding a dependency to your project, every new dependency comes with a maintenance cost. The other main reason is that I want to keep flexibility. I don’t have specific requirements for any tools, but I always expect consistency between GUIs, keyboard shortcuts. And I also want to have all the features I need without adding a lot of plugins, or if that’s not possible, I expect the plugins to at least be officially supported.
So when I discover a new tool, or want to replace my existing tool with another, I follow these steps:
First, check your budget if the tool is not free. Some tools may come with a free subscription, but that does not mean the tool is always free. I don’t have a hard and fast rule here, but I definitely expect the paid tools to be better than the free alternatives.
Prefer the one that is ready to use quickly. I could prepare a server to host my blog. I have to configure the virtual machine’s swap area, prepare some cron jobs to back it up, use some plugins to cache and optimise WordPress. Or I can host my site directly on WordPress.com. I preferred the second option, but considering the first rule, I had a budget for it.
Look at all the features, but compare the options based on the features you really need. I used Evernote for a long time, then decided to investigate an alternative because of new expectations. Joplin was a good Evernote alternative, but I never used all of its features. So I even tried Apple Notes before making my final decision.
Own fewer extensions, use all features efficiently. If I’m not sure about the benefit of a tool or a feature of a tool, I temporarily stop using it and make a note of what I’ve lost. Tools are like a knight’s sword and shield: the more effectively we use them, the better they help us do our job.
Simplicity is fine to avoid distraction, but do not ignore helpful things. I don’t really need line numbers in my editor, but breadcrumbs are helpful to remember class name, module name, file path, etc.
These rules also help with my hobbies and family time. The older you get, the more important it becomes to get things done on time.
When I started using Windows in 2014, I continued to keep my development environment on Linux. I first did this with Vagrant; then, I used WSL, Docker, WSL2. I had an idea forming in my head ever since. I’m already using two different systems on a computer simultaneously; is it possible to use one in a thin client and connect to the other remotely?
PURPOSE
Let me first start by explaining why I want to do this:
I need a powerful computer to be able to use two systems at the same time. But, on the other hand, I would like to use a lighter computer with better screen quality and longer battery life instead of a more powerful computer.
I already have a computer provided by the company I work for, and I don’t want to move two computers at once. And I don’t want to keep my files and hobby projects on the workstation.
Sometimes I want to connect to my development environment from another device such as a tablet and phone. To do this, I have to keep my computer turned on all the time.
Now let’s look at where I can keep the development environment and investigate the other alternatives.
PLAN
Creating a virtual server using a VPS service like DigitalOcean or AWS Lightsail was my favourite option; however, when the need for RAM increased because of Docker, it’s possible to buy a Mac Mini every two years with the cost of VPS. So I eliminated this option.
My first thought was to make a portable PC using Raspberry Pi 4. Since I don’t have enough experience in this subject, I thought I could do it; but as the system requirements increased, there were quite a few problems, and it moved away from the structure I imagined. For example, when I added an SSD, there was a heat problem; I had to add a heatsink to solve it. In addition, it needed an adapter to meet the power, and it wasn’t easy to find an excellent case to match it.
Even though I looked for ready-made solutions later, I couldn’t find a product that I would like. So finally, when the performance achieved according to the cost did not satisfy me, I turned to other alternatives.
There’s no advantage of having a laptop for the development environment, but I wanted the device to be portable because I occasionally travel. I also thought of keeping the server machine in the same place all the time, but I wanted to be able to physically access the device in case of an emergency such as a system error or power outage.
I also looked at other alternatives such as Intel NUC and Beelink; I was disgusted with their brick-like adapters, so I preferred buying a Mac Mini because the case already includes the power supply. However, I still don’t understand why they can’t fix this adapter issue on PCs.
CONNECTION
After purchasing the machine that will provide my development environment and installing it at home, I made the first updates. First, I reviewed the power consumption settings to prevent the device from going into sleep mode.
Then I determined the programs I would use to connect to the computer. I’ll explain later why I use multiple methods and tools to connect to a device:
TAILSCALE: The first thing I need to know to connect the server is a fixed address of my server. I’m using TailsScale, which uses WireGuard technology for that. For example, when I set the name of my server as gerudo, I can connect it by saying ssh gerudo. The device I use as a client must also be registered in my TailScale account to find the address where gerudo is registered.
SSH & MOSH: The most necessary applications I used in the terminal are SSH and Mosh. Mosh prepares a more stable connection than SSH, but you need to configure your terminal to support 24-bit colours.
REALVNC: There is no need to install a separate VNC application for macOS, but you can see the machine’s address when you log in with the RealVNC account. But if you are using TailScale, you can connect with any VNC client by saying vnc://machine-name. I only use it when necessary.
DUET DISPLAY: It helps me to use my iPad as a primary or secondary display.
The server-side of the development environment is ok; now we can forget that part at home. Let’s come to the client part, which we will always have. You decide according to your situation, I will explain my preferences:
WORKSTATION: I can access my editor via SSH or MOSH from the computer provided by the company, and I can access the desktop with any VNC client.
IPAD: It’s better to use a tablet instead of carrying two laptops for me. I use the iPad to access my private files and use it as a second display for the workstation. Sometimes I don’t take my workstation, and I connect to my server using Blink from the iPad.
IPHONE: Although I prefer not this method, it’s cool to access the graphical interface and do small tasks on the server. I just use RealVNC.
As I said before, I use TailScale on all devices. Maybe not needed on the phone because RealVNC already knows the machine’s address via the user account.
Now let me explain why I use multiple connecting methods to the server. Don’t think that this whole structure is working smoothly; it’s not easy as it seems; there are at least a few critical problems I experienced once.
PROBLEMS
The first problem is that you need a display until you prepare your login account on Mac Mini for the first time. If I could use Raspberry Pi 4 as a server, it wouldn’t have this problem, but there is such a problem for Mac Mini, unfortunately.
The other problem is making the first internet connection when you move the server to a different place. If you use iPhone, you don’t need to worry about that because it shares connection info between the devices. But what if you don’t have an iPhone or iPad? So yes, you need a display again.
Another problem is with Duet Display. If the server restarts and you log out somehow, you need to log in again to use Duet. It is possible to solve this problem by automatic login; however, it’s creating security weaknesses, and it’s not a reasonable option. So instead, I connect with a VNC client and log in once. Then I continue with Duet Display.
Let’s talk about work-related issues a bit. I’m neither not a frontend nor a mobile developer so I can work with just a terminal. Sometimes I’m interested in game development; I plan to use Duet Display for that. If I were a frontend user, I think I could use my workstation as a client and keep the code on my server; and I would prefer to debug the code from the browser on my workstation. On the other side, I think none of what I said would work in mobile development. If you have any suggestions on that, I would love to know.
FINALLY
Due to the frequency of power and internet cuts in Turkey, adding UPS (uninterruptible power supply) to this kind of remote development environment is necessary. Apart from that, you can get paranoid and consider making a mini-robot that you can control with wifi and press the computer’s power button.
Pair programming has been a known and applied method for a long time. I know that it has more than one purpose and practice, but I want to say some things about an expert and a novice working together.
Investigation
For a long time, I went to the dental clinic for braces treatment, and after my treatment was over, I had surgeries two times (no worries, I’m fine). Sometimes there was more than one doctor at my appointments. One was relatively more experienced than the other and would generally instruct the less experienced to do what they would have done. The novice one was following the instructions without asking any questions because there was an actual patient, and they were trying to imitate the expert one as much as possible. After a while, the novice was now taking care of the appointments alone.
Another thing I observed was that not every novice doctor always matched with the same expert. I think that is an essential detail because it explains that experts also go through similar processes.
Pair Programming
In the projects I’m working on, there are code reviews, we’re writing documentation, and we update it as new questions come in from novices. Also, I don’t miss to say to the novices that they can ask me any questions, then I tell them that I’ll answer when I’m available, but none of these solves the main problem. So I realized too late the importance of pair programming.
To elaborate on the main problem, let’s think about the topic using the same metaphor: Consider there’s a novice doctor who cares for you for the appointment, and there’s no one else that helps them. They can’t make the patient wait for asking a question to an expert doctor and can’t record the operation during the treatment and ask for a talented doctor to review how they do the treatment later. So the patient comes to the appointment, they do what they should do, and the patient goes out when the doctor completes their work.
To speed up the adaptation of a novice to the team and save time for other friends in the team, it may be a good idea to give them a critical job that will directly affect the quality of the production, directing them verbally or in writing. So the novice will implement the workflow a few times under the observation of an expert, and the expert will let them take a risk.
Let’s move on to the second important issue, the case of experts and novices randomly matched every time. There are a few key benefits this provides:
The novice receives training from multiple experts instead of a single expert. If there is any inconsistency between the information received by the experts, the novice will object and warn the expert.
An expert will resolve this inconsistency by talking with other experts if necessary and will inform the final decision.
Both the novices will meet with multiple experts, and the experts will contact multiple novices. Thus, coworkers will establish relationships with each other one through their positions, not personally.
I find the benefit mentioned in the last item very important. It is crucial that the projects are independent of the person and that the positions are fixed and maintained by different employees. If a developer can quit a project quickly, the project is independent of the persons. Therefore, we can consider it the success of the developers of the project. The case is also good for the developer because they will strike a snag-less when changing their team or project.
The Cost of Making Busy the Expert
In pair programming, the time spent by two people doing the same job will be multiplied by two. However, it can be misleading to calculate the person/time with such straightforward logic. This cost is bearable in the long run to reduce the time it takes for a novice to get used to the job and take on responsibility.
The key here is to keep an expert busy for a maximum of one or two hours a week, ensure that each expert takes responsibility, and share tasks fairly.
The second point to reduce the cost is that the job selected for pair programming has to be the expert’s job, not the novice’s. In other words, the expert will give one of their tasks to the novice, observing them if they completed the task as well. In this case, the only cost for the expert will be wasting some time by giving the job to a novice instead of quickly doing it independently. But, as I said before, this cost is bearable in the long run.
Resources
As I wondered and researched this subject, I realized that it was a little more complicated subject than I had anticipated. Therefore, without prolonging this article, I would like to inform the reader by sharing some resources.
Awesome Pair Programming: Awesome pages are famous; they even made a page of pair programming. I looked at this before Wikipedia.
Pair Programming (Wikipedia): General information about pair programming here. The pair programming method I mentioned is an expert & novice.
Pair Programming (Martin Fowler): If you’re wondering what Martin Fowler thinks about pair programming, yes, he has an article about it too. Pretty detailed post.
I’m not a CTO of Radity anymore, but I trust that it will succeed more in the future. One of my old coworkers asked me some questions to understand what I was doing in this position. To remember it later, I wanted to share the questions and my answers here.
What are the most critical three needs and goals of a CTO?
To ensure that the IT organization does business uninterruptedly and efficiently.
To follow the news about IT and integrate the tools if there’s something new to facilitate its operation.
To save the company know-how in safe and up-to-date, and help the new coworkers to adapt to their teams quickly.
In what topic did you have the most problems?
I’m having a problem contacting the correct people. I always have to keep my network up-to-date for that.
What kinds of tasks do you have?
I have to work continuously to reach my goals what I told in the first question. On the other side, I’m always talking with my coworkers to discover their potentials and evaluate them in the correct projects or tasks. I love to share my ideas with them; I listen to their thoughts about my decisions and consider their ideas when I decide on something new that affects the culture and future of the company.
Most of the websites are using Helvetica as an alternative font, and Ubuntu is trying to set Nimbus Sans as a similar font even you have Helvetica font. Also, the default font on Firefox is DejaVu Sans, but the default fonts are working just if the styles don’t specify a font family in a website.
Nimbus Sans comes with fonts-urw-base35 package, and it’s ubuntu-desktop’s dependency, direct or indirect. I need ubuntu-desktop to use GNOME, so the best solution here is to disable the font altogether and refresh the fonts cache.
Let’s go step by step. First of all, if you don’t have it yet, start with installing ttf-mscorefonts-installer package, Arial is the best alternative font for Helvetica, and it comes with that package. Then, confirm if the system finds Nimbus Sans as an alternative font for Helvetica:
Ok, so we’re sure that we understood the problem correctly. We will try to reject that weird font and recheck the output until it finds Arial. To do that, we need to create a fonts.conf file and keep it on the correct path. On my Ubuntu (20.04), the path will be ~/.config/fontconfig/fonts.conf, but if you’re using a different distribution, learn the correct path from Google.
After you created the file, fill it with these lines:
Bill Murray’ın Scarlett Johansson ile birlikte oynadığı 2003 yapımı Lost in Translation filmini, bu karantina günlerinde izlemenizi tavsiye ediyorum. Ben seneler önce ilk izlediğimde çok sıkılmıştım; ama sonra tekrar tekrar, severek izledim ve bir şekilde hayatımda yer edindi. Bu yazının başlığını oradan türettim.
2018’de Berlin’e göç ettik. Eski iş arkadaşımın tavsiyesiyle merkeze uzakta yaşamaya karar verdik. Aileye uygun, bizi tatmin eden bir ev bulduk. Evimize beş dakika yürüme mesafesinde olan kreş de kızımızı kabul edince kendimizi epey şanslı hissettik. Ofise gitme zorunluluğum olmadığı için istediğim yerden çalıştım. Eskiden ev dışında kütüphane ve Bäckerei denilen kafelerde çalışmak mümkünken, şimdi evden çalışmak tek seçenek. Bu yazıyı yazdığım gün yaklaşık üç haftalık gönüllü karantinayı, stoktaki eksikliklerimizi tamamlamak üzere deldik ve sonrasında karantinaya devam edeceğiz.
Yıllar sonra bu yazıyı okuduğumda, herhalde Covid19’u unutmam; ama bu günlerde başka nelerle uğraştığımı da iyi hatırlamak isterim. 2019 yılı Temmuz ayında doktora gittim ve yaşadığım sağlık sorunlarının çözümü için doktorum ameliyat olmamı tavsiye etti, bir cerraha yönlendirdi. Tedaviye başladık ancak sürecin ortasında bir virüs salgını yüzünden eve kapandık. Eşimin arkadaşı bir gece bizi arayıp “Size eşyalarımı bırakacağım, ben Çin’e dönüyorum.” deyince, Almanya’daki durumun ciddiyetini kavradık, Çin o dönemde daha iyi durumdaydı. Ardından seyahatler yasaklandı, tuvalet kağıdı bulamaz olduk, markete girmeden önce içerideki insanların çıkmasını bekledik, el teması olmaması için nakit kullanmaz olduk. En kötüsü, ameliyat olacağım hastane kapandı, tedavim durdu, uçak biletlerim iptal oldu, katılmak istediğim etkinlik ertelendi, buluşmayı planladığım arkadaşlarla buluşamadım. Muhtemelen yaz tatilimizi de iptal edeceğiz.
Benim karantinam tecrit gibi geçiyor. 8 yıllık uzaktan çalışmanın hiçbir döneminde böyle bir psikolojiyi deneyimlediğimi hatırlamıyorum. Normal zamanda birisi bana üç hafta evden çıkmadan durabilir misin dese bunu rahatlıkla yapabileceğimi söylerdim; ama dışarıda bir tehdit olduğunu bilmek başka bir duygu. Bu dönemin kendine özel sıkıntıları var; neyse ki çözümsüz değil.
Şuanda yaşadığım en büyük sıkıntı, hareketsizlik. Çok fazla oturuyorum ve üniversite zamanlarımdan kalma, gitarın omzumda bıraktığı ağrıyı tekrar hissetmeye başladım. Çalışırken kullandığım bir oyuncu koltuğum var, rezalet. Bu koltuklar çok rahat; uzun süre bilgisayar başında oturmanıza yardımcı oluyor. Bu koltukların tek avantajı, bir taburede bile uzun süre oturma kabiliyetiniz varsa, oradan gelecek olan hasarı minimize etmek. Ama esas sorunu çözecek olan şey hareket etmek, hareketsiz saatlerce oturmamak. Ayrıca bu koltuklar genelde sıcak günlerde terin sırtınızda birikmesine veya kurumasına sebep oluyor. Hala koltuk arayışındayım, Varier Variable Balans almayı düşünüyorum.
İkinci büyük sıkıntı, duyguların kısa süreli ve sürekli olarak dışarıdan gelen şoklarla değişmesi. Şok Doktrini kitabında bir işkence metodu olarak, günlerce karanlıkta ve hapiste kalmış insanların, ani bir ışık ve yüksek gürültüye maruz bırakılması ve bunun belirli aralıklarla sürekli yapılması anlatılıyordu. Bunun kıyaslamasını yapmak çok haksızlık olur, farkındayım. Ama şöyle düşünün, akşam işiniz bittiğinde, kahve veya çay içerken hafif bir beyin yorgunluğu oluyor ve tam da bu zamanda dinlenip enerji toplamak yerine, online medya kaynaklarından gelen haberlerle duygusal şoklar alıyorsunuz. Paylaşımlar çoğunlukla üzücü, şikayet dolu, negatif duygular içeriyor. Hep iyi şeyler okumak da sıkıntılı. Modunuz iyiyken canınız bir şeye sıkılabiliyor, kötüyken birden canlanabiliyorsunuz. Çözmeniz gereken sorunları, hoşunuza gidecek paylaşımlar okuyarak unutup erteleyebiliyorsunuz. İnsanın duygusal stabilite için bazen gerçekten offline olması, yalnız kalması gerekiyor.
Bir diğer sıkıntı da erişilebilirliğe gereken önemin gösterilmemesi. Benim özellikle herkesin uzaktan çalıştığı bu dönemde beklentim, iş yaparken erişilebilirliğin artmasıydı; ama şuan gördüğüm kadarıyla ters istikamette seyrediyor. Herkes toplantılardan şikayetçiydi, bu toplantılar niye sıklaştı ve uzun hale geldi? Zaten Slack başıma belaydı, şimdi yerini Zoom’a bırakmış gibi. Anlık iletişim araçları üzerinden işin detaylarını konuşup, sonra “toplantıda konuştuğumuz gibi” diye bir görev açıklaması yazılmamalı. Text, erişilebilirliği en yüksek iletişim yöntemi. Unutmak diye bir şey yok, istediğin zaman okuyabilirsin, istediğin zaman cevap yazabilirsin. Konuşmak istediğinde bile on dakikada anlatacağın işi iki dakikada anlatmana yardımcı olur, toplantı süreleri kısalır. Niye yazmak ve okumak sevilmiyor, anlamıyorum.
Beden sağlığı, duygusal balans, ve erişilebilirlik. Bu üç şeyi ne kadar iyi çözerseniz, uzaktan çalışmak o kadar verimli ve zevkli, iletişim o kadar kolay ve güzel. İsterdim size önerilerle geleyim; ama herkesin durumu kendine özel.
I started using an iPad instead of a second laptop for more effective use. Although it is excellent for reading things, answering emails, checking tasks, it is still not possible to use as a laptop with these devices.
So I tried to connect to my primary PC remotely. But this was not satisfactory for me either. I took some notes to compare when iOS 13 and some updates came.
Pros
In tablet mode, all screens are full-sized automatically.
The density of UI components is more comfortable to manage cursor with touching.
Firefox has a tablet mode; it supports touch scrolling, easy to click bookmarks.
The virtual keyboard is great! I didn’t need to use the iPad’s native on-screen keyboard.
We can’t see the running apps in the taskbar in tablet mode, but it’s possible to use the gestures to show all running apps.
Cons
You need a remote desktop or a server. It’s impossible to work offline.
If you decide to use a remote desktop and you are obsessed about fonts, there’s no way to fix screen quality.
I’m not sure that I can code with iPad for hours even I have a good physical keyboard.
So..
With the new updates in macOS and iOS 13, it will be possible to run iPad applications on macOS. So iPadOS may affect the quality and variety of applications.
I’m still waiting for a new version of Microsoft Surface or Surface Go that using ARM CPU, has Thunderbolt 3 and USB-C ports.
I still didn’t investigate how Google Pixelbook is but seems a good alternative.
Bağımsız çalışmak (freelance) ile uzaktan çalışmak (remote) çok karıştırılıyor. Bağımsız çalışanlar aynı zamanda uzaktan çalışıyor veya uzaktan çalışanlar fiziki bir ofise sahip bir şirkette çalışıyor olabilir. Yani uzaktan çalışıyor olmanız, sizi bağımsız çalışan (freelancer) yapmıyor.
Ben yazılımcıyım. Bağımsız çalışmak konusunda çok deneyimim yok. Bu konudaki gözlemim, en azından Türkiye’de hem işi verenin, hem de işi yapanın çok da profesyonel davranmadığı. Bağımsız çalışmak ayrı bir disiplin gerektiren, kendine özgü şartları ve anlaşması olan, hobi veya ek iş olarak bakılamayacak kadar ciddi bir çalışma biçimi. Fatura nasıl keseceksiniz, vergi nasıl ödeyeceksiniz, gelirinizi devlete nasıl beyan edeceksiniz, etmeyecekseniz neye güveneceksiniz, alacağınızı tahsil edemediğinizde ne yapacaksınız, sağlık sigortanız ne olacak? Bu konu, ayrı bir yazının konusu olabilir; ama dediğim gibi Türkiye’de serbest çalışmak, yaşam standardını para karşılığı düşürmekten başka bir şey değil. Serbest çalışmak istiyorsanız, günde 8–9 saat mesai gerektiren bir iş yapmamalısınız.
Uzaktan çalışmak ise, bana göre herkesin muhakkak deneyimlemesi gereken bir şey. İstanbul metropol bir kent. Zaman trafikte harap edilemeyecek kadar kıymetli. Ben yazılım firmalarının yakın zamanda mülakatlarda “Uzaktan çalışma deneyiminiz var mı?” diye soracaklarını düşünüyorum. Örneğin Crossover tamamen uzaktan çalışmaya uygun iş pozisyonları için çalışan arayan bir platform ve Türkiye’de faaliyete geçti. Hiç mülakatlarına katılmadım; ama eminim bu soruyu soruyorlardır. İnternet artık sesli ve görüntülü konuşma yapmak için daha elverişli (en azından telefonla konuşmaya tercih edilebilir durumda), ortak çalışma alanları (co-working space) artık eskisinden daha yaygın. Gürültüden etkilenmiyorsanız, bir kafede kahve içerken saatlerce oturup işinizi yapabilirsiniz veya evinizin bir odasını çalışma odasına çevirebilirsiniz.
Peki, uzaktan çalışmak ile şirket ofisinde çalışmak arasındaki tek fark çalışma ortamı mı? Hayır. Şirket ofisi size şunları da sağlar:
Susadığınızda su her zaman var. Çay, kahve çoğunlukla hazırdır. Oda temizlik hizmeti size bedava, bulaşık derdi yok, tuvalet kağıdının bitmesi neredeyse imkansız, acıkırsanız yemek yiyebileceğiniz yer size çok yakındır.
Ofise gittiniz ve internetiniz veya elektriğiniz yok, bu şirketin problemi. Gidip başka bir çalışma ortamı aramak zorunda değilsiniz. Çünkü çalışmak zorunda olduğunuz yerde herkesin elektriği, interneti aynı anda kesilmiştir!
Hastaysanız muhtemelen ofisteki klimadan hastalandınız, zehirlendiyseniz muhtemelen yemekhanedeki bir yemek size dokunmuştur. Geneli böyle olduğu için size pek bir soru sorulmaz. Bir rapor alırsınız, iyileştiğinizde şirkete iletirsiniz.
Ofisteyseniz, çalışıyorsunuzdur. Değilseniz, çalışmıyorsunuzdur, çalışmamalısınız. Bu kadar net.
Ofisin kuralları vardır, beraber vakit geçirdiğiniz insanlara karşı saygılı olursunuz. Sosyalleşirsiniz, samimi arkadaşlıklarınız olur. İşinizde yardımlaşır, iş dışında haftasonu piknik, kamp planları yaparsınız.
Bu şekilde anlatınca ofiste çalışmak uzaktan çalışmaktan daha iyiymiş gibi oldu, farkındayım. Uzaktan çalışmak imrenilen, özenilen, çok basit bir şeymiş gibi göründüğü için, önce neleri kaybedeceğinizi anlattım. Peki bu durumda uzaktan çalışmayı neden tercih edersiniz?
Cevap basit. Genelde siz tercih etmezsiniz, koşullar onu gerektirir. Şirketiniz yurtdışında olabilir ve siz henüz yurtdışına çıkış şartlarınızı sağlamamış olabilirsiniz. Şirketiniz işinizde daha verimli olmanız için, çalışma ortamı tercihinizi size bırakabilir. Eve gidip gelirken harcadığınız zamanı spor yaparak veya ailenizle birlikte geçirmek, ertesi gün daha verimli olmanızı sağlayacaksa; ofise gelmekle evden çalışmak arasında bir fark görünmüyor ve şirket de masrafları kısıp çalışanın maaşına zam yapmayı düşünürse (ki her ne kadar klasik bir yaklaşım olsa da para iyi bir motivasyon aracıdır) şirket uzaktan çalışmayı çalışanları için bir seçenek olarak görebilir. Siz elinizde bu imkan varsa yararlanırsınız.
Uzaktan çalışan arkadaşlarımın en çok şikayet ettiği konulardan biri yalnızlık. Etrafınızda çoğu zaman muhabbet edebileceğiniz, beraber çay içebileceğiniz bir insan olmuyor. İş yapmadan zaman geçmiyor, kendi kendinizi motive etmek, kendi disiplininizi sağlamak zorundasınız. İş dışında kalan zamanlarınızı nasıl değerlendirdiğiniz daha bir önemli oluyor, sosyalleşme ihtiyacı duyuyorsunuz, hobiler daha bir anlam kazanıyor. İş bitsin, eve geçeyim demek yerine, daha bir kendinizi dışarı atmak için can atıyorsunuz. Buna ne kadar çabuk alışırsanız, uzaktan çalışma gerektiren işlere psikolojik olarak o kadar çabuk uyum sağlarsınız.
Bu konu üzerine benim söyleyebileceklerim bunlar. Uzaktan çalışmaya başladığınızda iletişim araçlarına hakim olmak, zamanı yönetmek, hatta akşamları veya haftasonları yapacağınız aktiviteleri tekrar gözden geçirmek önem kazanacak. Son olarak, bu konuyla ilgili daha önce yazılmış paylaşımlara göz atmanızı öneririm:
Not: Çok eski bir yazımdır. Aslı burada durmaktadır.
İdeal bir dünyada yaşamadığımız malum. İşimizi yaparken birçok problemle karşılaşıyoruz; bağırarak yanımızda telefonla konuşanlar, oje sürerken kokusunun ne kadar rahatsız edici olduğunu bilmeyenler, laptopta kullanmak amacıyla bir fare ihtiyacımızı kimin karşılaması gerektiğini tartışanlar veya başkalarına aldırış etmeksizin klimanın ayarlarıyla oynayanlar.. Bunlar her zaman karşımıza çıkacaktır, şuanki dünya düzenini ele alacaksak yapacak çok fazla bir şey yok. Fakat bir nebze de olsa, aklımızdan geçenleri burada manifesto tadında sıralamak faydalı olabilir düşüncesindeyiz. Siz de aynı sıkıntıları yaşıyorsanız, iş arkadaşlarınızla (hatta gücünüz yetiyorsa işvereninizle) paylaşın; maddeler eksik veya yazıyla ilgili eleştiriniz varsa, yorum yazın, forklayın, harekete geçin.
Sevgili İşverenler
“Sen ne gerekiyorsa bana söyle, işini güzel yapman için gerekli ortamı sağlamak benim görevim” diye düşünüp hareket ederseniz, biz de işimizi düzgün yapmak için elimizden geleni yaparız.
Bize telefon, hat, bilgisayar gibi araçları sağlamanın sizin sorumluluğunuz olduğunu düşünürüz. Tablet, dizüstü bilgisayar, gold konuşma paketi vb. sahibi olmamız bu durumu değiştirmez. Hele bilgisayarımıza normalde tercih etmeyeceğimiz yazılımlar kurmak zorunda kalırsak iyice mutsuz oluruz, bu da işe yansır.
Nasıl ki sizin sağlık ve aile öncelikliyse, bizim için de öyle. İş çabuk bitsin diye fazla mesaiye zorlanmak, sıradaki işler ve ailemiz için yeterli enerjimiz kalmaması anlamına geliyor.
Bir işin ne zaman biteceğine ne biz, ne de siz karar verebilirsiniz. Doğru geliştiriciyi, doğru işte çalıştırırsanız, tahmini süreyi, ne gibi problemlerle karşılaşacağınızı ona sorabilirsiniz. “İki dakikalık iş” diye bir şey yoktur.
Müşteri sabırsızdır, bunu biz de biliyoruz. Bize işleri kısa zamanda bitirmek için psikolojik baskı yapmak yerine, harcanacak fazladan çabanın karşılığını verin.
Acil durumlarda alanımız dışında işlere girebiliriz ama normal günler için görev dağılımı gereklidir. Bir geliştiriciyi hem ön yüz, hem sunucu bakımı, hem de yazılımın geliştirilmesi için kullanmaya çalışırsanız, üstüne üstlük bir de “bizim yeğenin okulunun sitesi var sen çıkarıverirsin aradan” derseniz, o adam kaçar. Biz isviçre çakısı değiliz.
Eğer geleceğimiz ve ailemiz için endişe duyarsak, iş değiştirmemiz çok doğal. Bu nedenle önümüze süreli iş sözleşmesi, verilmiş sözler, hisse vaatleri sunarak bizi kendinize bağlamaya çalışmayın. Ne istediğimizi öğrenin, teklif edin. Bazı şeylerin “zamanında” mutluluğu daha önemlidir. Bir aile, her şeye bedel.
Bizi motive etmek istiyorsanız, projeye ne kadar masraf yaptığınızı, nelerden feragat ettiğinizi anlatmayın. Elbette çalıştığı şirket hakkında bazı bilgiler edinmek güzeldir; ama bize “Eğer bu iş bitmezse, çocuğumuzu keserler.” diyerek işlerin daha çabuk biteceğini, bizim işi bırakmaktan vazgeçeceğimizi beklemeyin. Duygusal sömürüden uzak durun, bizim feragatlarımızı görmezden gelmek durumunda kalabilirsiniz.
Biz uzun süreler için yoğunlaşmamız gereken bir iş yapıyoruz. Her gün toplantı yapmak her ne kadar “önemli iş yapıyoruz” duygusunu pekiştirse de, bizim dağılmamıza sebep oluyor. Toplantı sadece 5 dakika olsa bile bize saatler kaybettirebiliyor. Eğer konu birkaç kişiyi ilgilendiriyorsa, bütün ekibi toplantıya davet etmenin anlamı yok. Maksat herkesi bilgilendirmekse, bunun için e-posta göndermek, şirket içi paylaşım sayfalarında blog girdisi yazmak gibi çok daha az rahatsız edici yöntemlere başvurun.
Bize verdiğiniz maaşın neyi temsil ettiği konusunda bizimle anlaşın. Biz, yaptığımız iş için değil, o işe harcadığımız zaman için ücret talep ederiz. Gün boyunca hiç kod yazmamış olmamız, o gün çalışmadığımız veya o gün için ücret almayacağımız anlamına gelmez. İşte geçirdiğimiz süreye veya yazdığımız kodun satır sayısına göre performansımızı ölçemezsiniz. Mal ölçecekseniz tuğla fabrikası açın, akşamları eve gitmeden sayarsınız.
Bir işi yapmamız, bitirmemiz için ekip ile çalışılmıyorsa veya bütün ekibin ofiste olması gerekmiyorsa, bizim ofiste bulunma zorunluluğumuz saçmalıktan ibarettir.
Notlar
Bazı maddelerin nasıl anlaşıldığı, nasıl yazılmasının daha doğru olacağı konusunda birçok kişinin görüşleri alınmış ve onların görüşleriyle beraber maddeler tekrar tekrar yazılmıştır. Yazıyı yazarken görüş bildiren herkese teşekkürler.
Görüş bildirenlerin bazıları kendi yaşadıkları tecrübelerini belli ortak maddelerde paylaşmıştır.