Various notes on career-related stuff
Compensation Sometimes you need to take a pay cut in order to learn new skills. But it will pay off in the end. On the other hand, if you are paid above the market rate, when you have to move it’s probably harder because most orgs won’t offer the same compensation. Skills PM / PO / EM / Sales should understand technical stuff, as in they are aware of pros and cons of solutions being used. Bonus if they used to be an IC. “Do you need data structures and algorithms for $x” often comes up in community. Short answer is you don’t need it until you do. But most people never reach the point where they need to utilize DSA. Not because it’s obsolete, rather more of most people can get by with poorly-optimized code. Career ladder No matter how well you can perform in your current role, if you don’t have the right amount of soft skills and big-picture thinking, you can’t advance further. Most ICs who’s outgrowing their senior/technical lead roles tend to jump straight into considering that they are staff/principal engineer. This is almost always not the case, because to be a staff/principal, you still need soft skills and business acumen. You are influencing without authority after all. Most engineers are stuck at mid level, and that’s to be expected. And even less reach senior level. Less and less for technical lead and engineering manager. Some people are still mid level after 10 years in the industry, and you have to let them be. Not everyone has what it takes to advance. You would also find that some people can operate at a higher level, but it utilizes a lot of cognitive load for them, to the point they prefer to step down a level just to not lose their sanity. If you are doing your best and are the best performed member of your team - if you are not getting promoted, chances are your manager doesn’t want to lose you, because keeping you exactly where you are means your manager doesn’t have to find someone to replace you. But it can also be that you need to catch up on your soft skills. Talk to your manager to assess your skills gap. Having “senior” in the title doesn’t make someone actually operating at a senior level. It’s just a title. The same goes for “manager” as well. A lot of senior engineers by title are actually mid levels. And a lot of managers only took the job because they want more pay but don’t actually enjoy managerial duties. Roles Being a manager isn’t about attending meetings all day. Rather it’s unblocking people and making sure people get the support they need. But if they do this job well, you wouldn’t notice them at all. But if they do it poorly, you will notice their existence. Data roles can be business or tech oriented, or somewhere in the middle. No point in fighting whether a DS/DE/MLE role should be technical or business-led. Some roles are not entry-level. For instance, data engineering, data science, devops. But the caveat is that if you are joining an established team, it’s somewhat doable for entry-level. Some job descriptions for data engineering can include anything from development, ml deployment, data pipelines, visualization, etc. Some ops roles can expect anything from dev, llm experiment and deployment. This is a symptom of hiring managers not really understand roles collaboration. Because realistically no one can juggle everything at the same time. Your actual responsibilities and title may not align. It’s up to you to present your title in resume. After technical lead, one possible path is picking up management, PM and sales roles. If you have to manage but can’t understand engineers, it’s not going to work. If you have to keep the timeline in check and follow-up with people from multiple teams as a PM, not understanding the concerns from each team is not going to make your job as a PM easier. Pitching products and services to clients while not fully understand your offerings’ capabilities can cause more headaches for the engineering team, because if you promised what can’t actually be delivered, the engineering team wouldn’t want to work with you. Job change If you don’t learn something new at work for a while, maybe it’s time to move. Sometimes it’s not you, it’s them. If you want to change job because you don’t like someone at work, you probably find it’s not effective because such people can exist anywhere. Question is how are you going to handle them. Sometimes things are outside your control, and at certain point there’s no reason to fight against the current. Career change Data folks want to move to SWE. Vice versa is true. Both citing more pay on the other side. Side projects do help, but what actually happens is people copy-pasting them left and right. So unless your resume stands out, no one would look at your side projects. Even then, your side projects should be original idea. Some people want to switch career for better pay, there’s nothing wrong with it. But keep in mind the possibility that you might not be cut out for it. It can be hard to accept that you can’t switch over to a career you aimed for. The longer this keeps going, the greater cognitive dissonance. Be kind to yourself, because there are probably other things out there that you are good at.
Calling C from Go, Python and Rust benchmark
There’s a consensus that generally, c is very fast, and python is very slow. But if we are talking about go and rust, you would find that rust is slightly faster than go. So from fastest to slowest: c, rust, go, python. But what if you have go, python and rust calling c function? There would be more overhead, but how much? Calling C from Go, Python and Rust Stats ...
LLM serving latency benchmark
After the rise of ChatGPT in 2023, these days most people are familiar with the concept of LLM - Large Language Model. If you are LLM users, things are looking bright because there are gazillion options for you to choose from. But if you are on the other side - creating and deploying LLMs, there are certain things you need to think about. For one, your implementation team would have languages/frameworks they specialize in, so that’s already a constraint you have to work with when designing a solution. ...
When (not) to use Terraform
If we are talking about IaC, Terraform would be on the list. It made IaC popular and help a lot of companies maintain infrastructure at scale. Especially when you have multiple sets of infrastructures to maintain, Terraform can help you reduce the setup time tremendously via using Terraform Modules. Think of this like a function / class in programming languages. I’ve been cranking out a lot of Terraform, a lot of trials and errors along the way. Picking other people’s brains by reading a lot of blog posts, trawl community forums to see how other people use Terraform and what are their challenges. Below are summarizations of what I’ve experienced, in addition to what the general sentiments are. ...
AWS IAM credentials best practices
It’s hard to escape AWS, seeing how prevalent it is in global internet infrastructure. Chances are, most websites you visit are hosted on AWS. As a software engineer, you probably encounter AWS at certain point in your career, and while getting AWS IAM credentials to work locally during development (via aws-cli) would suffice, sometimes in production land, you might need some adjustments. Having worked with AWS extensively, here are what I found to be useful to keep in mind while working with AWS IAM credentials. ...