davismwfl
Joined 14 years ago
Joined 14 years ago
Then I like to check out the database (or algorithms & data structures if no db) and see how data is stored and manipulated, usually tells you a lot about choices that have been made.
Then open the project(s) and trace those 3-4 workflows once I understand it from the top level workflows. Part of this is also of course, getting the project(s) loaded and building locally as needed also reviewing tests, CI/CD, dependencies etc.
Lately, I've used Claude Code to help me with this, have it build a function map or class map and have it breakdown key insights about the code and trace those few workflows for me that I then validate. My process is pretty much the same just Claude does a lot of the initial lifting. I'll also dump the entire DDL for most databases (if they are more then a few tables) and send it to Claude and use that as a way to look for patterns/issues etc. For older monolith apps I've had to break the DDL into chunks sometimes just because some of these older apps have a very large number of tables/indexes/constraints etc that have been added over the years. Same thing works for json stores too fwiw.
Copilot for code completion + reviews or small snippets/functions but larger code/module generation has been weak so far.
Claude for full modules generation or complex multi-file edits.
Research: Grok (less filtered + better search), Claude (complex dev topics), GPT (balanced but sometimes slanted and/or seems to favor certain sources).
My Teams: Mostly Copilot for code completion/reviews, mix of GPT/Claude for code. Last year was loose/experimental to learn but we plan to formalize guidelines more this quarter.
Definitely a ton of hype that doesn't always match reality, but it is a super powerful tool that really has made things move faster.
My take (and hence assumptions) is you want to build a product where other engineers utilize your stripe account while charging fourth parties. I believe standard stripe accounts only allow for end use, not intermediary use. e.g. you can not "repackage" stripe to a third party and allow them to charge on your stripe account. If I understand things properly too, this actually wouldn't even be a Stripe only restriction, this is a restriction by many (most) card networks.
Definitely not a lawyer and not an expert on all things credit card. I did work on a project that tried to do something like this. Our client was wanting to allow their resellers to charge for unrelated products through the companies merchant account. This is essentially repacking and they got smacked by the bank and told this is not allowed by card networks. Now, whether it was just that bank and they lied about the reasoning or not I cannot say. But I know the networks are super touchy about knowing who is charging, for what and the risk profiles etc
I am pretty sure the SV3C brand is just a rebranded Dahua or similar, just a little different software.
FWIW: I also never use their mobile app to set them up, I just plug them into the isolated network and use the web interface to configure them.
I use BlueIris for the NVR software (it is cheap) and I buy various cheap IP cameras that support OnVIF (almost all try to phone home, some directly to china IPs). But what I do is I put all the cameras on an isolated LAN that does not have access to the internet. My BlueIris server has two NIC's one for the video lan and the other for my data network. BlueIris has a static IP and is locked down as well to what it can access externally.
Two ways you can make BlueIris work outside your home, use a VPN on your mobile device (absolute safest), or use their free DDNS to point to your box. Their system seems fairly decent, and I've done both methods. I also log all the requests on both LANs and check them every so often to see what is happening.
It seriously doesn't cost much to set this up, especially for just a couple of cameras.
I also have direct knowledge of a couple of other startups, similar size of 20-30 people in engineering, and they are about the same, no more than ~6 people.
In most cases, people really shouldn't be accessing production, it should mainly be deployment tasks that do. But you need a certain number of people to have access to cover failures etc. For example, having at least 4 people provides coverage if one person is on vacation, and then another gets sick etc.
I've read other companies basically have every engineer has production access to what they deploy, not sure I agree with that approach but I can see the argument.
Generically, most hardware based companies today are really software services or data companies that have a hardware "interface" product. e.g. pick a consumer wearable product, what's really the product there? the hardware? or the users data? The answer is generally the user's data and insights that can be pulled from that data. So product led there generally starts with the insights and data, the hardware is just a means to acquire it.
My main point is unless you are selling primarily disconnected hardware, e.g. a non-connected toaster, you almost always are focused on the software services and data around the product and the hardware is just the bow you wrap it in to get what really is your product. So being product led for hardware isn't so different than SaaS or others. The one key difference is part of the user experience is the hardware, so you spend more time around optimizing the hardware and convincing customers why your shiny object is the one they need to buy. In the end though, usually those reasons to buy still boil down to the insights that come from the software. Hence you are still looking at all those growth metrics, engagement etc that most SaaS or software based business are watching.
If you are a truly non-connected or have severely limited software in the product then I'd have some different comments, but those are pretty rare in today's market.
I am also not doing Java, primarily either node.js or C/C++, or I am using DataGrip.
That same example could be used for most of technology. I am sure Musk understands ML at a pretty solid level, but ask him to build or train a model and my guess is he wouldn't show "competence".
I think technical competence is also different then "could do it", e.g. I think Musk, Zuck could sit down and figure out most software related tasks. But it isn't a good use of their time. They have a good enough understanding of the technical limitations and requirements to lead people in product creation which has proven immensely valuable.
I like to always build a project dictionary early on, as it just is helpful for everyone coming along later, and also if concepts change over time the original intent is clear. So like in this case, I'd just pick "attributes" and then have a markdown file or wiki etc that has common terms, and attributes would be described with examples. A quick 1-2 sentence write up is way easier then trying to spend a lot of time picking the perfect word/phrase.
I learned C in the 80's and C++ in the late 80's/early 90's. I have heard every few years since probably 1996-97 how C/C++ were dead or dying languages and had no place in modern development. Yet they both have continued to grow in usage, especially with the IoT push.
I happen to still love working in both C and C++, not that they are the most productive or best tool for every job, but for high performance or low level, embedded etc they are still a great fit.
FWIW I feel most languages have a purpose and when used for those purposes they excel. However, when you use a shovel to pound in nails, it isn't the tool that is the problem. I do see languages like Rust replacing a lot of things C/C++ have been used for, but not everything.
Jobs are a little more selective for C/C++ in general, but there are tons out there and good C/C++ devs do well.
I've seen people calling themselves full stack but in reality they don't even have an area they know well and so they are just weak across the board which makes it hard to even give them a chance. Pick an area, spend your time there first and once you are fairly solid there you can start branching into more parts of the stack. I do think it is smart to branch wide across many areas, but you need some depth in an area first to help you land a job and be productive for a team.
I personally never witnessed reasonable quality engineers not able to move around and find work (outside a short 6ish month window during the peak of the dot com bust), sure it took a little longer for some, but we are still talking like 2-3 months. I changed jobs twice during the dot com bust and recovery as well as during the 2008 cycle, but I had solid experience. The people who were mainly laid off were the inexperienced that didn't have a tech degree. e.g. where companies took a chance on training them to fill a tech role which they were struggling to fill during the boom cycle. People regardless of degree or no-degree that had 5-10 years did fine generally, and 10+ years did well as long as you were reasonable in salary requests.
The biggest issue I saw was salaries stagnated for a really long time and companies took advantage of the job market to hold the salary growth down. To be clear, salaries didn't go down so much as they just leveled off and stayed there for WAY too long IMO.
There was some good that came from the dot com bust. The market weeded out all the speculative job seekers who had no business writing code. It removed a lot of the poorly ran companies, and it forced companies to pay attention to the fundamentals. So it wasn't all bad either, and I think we were healthier after for quite a while.
Hopefully this cycle turns into another correction and we clean up some stuff and it happens quickly. Nothing says it has to be a horrid all or nothing event, most recessions aren't. 2008 was unusually tough on a lot of people but left the tech area relatively unscathed. This one won't be quite the same, but HNWP & LP's need to still put their money to work, so there will still be plenty of money for decent companies. And tech is everywhere and not optional for companies anymore, so there will be a market for good engineers and like positions.