1,175 karma · joined January 30, 2016
Location: Ho Chi Minh City, Vietnam
Remote: Yes
Willing to relocate: No
Technologies: Golang, Java, C++, ReactJS, PostgreSQL, MySQL, Redis, K8S, GKE, CI/CD, Distributed System.
Résumé/CV: https://letientai.io/cv
Email: (find in CV)
I'm 10+ YoE SWE, who built high-scale performant microservices, core libraries, and developer tools at Shopee (the E-commerce leader in Southeast Asia). Able to learn and be productive quickly with whatever stack you use. My last project at Shopee was a framework that abstracts infrastructure components (DB, cache, mq, ...), enabling developers to build new services quickly focusing on only the business logic. It's similar to Spring Boot but for Golang. It's not OSS, unfortunately.I'm looking for either a full-time or contract remote position.
[0]: https://martin.kleppmann.com/2016/02/08/how-to-do-distribute...
If you want to dive deeper in to Computer Science and become a Software Engineer, then there's a lot more to learn. Here's some short tips:
- Learn a few programming language for their paradism: Java (OOP); Python, Hashkell, Scala (Functional Programming), Rust (memory safety). You don't have to actually work on them, just need to be able to write some algorithm and know their key features.
- Read more code, especially those from high quality projects.
- Experiment a lot. Don't just read articles, blog posts. You have to get your hand dirty.
[0]: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsma...
Seriously, a lot of questions anwer themselves after I read the related manual. Ever since I got that as a reply on my StackOverflow question, it becomes my motto.
This begs a questions, which type of applications that are ok to disable mitigation?
https://status.gitlab.com/pages/history/5b36dc6502d06804c083...
Above link result in err 500.
* Based on musl libc, busybox and the Linux kernel.
As some one who is working on Go ecosystem, this drops my interesting immediately. Using musl libs means a lot of tools can't be used on this OS unless we install the glibc.- Most of the dev are not trained for that. They're trained for finding shortcuts (Google, SO), rushing the deadline and fix the code with any solution they can find. People tend to follow the easy path (fix and forget) rather take time to write good docs (code comment, commit message, wiki, ...)
- Some people have good writing skills, some have good technical skills. The ones who are good at both are rare. So some time the docs are confusing, misleading.
- We're lacking good tooling for writing docs. At my work, people prefer to write on Confluence for its inline-comment feature (before, they write in Google docs). But Confluence (and Google docs), IMO, are terrible editors for technical heavy docs and they can't work offline, don't have desktop, can't be used with external editor (I'm a die hard vim fan). Another example: tools for drawing diagram. The plain text solutions (PlainUML, mermaid) I've tried so far don't work well for big diagrams. The non plain text solutions can't be tracked in git, thus defeat the point of single source trust.
I believe if someone can build a product solve my points on tooling, their product will beat Confluence easily. I don't have any ideas to fix the other 2 points, though.
To me, the key for being productivity is understand throughly the "tools" we use: IDE, languages, libraries, framework cli, os, shell,... Read the implementation, the docs, the issue tracker, even the git history if you have time.
When I started to learn vim, I tried many popular distribution without understand each of the plugins they included. And I almost gave up learning vim. It's until I start to read the vim manual, learn the key strokes one by one and then building my own distribution, that's when I really know how to use vim. Even so, I still learn many great things from books like Practical Vim by Drew Neil (on Tmux, there's Tmux 2: Productive Mouse-Free Development)
I think you might already know that, but still shooting here for some quick tips. I don't have any shortcut, just that motto.
I feel relatable. At all the placed I've worked, people realize the problem, sometime find the solution, but most of the time, they won't fix it, unless it directly affect their code/project/product. As a result, technical debt keeps bubble up and we have more and more issues.
Right now, the only thing I can do is just to keep fixing issues as I encounter them. But that's for the code, I don't have any solution for the "people" problem.
~16h meeting every weeks. To be honest, I'm very much dislike that, but people seems to love talking more than writing detailed docs.