65 karma · joined March 5, 2018
- Meet in person as much as possible, especially by bringing remote folks together for an extended (multi-day) trip. That encourages more informal in-person interaction. Plan specifically for non-scheduled time, non-working meals, etc.
- Have a regular one-on-one meeting with your reports, preferably weekly. Set up the structure to always have a planned topic portion and some small talk about life. Sometimes that'll be boring or painful, especially for techies. But the space it provides is extremely important.
- Communicate
- Communicate
- Communicate
- Seriously, the one thing that erodes trust more than any other is when people feel out of the loop or not consulted when others were. Document hallway conversations for remote folks. This is hard.
Note that I'm not saying you can't build strong trust, just that it's harder. You have to devote considerably more thought and intentional time to it. I say intentional time because when you're local to someone, you naturally build trust with them in every small interaction. In a remote setting, you need to create time and space for those interactions deliberately.
As a project gets larger (more code or more devs), each dev spends more and more time figuring out what the correct types need to be when using various internal APIs. Refactors get harder because it becomes harder to know whether you've correctly found and changed each place that was needed.
And although all projects have this to a certain degree, one typical goal of a commercial project is a higher quality bar for software while still optimizing amount of effort to get that quality. (And commercial projects are often larger too.)
TypeScript helps with these issues (and others). In my opinion, it increases developer productivity for all but the smallest JavaScript projects. It's a combination of both the static typing and the tools available that help the dev immediately, as opposed to waiting for a compile or test run.
I'm actually passionate enough about the topic that I have an old blog article about it: https://medium.com/hackernoon/3-reasons-why-we-use-typescrip...
Of course, with great power comes great responsibility...
- React for the front end (https://reactjs.org)
- Node.js for your back end (https://nodejs.org)
- Deploy using Adapt, which ties your front and back end together using React-like components. (https://adaptjs.org).
- (Optional) If this project is larger or commercial, definitely use TypeScript on all 3 of the above (http://www.typescriptlang.org/)
[Disclosure: I'm a maintainer of Adapt, but a strong believer in the React model and ecosystem]
Our vision with Adapt is to provide that same level of ease of use, but allow it to grow with your app. As your app grows and becomes more complex or as your app's needs change over time, it's easy for Adapt to handle those needs as well, in a way that's independent of any particular cloud or underlying infrastructure technology.