Dev

Collections

re:Work

re:Work is a collection of practices, research, and ideas from Google and others to help you put people first.

  • Goal Setting Set goals to align efforts, communicate objectives, and measure process.
  • Hiring Make better hiring decisions through job descriptions, structured interviewing, hiring committees, and more.
  • Innovation Learn to build the skills for innovation and make it a part of your workplace.
  • Learning & Development Empower your employees to grow and develop by making learning part of everyone’s job.
  • Managers Identify what makes a great manager and offer feedback and development opportunities.
  • People Analytics Make informed, objective people decisions using science and data.
  • Teams Examine team effectiveness and how to foster psychological safety.
  • Unbiasing Reduce the influence of unconscious bias by educating, measuring, and holding everyone accountable.

Debug

Estimation

Pushing for a lower dev estimate is like negotiating better weather with a meteorologist

The article discusses how stakeholders often push development teams to provide lower estimates than initially given, without valid reasons for why the effort would decrease.

  • Estimates are based on teams' experience and data, not external opinions.
  • Estimates cannot be pushed lower without new information.

The better approach is to have a discussion around budget, uncertainties, and prioritization in order to deliver parts of the feature in a timely manner.

  • Teams are encouraged to ask stakeholders if they would tell a meteorologist their forecast is wrong, highlighting that estimates rely on expertise, not opinions.
  • With open communication around constraints and tradeoffs, teams can set appropriate expectations and deliver value along the way.

Code Assistance

LLMs and Programming in the first days of 2024

The author discusses their extensive use of large language models for programming tasks over the past year. They find LLMs most helpful for writing disposable code, learning new frameworks quickly, and accelerating documentation searches. While useful, LLMs still struggle with system programming problems requiring complex reasoning. The author believes LLMs have begun to show rudimentary reasoning abilities through their interpolation of concepts, but their capabilities are still limited. Overall, they argue LLMs are a valuable tool for programmers that can help focus time on more important problems and skills.

kevindamm

Salient point:

Would I have been able to do it without ChatGPT? Certainly yes, but the most interesting thing is not the fact that it would have taken me longer: the truth is that I wouldn't even have tried, because it wouldn't have been worth it.

This is the true enabling power of LLMs for code assistance -- reducing the activation energy of new tasks enough that they are tackled (and finished) when they otherwise would have been left on the pile of future projects indefinitely.

I think the internet and the open source movement had a similar effect, in that if you did not attempt a project that you had some small interest in, it would only be a matter of time before someone else did enough of a similar problem for you to reuse or repurpose their work, and this led to an explosion of (often useful, or at least usable) applications and libraries.

I agree with the author that LLMs are not by themselves very capable but provide a force multiplier for those with the basic skills and motivation.

nickpsecurity

I had good results by writing my requirements like they were very, high-level code. I told it specifically what to do. Like formal specifications but with no math or logic. I usually defined the classes or data structures, too. I’d also tell it what libraries to use after getting their names from a previous, exploratory question. From there, I’d ask it to do one modification at a time to the code. I’d be very precise. I’d give it only my definitions and just the function I wanted it to modify. It would screw things up whereby I’d tell it that. It would fix its errors, break working code with hallucinations, and so on. You need to be able to spot these problems to know when to stop asking it about a given function.

I was able to use ChatGPT 3.5 for most development. GPT 4 was better for work needed high creativity or lower hallucinations. I wrote whole programs with it that were immensely useful, including a HN proxy for mobile. Eventually, ChatGPT got really dumb while outputting less and less code. It even told me to hire someone several times (?!). That GPT-3-Davinci helped a lot suggests it’s their fine-tuning and system prompt causing problems (eg for safety).

The original methods I suggested should work, though. You want to use a huge, code-optimized model for creativity or hard stuff, though. Those for iteration, review, etc can be cheaper.


Children
  1. AI
  2. Advice for new software devs who've read all those other advice essays
  3. Algorithms we develop software by
  4. Auth
  5. Back End
  6. Bdd in 2020
  7. Best Practices
  8. Building Software Together
  9. CLI
  10. CSS
  11. Code Review
  12. DB
  13. Dev Tools
  14. Devops
  15. Etc
  16. Functional Programming
  17. Fundamental Math for Game Developers
  18. Git
  19. Greppability is an underrated code metric
  20. HTML
  21. Hardware
  22. Infrastructure
  23. Inside ECMAScript: JavaScript Standard Gets an Extra Stage
  24. Interesting
  25. Interview
  26. JavaScript
  27. Journal
  28. Learning at Work
  29. Management
  30. Miscellaneous
  31. Network
  32. PHP
  33. Privacy
  34. Program Languages
  35. Pronunciation guide for UNIX
  36. Python
  37. Reading List
  38. Regex
  39. Rust
  40. SaaS Payment vs. SaaS Billing - What Those Terms Mean and What the Differences Are
  41. Security
  42. Side Project
  43. Software Engineering
  44. Team
  45. Terminology
  46. Test
  47. To Fork
  48. To Read List
  49. Topcat's System Design Template
  50. TypeScript
  51. UX
  52. Virtualize
  53. Web
  54. What to Blog About
  55. Why Not Comments
  56. With AI
  57. You should separate your billing from entitlements
  58. 🦑 The 14 pains of building your own billing system