Monday, June 14, 2021

What does it take to become a Senior Software Engineer?

I think that depends on the organization. A Senior Software Engineer at one company might not be Senior in another.

At a startup (less than 25 people), generally Senior Software Engineers (Individual Contributors) are:

  • great at breadth and depth of knowledge (domain knowledge)
    • knows a lot about how the business operates and its customers
    • knows a lot about legacy parts of the product
    • knows a lot about latest frontend and backend practices
  • great at planning, executing, deploying, and maintaining software
    • authoring technical design docs
    • providing feedback on other design docs
    • providing technical feasibility analysis to product managers/project managers
    • providing estimates
    • updating kanban/agile boards to keep stakeholders in the know of how things are going
    • providing code reviews and feedback
    • rallies the team to make improvements on developer workflows (finding out better ways of shipping, better tools and technologies, gets the team excited and bought-in)
    • innovates on the developer experience (reducing build times, simplifies tooling and onboarding) which increases the output of the team
  • great at interviewing and hiring developers
    • sourcing devs through outbound on linkedin/past connections
    • sourcing devs through inbound by writing company devblogs
  • great at onboarding new developers
    • training sessions (sync), 
    • screen recordings (async)
    • updates and maintains documentation on systems and processes
  • great at gluing/coordinating with other disciplines (designers, project managers)

These are just a few responsibilities when it comes to a small tech startup, there's probably way more that in different companies though.

Cheers,
Jaime

Originally answered on reddit/React

Monday, May 31, 2021

Setting up MetaMask as a Canadian

MetaMask is a crypto wallet that you can install on your mobile phone and web browser as a Chrome extension. It's very easy to install and start connecting to different Dapps (Cryptokitties, OpenSea.io).

That being said, as a Canadian, it was really difficult to buy ETH for my MetaMask wallet. Currently, MetaMask supports sendwyre and direct deposit. This sounds great but it was a horrible experience trying to do a direct deposit. I use one of the biggest banks in Canada and they don't have a great opinion of crypto in general so they keep rejecting the direct deposits.

I grew frustrated because I didn't want to call my bank. I started to look at Canadian-specific solutions on Bitcoin CA Sub-Reddit. I came across Shakepay. Shakepay is both an exchange and a wallet. Their approach to transferring Canadian funds into ETH is interesting: They get users to e-interac transfer to a specific email and enter details about the payment. I thought this was brilliant so I did it and within a few minutes, I had my ETH. Woohoo!

So, now I have ETH in my Shakepay wallet -- I wanted to move that ETH to my MetaMask wallet though. I went into my Shakepay mobile app and tried to transfer it from Shakepay to MetaMask wallet address but it wouldn't allow me because the minimum ETH to transfer is 0.1 (which is about $350 CAD at the time). I ended up putting in the amount that was needed and voila, I had my ETH in my MetaMask wallet within 5 minutes of the transaction.

In retrospect, I think this is a huge problem for the adoption of crypto. I also think there's a huge opportunity here for companies to create better transparency and tools for governments to ensure there isn't illegal activity. The banks have invested in software systems that protect people from scams, fraud, etc. I don't see that going away any time soon. Hope this story helps other Canadians other there that want to get into crypto!

Friday, April 9, 2021

Health

Last week, my father passed away.

The last time I gave him a hug was over 4 years ago. In 2016, I went to California to chase after my dreams of becoming a startup founder and he went to the Philippines to take care of the family's properties. Between then and now, I really wish that I had done more to converse with my father. When I was younger, I spent so much time with my father learning new skills like fishing, playing all kinds of sports, swimming, driving, and drafting. As I grew older, the less we talked. He knew I was busy with my career and he focused on his own projects.

As a kid, my father was a huge inspiration for ambition and determination. He moved to Canada on his own with absolutely nothing and worked incredibly hard to build what we have today. He was always tough on me: always letting me know "that's not good enough" and I honestly believe he knew how to start that fire in me -- he knew how to motivate me -- he knew I absolutely hated disappointing people. I'll always remember him as an example of what it takes to make great things happen -- he was always dreaming big and being willing to put in the work.

My father was so full of life when we went to social gatherings. He made a lot of friends and he always made people laugh -- and best of all, he always made people feel welcome.

Diabetes Mellitus took him away from this world (he was in his early 60s). It's tough to accept that he was suffering from this affliction for years now. Today, the more I researched about diabetes, the more I started to realize how important taking care of yourself was. As someone who goes "all-in" and becomes obsessed and maniacally focused, it's very easy to fall into the trap of working long hours, not sleeping enough, and consuming food that isn't great for my health. Knowing that diabetes is hereditary and it's something that I have a high chance of developing, I've started to be more conscious of the things I'm eating and drinking.


After watching James Fung's video on reversing Type 2 Diabetes naturally, I've started to journal all my meals through MyFitnessPal. Manual input sucks, I think this is a huge opportunity for technology to step in and automatically let people know when they're in danger of the effects of diabetes.

Diabetes might've taken my father away, but it's not going to take me.

It's my duty to stay healthy so I can take care of my family and friends.

Friday, August 28, 2020

Management and Real-Time Strategy

Managing a startup organization can sometimes feel like you're playing a real-time strategy game (RTS) with 2500ms latency. Every decision takes a day, or a week, or even months for functional units within the organization to acknowledge and execute. As your tech startup scales in head count and as markets evolve, your organization may start to show signs of strategic dissonance.

There's a concept in RTS called APM (actions per minute). Most professional Starcraft players can sustain 300 apm throughout the game and during intense battles can burst up to 500 apm. To put this into perspective, beginners usually sustain at 50 apm. In real-time strategy, the ability to make quick decisions based on game state and effectively achieve results can decide whether you win or lose.

If we relate the concept to a typical Series A technology startup, it could look like this:


The most important part of this diagram are the lightning bolts. These lightning bolts represent lines of communication that put the organization at risk of increased latency. When decisions are made by executive leadership, these orders need to be relayed down through several layers of the organization. It's not as simple as blasting an email or Slack @everyone message and have everyone acknowledge it. 

In between the layers, miscommunication can happen: precision and speed. In order to manage precision of your lines of communication, ensure managers  In order to manage speed, managers need to have frequent 1on1s (weekly) with their direct reports.

From a tactical standpoint, 1on1s with direct reports are generally 80% them surfacing any critical issues with the organization; however, that 20% is used by the manager to reinforce what are the new decisions, why these decision are being made now, how their contributions impact the company's OKRs. Lastly, great managers always find a way to reinforce why it's exciting to be working at the organization.

Depending on the industry the startup is in, competition can be fierce, talent can be limited, markets can change quickly, and opportunities can emerge at a moments notice. These are called Strategic Inflection Points (SIPs). Hard times will inevitably happen to you and your team. In a leadership position, it is absolutely critical that you are able to identify when there are shifts in the market and start making strategic decisions. When your strategy changes, your organization needs to be able acknowledge and execute quickly by monitoring and reinforcing the lines of communication between different teams.

Wednesday, August 12, 2020

Training Games


At the height of our growth in the Battlefy engineering team, we started practicing different ways to positively reinforce open communication (core value). Open communication meant being frequent at high quality communication. In the military, communication is absolutely critical; however, it is not just any communication -- it's really about distilling down the most critical piece of information to relay to your team so decisions can be made to stay on course or adapt.

In daily engineering standups, we practiced the following

  • stating what the blockers are and what they need from the team
  • what they will commit to by end of day
  • why they're working on it 

At the end of the round table, we would randomly choose a person on the team and ask them to repeat what another person's status update was. Not only was it a forcing function to pay attention and ensure that your team actually understood what your status update was (so a teammate could maneuver on your behalf), but we always get a laugh out of it when someone wasn't able to answer the question.

But why? Well, we wanted to positively reinforce one of our core values (open communications) and make standups more engaging.

At Y Combinator (W16), we did this exercise in group office hours. The reason why we did this exercise was to prepare founders for demo day. Ultimately, there will be hundreds of teams doing demo day and you have to get used to trying to make your company more memorable (this include investors!). Incidentally, it was always super intimidating to be in group office hours because you would have amazing founders who really go above and beyond in their updates (eg/ "this week we closed a customer for a 200k contract") and then I'd look back at my co-founders with a surprised facial expression (and of course, they'd look back in shock). My imposter syndrome felt like rising waters.

Creating a sense of urgency to perform by creating a group environment is both exciting and scary but super effective. After the first group office hours, the following week everyone's' status updates were super memorable.  

For remote teams wanting to make standups more engaging, try it out! You'll be surprised and you can even keep score! 

Be great,
Jaime Bueza

Thursday, June 18, 2020

The Spiral




Ben Horowitz writes in his book, The Hard Thing About Hard Things, about "the spiral":
Things always go wrong
There has never been a company in the history of the world that had a monotonically increasing stock price. In bad companies, when the economics disappear, so do the employees. In technology companies, when the employees disappear, the spiral begins: the company declines in value, the best employees leave, the company declines in value, the best employees leave. Spirals are extremely difficult to reverse. 
- Ben Horowitz, The Hard Thing About Hard Things

So how does a CEO get out of the spiral? Here's a few things I would think about

  • Investigation
    • Identify whether your company is actually in a death spiral: high attrition. It's important to not be in denial about this. Be objective about the state of your business and react accordingly.
    • Identify friction in how the makers of the organization (engineers, designers) are able to contribute to the product. If you find an engineer waiting on a decision, you'll soon realize how much more delayed the feature will become. Every decision delayed causes more delays down the road. The goal here is to identify major inefficiencies within your organization.
    • Identify initiatives that do not have an impact on your primary objectives of being default alive (profitable). Communicate and shut down those extra initiatives to focus on hitting your targets.  The goal is to identify effort that is being invested in areas of the business that should be allocated towards the new direction.
    • Identify teammates who aren't aligned with your direction of focusing the company on a clear set of objectives. Some teammates enjoy startup peace time as a way to build new products but during war time, you need your team to be extremely focused.
  • Execution
    • Clarify to the organization what changes must be done in order to stop spiraling out of control. Generally, this can be done in all hands.
    • Conduct 1on1s with your executives and managers to ensure they understand why the company needs to have extreme focus on getting out of the spiral. This will help them explain your new direction to their direct reports.
    • Keep yourself open to office hours. Employees will have questions regarding the company's health and direction, always ensure they have a way to reach you. 
So how do you know if you've reversed the spiral? One way to look at it is by measuring the morale of your team. Managers of the company should be asking their direct reports in 1on1s how they feel about the company's health and direction.

The mind of a CEO is a constant battle of psychology. Not only do they have to project confidence to their organization but they have to constantly battle their inner demons on a daily basis. In a startup, things always go wrong. It is important to understand why this is happening and go through the exercise of identifying and executing changes required to get out of the spiral.

Cheers,
Jaime

Saturday, September 16, 2017

My Writing Process (v1.0)

I had a great discussion with a friend about how important clear thinking and being able to communicate ideas to an audience needs to be simple and obvious.

Before I go over the process, I’d like to underline why it’s important to write on a daily basis even though you don’t publish your posts. For a bit of background, since I write everyday, I have hundreds of drafts with only a small fraction that are published.

  1. it helps you clarify your ideas so they’re much more digestible for your audience — examples include — you’re trying to persuade your engineering team to adopt a new technique/pattern/tool/technology, or you’re trying to convince a candidate to join your team, or you’re trying to close a sale with a prospect on using your product.
  2. it helps you simplify your ideas. Ideas can be complex and that’s why it can beneficial to you and your audience if you strip away the complexity and bring it down to first principles.
  3. it helps you find your style of communication. I can guarantee you, if you met me, you’d realize that I talk the way I write on this blog. Sure, I might talk fast at times because I’m super excited but I’ll always focus on getting to the main point.

The Process

  1. I start out with listing topics that I have something valuable to contribute to, whether its experience or skill. This is one of the reasons why I write a lot about company culture, organization scaling, team learning, engineering, as well as, technology startup trends.
  2. When I’ve decided on a topic, I’ll list out who, why, what, how as a way of jotting things down.
    For who: I’ll write down who I’m writing the post for which will help me identify which hashtags or which social networks I’ll share it on.
    For why: the reason people would be interested in the content, perhaps its lessons learned in some new technology that you’ve recently switched to.
    For what: generally the higher level topic of your content, which can be culture, engineering, business. It helps you frame your perspective and helps you focus on boiling down to the main point.
    For how: sometimes you’re writing about culture at your company, you’ll definitely want a call-to-action to your job listings — or perhaps it’s an open source library you just wrote, you always want to link to it so that your readers can check it out.
  3. After you’ve identified who, why, what, how, you can simply start with your main point that’ll get people interested in reading more.
  4. I generally try to stick to 2–3 sub-ideas of the main idea that gives me enough content to write about.
  5. Conclude with re-iterating the main point.

Making your ideas simple and obvious takes practice over a long time. Being obvious means taking advantage over context. When you know who you’re writing for and you can simply explain what value you’re offering, as well as, the people you’re generally writing for have read articles that are somewhat related to your topic, your content will be obvious to them. The main difference is that you may have personal experience and lessons learned that they’ll find valuable and interesting.