809 karma · joined September 28, 2011
https://github.com/DonDebonair
The guy clearly explained how he has built MULTIPLE successful products. So there is obviously more going on than sheer luck.
And jumping on the AI hype is exactly what being a good entrepreneur is all about: recognizing an opportunity/gap and capitalizing on it. And the reason he was more successful than those thousands other developers is because he understands that there is more to business than building a cool product. For example marketing, something that he is clearly very good at.
And since when is being successful and in detail explaining how you went about it "bragging"?
This is obviously something Tony put a lot of time and effort in, and it paid off. Good on him!
I work for a startup that is less than 3 years old and has ~90 employees of which ~50 are software engineers and data scientists (people writing code). We're VC funded and not profitable yet. When I see a pricing tier called "Enterprise", I do not expect to fall under that tier as a small, young company. But looking at the limits of the Team tier, we would probably not fit under that tier because we have more than 30 repositories. We also use Github Enterprise (cloud version), which puts us in your Enterprise tier as well.
If the Team tier is already $30/user/month, I'm afraid to even learn what the Enterprise tier is like. I guess we're not your target audience and that is okay.
Here is when I would consider paying for your product: remove the repo limit (or make it much bigger) and half the price. That would make it affordable and more in line with the other tools we're paying for.
Github Enterprise - while of course not 1-to-1 comparable - offers so much more functionality for 2/3ds of the cost of Graphite. I'd expect Graphite to cost _less_ than Github Enterprise as it seems it could be positioned more as an add-on to what you get from Github.
Am I missing something?
As any good engineer, people working at those companies recognize that Java, Golang, Rust etc. are all tools and these tools have their place in different scenarios.
I used to be like you, but my personal "anti-language" was PHP. I would talk down on organizations using PHP and I would take them less seriously as engineers. But I have come to see that they too are using a language (PHP in this case) as a tool to build a business. And it serves those orgs well apparently.
Don't get me wrong, Java would not be my first choice in many cases. At the company I'm working for, we only use Golang and Python in the backend and Typescript in the frontend. That doesn't mean that I cannot recognize the value the Java can bring and the niche it occupies.
I'm actually pretty amazed by how far Java has come as a language. 10 years ago, I thought Java was going to be replaced by the likes of Kotlin or even Scala. But Java has pretty much caught up in terms of features and ergonomics compared to the Kotlin and occupies a comfortable spot now as being an expressive and productive language without bringing the learning curve and footguns of Scala.
Let's look at the alternatives you mentioned: Rust and Golang. Java compared to Golang is a much more expressive language. Java compared to Rust is a much easier language because you have a garbage collector for the majority of the cases you don't need the manual memory controls that Rust offers you. In other words, Java is a perfectly valid alternative to both Golang and Rust with its own tradeoffs.
You try to paint a picture of Java not being cool but at the same time I see "modern" companies that are held in high esteem for their engineering prowess using Java to do incredible thing (e.g. Netflix and Google)
If you want Excel to interpret strings as dates, use a more common date representation such as iso8601
Your response feels disproportionate. As if this person is suggesting giving up your liver is a reasonable price.
I also feel that your comment is slightly ironic, given the poor performance of Notion. I'm almost thinking (without having any clue about Notion's architecture) that Notion could benefit from a more complex architecture that prioritizes performance.
The reason take-home assignments can work well in my opinion is that it allows the candidate to show off how they perform in _real world_ scenarios - as opposed to live coding computer science toy problems. Interviewers can assess what code looks like that resembles the code candidates would likely write on the job.
What companies like fly.io are doing wrong: if you ask candidates to put in multiple hours writing code for free, the _least_ you can do is give them an interview to give the candidate feedback on their assignment, even if you're going to reject them. In case of rejection, it doesn't have to take more than 15 minutes of time from the interviewers (which is far less than the hours the candidate put in) and the candidate walks away with (1) valuable feedback that can help them improve and (2) a positive view on the company and their hiring processes.
What many companies don't understand is that your goal should be for candidates you reject, to still become "promoters" of your company.
Here is how we do it at Source.ag:
1. If the resume is promising, we always do a first screening interview with the candidate _before_ we even consider them for a take-home assignment
2. The candidate gets the take-home assignment after passing the interview, works on it and sends us back their solution
3. We schedule a technical interview with the candidate. This interview can basically have 3 formats:
a. the assignment was bad: we tell the candidate at the beginning of the interview we don't intend to continue with them and give them some personal feedback on the assignment
b. the assignment was great: we take time to ask the candidate about their solution, to elaborate on their tech choices etc. and generally use the interview to understand if their "talk" is just as good as their "walk"
c. the assignment was ok-ish: we use the interview to figure out what the candidate's engineering knowledge is and to what extend it complements what we got from the assignment. It could be that a candidate didn't perform super well on the assignment, but when talking to them we discover there is enough skill, knowledge and team-fit to work with. This happens mostly for junior-medior candidates, not for seniors.
This is a time investment for us as a company, but has gotten us good hiring results and a positive reputation when it comes to hiring practices.
And as I understood it, they weren't making unnecessary calls or anything.
As an aside, I'm getting a bit tired from the "programmers vs product/business people" trope. The average software engineer would be nothing without a good product manager in my experience. And going by this thread, there seems to be at least as much contempt from programmers/software engineers for product people than allegedly vice versa.
What are the main differences between Permify and Authzed/SpiceDB?
Python to me has always been the ultimate glue and scripting language and it's sad to see it is not leveraged more often.