开发者
客戶開價太低嗎?Freelancer 接案前的 3 問決策樹
客戶開價太低嗎?Freelancer 接案前的 3 問決策樹 客戶說:「就改幾行代碼,收這麼多?」 你是不是也曾這樣懷疑過自己? 每個 freelancer 都遇過這種時刻——客戶開了一個數字,你直覺「好像太低了」,但又說不出具體原因。以下是三個問題,幫你在 30 秒內判斷一個報價是否值得接。 3 問決策樹 Q1:這個價格是否覆蓋你的實際時間成本? 別只算「改了幾行代碼」。真實成本包括: 讀懂陌生的 codebase(新手可能 3 小時起跳) 本地環境折騰(特別是別人維護的老項目) 測試和部署風險(部署壞了誰負責?) 客戶來回溝通的成本(「再大一點」「這個藍再淺一點」) 未知因素:如果代碼原作者已經不在,你是在維修「別人的技術債」 快速算法 :把報價 ÷ 你估計的總小時數 = 每小時實際時薪。拿這個數字和你的底線比(建議:不是你「想要」的時薪,而是你「能接受吃飯」的時薪)。 如果低於底線 30%,進 Q2。 Q2:需求是否清楚到可以控制風險? 報價低且需求模糊 = 高危信號。 以下任一癥狀存在,提高風險溢價或拒絕: 「就簡單改一下」——沒有定義邊界 沒有明確定義「完成」的標準——上線了算完成?客戶滿意了算完成? 對方說「你先做再說」——這句話幾乎等於「我打算白嫖你」 沒有提供任何文件或代碼庫 access——等於讓你盲開 決策樹 : 需求不清楚 + 報價低 → 報價必須上浮 50%,否則不接 需求不清楚 + 報價合理 → 可以談,先付定金再動工 需求清楚 + 報價低 → 進 Q3 Q3:這個案子是否帶來明確後續價值? 有兩種情況可以在低報價下仍然接: 確定的後續項目 :客戶明確說「這個做好了,下個月還有 X 個功能要做」 戰略性客戶 :這個客戶有公開作品價值(大厂案例、知名公司、能寫進 portfolio 的上線項目) 如果兩者都沒有,低報價等於純粹的自我低估。 真實案例:隱藏成本解析 案例 1:$200 改 3 行 CSS 客戶說:「就改導航列的顏色,$200 應該夠了吧?」 表面看:3 行 × $66/行 = 天價。 現實: 理解整個樣式系統、找到正確的 CSS 檔案:2 小時 本地環境折騰(別人的專案,Node 版本衝突):1 小時 反覆修改確認視覺效果:3 小時(客戶說「那個藍再淺一點、再加個 hover 效果」) 部署時發現壞了其他頁面:2 小時 客戶最後說「還是原來的好」:情緒成本 實際時薪 :$200 ÷ 8 小時 = $25/小時,低於 freelancer 最低生存線。 案例 2:$2,000 報價改 2 天的「簡單項目」 客戶說:「做一個登入系統,就基本功能,2 個禮拜夠了吧?」 報價 $2,000,看起來還不錯。 現實: 需求訪談:4 小時(客戶一開始說「就登入」,後來才說「還要有第三方登入、密碼重置、邀請機制」) 設計資料庫結構:3 小時 實現 Registration + Login + OAuth:6 小時 測試覆蓋:4 小時 文件撰寫和交接:2 小時 實際 :19 小時 × $105/小時 = $1,995 ——這個案子壓根不賺錢 常見陷阱:為什麼低報價 freelancer 總是吃虧 1. 「就幾行代碼」陷阱 代碼行數 ≠ 工作量。真正的成本在「理解上下文」——你得讀懂別人的代碼邏輯,這可能比你自己寫慢三倍。 2. 「簡單的 SQL」陷阱 每一條看似簡單的 UPDATE 語句,背後可能是: 凌晨 3 點資料庫突然鎖死 備份失敗、沒有測試環境 正式資料一個失误就沒了 3. 「長期合作」陷阱 客戶說「我們長期合作」通常是好事,但前提是—— 報價不能因為「長期」而打折 長期合作應該帶來穩定收入,不是穩定低價 你現在有一個具體報價嗎? 如果客戶給了你一個數字,你不確定是否該接—— For $10, I'll review one client offer and tell you whether it looks underpriced, risky, or worth taking. 直接發報價截圖或文字到 paypal.me/cheapuno ,標註「報價審查」,24 小時內回覆具體分析。 快速決策檢查表(列印出來放桌邊) □ 報價 ÷ 預估時數 > 我的底線時薪? □ 需求有明確定義邊界嗎? □ 有隱藏的技術債或未知因素嗎? □ 客戶有明確的後續項目或品牌價值? □ 我有權利說「不」嗎? 如果以上有任何一個「否」,這個報價需要重新談。 如果你想系統性学会如何報價、報價低了怎麼談、客戶不接受怎麼辦——歡迎從 Freelance Pricing Master Index 開始,這裡有 14 篇文章覆蓋 freelancer 定價的各種場景。
AI 资讯
Stop re-flagging the same finding — without going silent
A reviewer that flags the same known issue on every run trains you to ignore it. The fix can't be "hide findings," because a tool that silently drops things is worse than one that nags. CommitBrief has two ways to accept a finding and move on — a per-developer baseline and an in-source suppression marker — and both are built so that what they remove is always counted, never quietly swallowed. The interesting part is how a finding keeps its identity when the code around it moves. TL;DR Baseline ( .commitbrief/baseline.json , gitignored): accept the current findings once; later runs drop anything whose fingerprint is already in the file. Inline suppression : a commitbrief-ignore: <reason> comment on or above a line removes that finding — and lives in committed source, so a reviewer sees it. A finding's fingerprint deliberately excludes its line number , so accepting it survives the code drifting up and down the file. Both are TRUE removals — they affect --fail-on and the JSON findings[] , not just the display — and both print what they removed. The limit. The baseline is per-developer, not a shared team policy; it quiets your runs, not CI's. The fingerprint that survives code drift The whole design rests on one question: when is a finding "the same finding" you already accepted? If the answer included the line number, a baseline would evaporate the moment you added an import above the issue. So it doesn't. A finding's identity is three fields, hashed: func normalizeTitle ( title string ) string { return strings . ToLower ( strings . Join ( strings . Fields ( title ), " " )) } func Fingerprint ( f render . Finding ) string { h := sha256 . New () h . Write ([] byte ( f . File )) h . Write ([] byte { 0 }) h . Write ([] byte ( f . Severity )) h . Write ([] byte { 0 }) h . Write ([] byte ( normalizeTitle ( f . Title ))) return hex . EncodeToString ( h . Sum ( nil )) } File, severity, and a normalized title — and nothing else. Line is out, so the same issue keeps its finger
AI 资讯
AGENTS.md Is Not Enough for Safe AI Agent Execution
Overview AGENTS.md is useful. It gives AI coding agents a place to find repo-specific guidance: how to behave what conventions matter what areas need extra caution what kinds of changes should trigger review That is a meaningful improvement over sending an agent into a repo with no instructions at all. But AGENTS.md is not enough. It can tell an agent to be careful. It cannot, by itself, make execution safe, verification trustworthy, or review inspectable. For that, a repository needs more than instructions. It needs: declared safe commands a canonical verification path receipts that show what actually ran That is the difference between agent guidance and execution governance. Instructions Help. They Do Not Govern Execution. An instruction file is still prose. That means it can express intent, but it does not automatically create operational truth. For example, AGENTS.md can say: run the right checks before handoff avoid destructive commands do not edit generated files ask before touching infrastructure Those are good rules. But notice what they leave unresolved: which checks are the right ones which commands are actually safe which paths are protected structurally versus only suggested what should count as evidence that verification happened how to tell whether a failure came from code, setup, or drift That is where many agent workflows still break down. The agent may follow the spirit of the instructions and still take the wrong execution path. Safe Commands Need To Be Explicit One of the biggest gaps in agent-oriented repos is that they often declare guidance without declaring a safe command surface. The repo may tell the agent: Run tests before you finish. But that still leaves a dangerous amount of interpretation. Which task is safe? Is it: npm test pnpm test make check docker compose run test a narrower unit-test path the CI workflow itself And if several exist, which one is canonical for a routine code change? The repo should not force the agent to infer that
开发者
Google kills Tenor GIF API, forcing changes at X, Discord, and more
Tenor still connects to Google apps, but other platforms must look elsewhere for GIFs.
AI 资讯
Google’s NotebookLM can sum up your research in a TikTok-style clip
Google's NotebookLM is adding a new way to catch up on your notes: TikTok-style AI videos. The new feature is rolling out to Google AI Ultra and Pro subscribers, allowing NotebookLM to generate 60-second vertical AI clips based on the sources you upload to the app. The example shared by Google details Australia's unsuccessful war […]
AI 资讯
Google introduces a faster, cheaper image generator with Nano Banana 2 Lite
Google is updating its image generator to make it faster and cheaper, making it a more useful tool for creators looking to make AI content.
AI 资讯
Google's new Nano Banana 2 Lite image model is its fastest and cheapest yet
They may not look as good, but Nano Banana 2 Lite images only take a few seconds to create.
AI 资讯
Learn to code.
My learning so far I absolutely love learning to code. I gave it up to vibe code earlier last year and completely regret it. At first it felt like I was moving faster, but over time I realized I was skipping the part that actually made me better. My learning journey is fueled by passion and the hopes to move into a Go/SWE/Cloud type role. I do not know exactly how I will go about doing so, but I will work until I am noticed. Right now I am trying to focus on building real understanding. Not just getting something to work, but knowing why it works. I want to be able to read errors, debug my own code, understand the tools I am using, and slowly become the kind of developer that can solve problems without panicking. Learn to code! If anyone has any doubts on if coding is "worth it" still, I can account for how personally fulfilling it is. Solving a bug/problem in your own code gives me a personal high. There is something different about struggling with something, walking away, coming back, and finally seeing it click. It reminds you that you are actually learning. Every small fix feels like proof that you are getting better. I am not against using tools or AI. I still think they can be helpful. But I do think there is a big difference between using them to learn and using them to avoid learning. I had to learn that the hard way. So if you are new, or if you stopped for a while like I did, I really think you should keep going. Build small things. Break stuff. Fix it. Read docs even when they are boring. Ask questions. Take notes. Let yourself be bad at it for a while. I do not know where this journey will take me yet, but I know I want to keep showing up.
AI 资讯
How GitHub maintains compliance for open source dependencies
Explore how the Open Source Program Office uses GitHub’s new license compliance product to manage open source dependencies at scale. The post How GitHub maintains compliance for open source dependencies appeared first on The GitHub Blog .
AI 资讯
Google’s killing off Tenor GIF searches in other apps
The GIF-picking interfaces in some of your favorite online platforms might look different going forward, as Google prepares to shut down the Tenor API today. While the Tenor website, along with its searchable GIF library, will remain live, platforms like X, Discord, Bluesky, and WhatsApp that previously integrated the API are now having to migrate […]
AI 资讯
Google's Gmail Live AI feature is now available in beta
You can use Gemini to quickly search your Gmail inbox with natural language.
AI 资讯
Cutting Idle Agent Costs by 90% with Agent Substrate
Cost is everything. In just about every agentic conversation, the three things that come up for enterprises implementing AI workloads are: Cost Observability Security and as AI continues to throw everyone for a loop when it comes to cost management (e.g - Uber running out of the yearly token budget in one quarter), the ability to shrink resource (like hardware) usage will be crucial moving forward. In this blog post, you will learn how to cust costs by 90% using Agent Susbtrate in comparison to Agents running in k8s Deployments/Pods. The Cost Comparison Agents need a place to run. The "place to run" needs to be a platform that's easily managed, orchestrated, and has the ability to cluster resources. Resources like CPU, GPU, and memory need to be able to scale and expand. Without this, it's a matter of manually managing servers that Agents are running on and clients to interact with said server. That's why so many organizations choose Kubernetes to run Agentic. When running Agents per Pod, however, that can get costly very quick in terms of hardware (GPU, CPU, memory) and performance (can your cluster scale up and down quickly based on resource needs when it comes to Agents coming up and going down per use?). The tests in this blog post show: Always-on Agents running in k8s. Actors running in Workers via Agent Substrate And the comparison will be 50 always-on Pods in comparison to 50 Actors across 5-7 Workers (Pods). If there are 50 Agents running per Pod and 50 Agents running per Worker with 5-10 Actors per Pod, you can already imagine the hardware resource savings that can be accomplished. Right now, the majority of organizations start off with the "one Agent per Pod" approach as that's the fastest way to show value and get up and running. For the future, however, Agents in Actors via Agent Substrate will be how organizations deploy when they care about efficiency, optimization, and managing cost. Let's dive in from a hands-on perspective. Prerequisites To follow a
AI 资讯
The Realities of AI Video Surveillance
The Financial Times has a good article on how AI is changing the capabilities of video surveillance, with information from both Israel/Iran and Russia. I wrote about this sort of thing a few years ago, how AI enables mass spying in the way that computers and networks enabled mass surveillance. The interesting development in the article is that AI allows people to ask natural language questions about video footage to AIs—and AIs can answer them. In contrast with older tools restricted to a few dozen preset searches, these new tools allow an almost unlimited range of enquiries by enabling language-based searches on video...
AI 资讯
Building desktop WebView apps in Go without CGo
I have been working on Glaze , a small desktop WebView toolkit for Go. The short version: Glaze lets a Go program open a native desktop window backed by the WebView already available on the operating system, without using CGo. It currently targets: macOS, through WKWebView Linux, through WebKitGTK Windows, through WebView2 The project is still young, but the core idea is already useful: keep small Go desktop tools close to the normal Go workflow. No C compiler in the build path. No bundled native helper library. No large application framework around it. Just Go code calling the system WebView. Why I wanted this I write a lot of small tools in Go. Some of them are fine as CLI programs. Others need a basic interface: a form, a preview, a local dashboard, a small editor, or a way to inspect and manipulate data visually. For those cases, HTML is often enough. The browser gives me layout, text rendering, forms, tables, keyboard handling, and a familiar debugging model. But I do not always want to ship a web server as the user interface. I also do not always want to pull in a large desktop framework when all I need is a native window around a local UI. A WebView is a reasonable middle ground. The problem is that many WebView solutions eventually bring CGo, native build tooling, helper libraries, or larger framework assumptions into the project. That is not necessarily wrong. For many applications, those trade-offs are acceptable. For this project, I wanted something narrower. The design constraint The main constraint behind Glaze is simple: Use the WebView already provided by the OS, but call it from Go without CGo. Glaze uses purego to call native platform APIs directly from Go. That means each backend talks to the platform WebView: WKWebView on macOS WebKitGTK on Linux WebView2 on Windows The result is not a full GUI toolkit. That is intentional. Glaze is focused on the window, the WebView, JavaScript-to-Go bindings, and a few desktop helpers that are useful for small t
AI 资讯
frontier models are becoming cloud procurement
The interesting part of OpenAI and Codex on AWS is not that another cloud menu got more model names. That part is useful. Enterprises want strong models. Developers want Codex closer to their infrastructure, data, and deployment machinery. The interesting part is that frontier AI is being pulled into the same boring machinery that already governs everything else companies run: procurement, IAM, billing commitments, region policy, audit logs, support contracts, data boundaries, and security review. That sounds like paperwork. It is also how enterprise software becomes real. model access was the easy problem For a while, AI adoption was framed as an access problem. Can we call the model? Can we get enough rate limit? Can we wire the SDK into our product? Can the coding assistant see enough of the repo to be useful? Those are real questions. They are not the end of the story. The next set is much more familiar to anyone who has operated software inside a company: which account owns this usage, which data can cross the boundary, who can create agents, which region runs inference, how the bill is allocated, and what evidence exists when an incident involves model output. That is the part where the demo becomes a platform. OpenAI on AWS matters because many companies already have that platform muscle in AWS. They have IAM, billing, private networking, audit trails, procurement paths, compliance evidence, cost allocation tags, and teams whose job is to make all of this survivable. Putting a frontier model behind that machinery does not make the hard parts disappear. It makes them legible. bedrock is a procurement surface Amazon Bedrock is usually described as a managed model service, which is true and also undersells the point. For enterprises, Bedrock is a procurement and control surface. If OpenAI models and Codex are available through Bedrock, a company can route adoption through an existing cloud relationship instead of creating a new vendor path for every team that wa
AI 资讯
I was lost and now I'm learning again!
Starting in IT I started in IT at a local school in my small town in December 2024. It was my first job out of college after earning my B.S. in Cybersecurity. None of the infrastructure was updated. Everything was failing, and luckily, I had one other IT person there: my director. I honestly think he knew less than I did, and he would get frustrated at almost every ticket. Even then, I knew I wanted a role where I could code. Fast forward to more recently, he had a freak out and quit. Now we have a two-person team, and everything is finally up to date and functioning. Even with things improving, I still knew I wanted to move toward a SWE-type role. Learning to Code I first decided to learn C# for Unity. I was really into game dev while I was in college, so it felt like a natural place to start. I began with the Microsoft/freeCodeCamp C# certification, and I surprisingly really enjoyed it. I made a few small games on itch.io that no one cared about, but I had fun building them. After that, I went on a bit of a language-hopping spree. I jumped from C# to C++, then into full-stack web development. I actually stuck with web dev for a while and really enjoyed it. But this cycle went on for awhile of just constant swapping. Wannabe Founder Then something switched overnight. I went from writing maybe 0-5% AI-generated code to using AI for nearly everything. I started spam-building startup ideas that did not really go anywhere. I may have made around $2-3k from them, but most of the time I was just chasing money and building whatever I thought had the quickest path to making some. I got seriously addicted to vibe coding. I tried Codex, Cursor, Claude, and basically anything with AI in it. I did like Codex the most, though. Eventually, I realized I had almost completely stopped coding by hand. I was not passionate about the startup ideas I was building. I loved coding, and I knew I had to step back. Back to Coding Now I am back to coding without AI assistance. I will eventua
开发者
Supreme Court ruling guts government’s use of geofence warrants
SCOTUS falls short of deeming geofence warrants unconstitutional, though.
AI 资讯
Google expands personalized intelligence to Gemini app image creation
Google expands personalized intelligence to Gemini app image creation
AI 资讯
Google warns EU's plans to weaken its monopoly could expose user data
The EU wants Google to share search data with competitors and open up AI on Android, but Google alleges major privacy risks.
AI 资讯
AI agents are not your “coworkers”
This story originally appeared in The Algorithm, our weekly newsletter on AI. To get stories like this in your inbox first, sign up here. Imagine coming in to work to learn that a new underling will report to you. The worker is not a person but an AI tool—one that your company nonetheless calls Alex, an…