- People on your team have different needs, e.g., promotion, challenge, less stress. By filling their needs, you can make them content and productive. Your job as a leader is to listen to them and mentally document how they are wired. This is the essence of a software manager’s job.
- Manager is connector between the team and the rest of the organization. The main way for an engineer to show the work to the company is to communicate to the manager. Hence should balance external and internal focus.
- “Schedule one-on-ones with direct reports, keep them on the same day and time, and never cancel them.” One-on-ones are paramount. Keep them regular and at least 30 min. Maybe 45min is better. Not 15min. Avoid missing scheduled one-on-ones and doing status reports. Weekly is the best. These meetings are for managers to listen 50%+. If no issues, then focus on career building and needs of your reports.
- Know your boss’ place… and yours, in the food chain besides just the title of the org chart. “Politically active managers are informed managers. They know when change is afoot and they know what action to take to best represent their organization.”
- In a meeting, if someone is doing anything else except listening (open laptop? iPhone?), he is not listening. Ban laptops from your meetings altogether. Paper notebooks still work for notes (info can be digitized later), and they don’t require charging unlike laptops.
- In conflict resolution, listen to both stories. Preferably in-person not over email. People prone to unconsciously augment memory, misinterpret and twist facts to make a story in their favor. “If the story can’t stand up to the first three questions that pop into your mind, then there’s an issue”
- Two pizza team rule. With more than 10–15 direct reports it becomes extremely hard to really listen people.
- Sometimes just listening helps to vent a frustration. If communication is broken, then listen and repeat to understand.
- Meetings must have an agenda at the beginning, and a clear set of actionable steps at the end.
- Incrementalist vs. perfectionists. In a deadlock, it’s better to make an “executive” decision to move forward.
- “In the absence of information, people will create their own”. Kill gossips in your staff meetings. Don’t spread them yourself and prevent others from spreading them. Also, don’t tell too much. “As a manager, your job is that of a bullshit umbrella”.
- “The point of a performance review is not the review itself but the conversation that stems from it”. Send the report a few days in advance so it’s not a shock to the team member. Aim to mitigate any boredom and complacency by giving directions, i.e., learn Elixir.
- Speak the same language as the person you’re talking to: managerial (managementese) with other leads and technical with coders.
- Off-sites help remove day-to-day distractions and focus on strategic.
- If you want to progress as a manager, you need to stop coding while still coding but on prototypes, research, proof-of-concepts, i.e., no core products. This way you are still in the latest trends but not an impediment if you fail to deliver a critical feature or worse delivered a bug which crashed other parts (and your team had to fix it). “Stay flexible, remember what it means to be an engineer, and don’t stop developing”.
- Always allow your team to question your decisions but once the decision is made—all hands on board.
- Process must be a documentation of the engineering culture and value so it can be passed along to new members when engineers leave or company grows. Process must NOT be a way to control.
- Humans are bad at estimations. It becomes a bit better once they start working on a task.
- Project manager makes sure to ship the product; product manager makes sure that the right product is shipped; while program manager makes sure multiple (typically interelated and dependent) products are shipped, generally at the same time.
- Rotate your engineering between boring tasks like bug fixes, tests or tech debt.
- Each new engineer bring overhead of communication, decision, and error correction. (Read The Mythical Man-Month). Ensure the cultural fit. All things equal, it’s better to hire for attitude than skill. Know about strategic vs. tactical visions.
- Engineers treasure consistency, predictability, and efficiency.
- There are mechanical (data oriented) and organic (human oriented) managers. Make sure you speak with them on their level not yours.
- Exponentiation Operator
ES8 is not finalized yet as of this writing (Jan, 2017) but we can assume all finished proposals (stage 4) and most of stage 3 (more on stages here and in my course). The finished 2017 (ES8) proposals are:
- String padding
- Trailing commas in function parameter lists and calls
- Async Functions
I won’t include stage 3 proposals in this post, but you can check the status of proposals from stage 1 to 3 here.
Let’s dive deeper into the proposals and features…
The rest of the article: https://node.university/blog/498412/es7-es8
When Bert presented his keynote at Node Interactive Europe 2016 on Event Loop, he started by saying that most of event loops diagrams are WRONG. I’m guilty of using one of them in my talks. :)
This is it. In it, event loop is spinning data back at clients like hot-cakes.
His diagram is closer to the real stuff. In it, event loop starts, works and then quits eventually (pun intended).
This post is on how to build beautiful APIs in Node.js. Great, and what is an API? The definition says Application Programming Interface, but what does it mean? It could mean on of the few things depending on the context:
- Endpoints of a service service-oriented architecture (SOA)
- Function signature
- Class attribute and methods
The main idea is that an API is a form of a contract between two or more entities (objects, classes, concerns, etc.). Your main goal as a Node engineer is to build beautiful API so that developers who consume your module/class/service won’t be cursing and sending you hate IM and mail. The rest of your code can be ugly but the parts which are public (mean for usage by other programs, and developers) need to be conventional, extendable, simple to use and understand, and consistent.
Let’s see how to build beautiful APIs for which you can make sure other developer
Preact is a lightweight (just 3kb) alternative to React which has same interface (ES6), but better performance. Preact also has a few new features, i.e.,
contextare passed to
- Standard HTML attributes
- React DevTools right out of the box
There is a migration guide at the https://preactjs.com/guide/switching-to-preact which is basically replacing
preact npm packages.
I imported my AnalogDisplay component (original in React) into preact JSFiddle code, and they worked well. I can either use
this.state or just
render(). Here’s the JSFiddle code: http://jsfiddle.net/gz7L59mn/1/ and the source code:
Container technology is one of the best options for software development and deployment. It allows you to share some of the OS resources while encapsulating the code and other concerns. You can think of containers as virtual machines but with less footprint.
Containers are great for micro services where you replace monoliths with many services. Each of them works in isolation and communicates with other services via a well defined interface (typically REST).
Docker is one of the most popular implementations of containers. Docker’s What is Docker? page has a a neat comparison of containers with VMs. In a nutshell, VMs use hypervisor and each VM has it’s own OS while containers share OS and only separate libraries, bin, executables, etc.
This project will guide you through building an autocomplete function similar to the one that you might see in Slack (a popular messaging app), as shown in figure 1, when you type something in the search box. For simplicity, our widget will work with room names (the rooms in a chat application).
The autocomplete widget will have (figure 2):
- An input field
- A list of options filtered according to the entered characters
- An Add button (figure 3)
The filtering of the matches will be done using the entered characters as the first characters of the option. In other words, there is a simple comparison that allows us to autocomplete the name of the room (figure X). For example, if you type “mac” and you have “Mac OS X” and “Apple Mac,” then only “Mac OS X” will be shown as a match, not both options.
I’ve spoken at over a dozen conferences this year and seen my share of bad presentations. Yes, for the most part geeks aren’t expected to be great at public speaking. That’s why they called geeks.
However, I noticed certain patterns: most of the times presenters were making it harder for the audience to get their material. They were doing some easy to fix things which hampered their delivery greatly. The tech talks are boring anyway (generally speaking). Why make it even hard on your listeners?
If you need to present soon at a conference (even if you are not a geek or techie), here are 10 sins you should never do when you give a conference talk (more of a note to myself than anything else):
I went to Node Interactive Europe which happened in September in Amsterdam, the official Node conference—the real deal. Organizers invited me to present on React, so I taught a workshop on Universal Web, and also participated on a panel discussion about containers and Node with folks from nearFrom, IBM, Zeit and Netflix. You should watch the panel recording on YouTube. It was a good one.
This is a continuation of 10 Habits of Highly Effective Programmers which I wrote a few weeks ago. Here are 10 more habits. They are not set in stone but that’s what I saw work really well if you want to become a great developer and enjoy your work and career (be great first to get a great job).