A high-velocity style of software development
High-velocity software development prioritizes coding and experimentation, enabling rapid testing and iteration. Small, reusable functions enhance code quality, while consistent styles improve collaboration and reduce confusion.
Read original articlethe list, apply the increment, and return the new list. This function should not be tied to a specific list or type of number; it should be reusable and adaptable. The focus should be on creating functions that are not only small but also versatile, allowing them to be combined in various ways to achieve different outcomes. This approach fosters a more modular codebase, where components can be easily tested and maintained. The emphasis on experimentation and iteration in software development encourages developers to engage directly with the code, minimizing unnecessary meetings and documentation. By keeping experimental data alongside production code and utilizing hot-reloading tools, developers can quickly test and refine their work. This high-velocity style promotes a more dynamic and responsive development environment, where changes can be made rapidly and efficiently. Ultimately, the goal is to create a seamless workflow that prioritizes coding and experimentation over excessive planning and discussion.
- High-velocity software development emphasizes coding and experimentation over meetings and documentation.
- Keeping experimental data alongside production code allows for rapid testing and iteration.
- Utilizing hot-reloading tools minimizes restart times, enhancing development speed.
- Functions should be small, general-purpose, and reusable to improve code quality and maintainability.
- A consistent coding style across a project fosters better collaboration and reduces confusion.
Related
Algorithms We Develop Software By
The article explores software development methodologies that improve coding efficiency, emphasizing daily feature work, code rewriting, the "gun to the head" heuristic, and effective navigation of problem spaces.
What 10k Hours of Coding Taught Me: Don't Ship Fast
The article emphasizes the importance of developer experience and software architecture, advocating for simplicity in coding, prioritizing refactoring, and maintaining code quality through structured practices and passion for the craft.
Practices of Reliable Software Design
The article outlines eight practices for reliable software design, emphasizing off-the-shelf solutions, cost-effectiveness, quick production deployment, simple data structures, and performance monitoring to enhance efficiency and reliability.
Algorithms We Develop Software By
The article explores software development methodologies, emphasizing daily feature work, code rewriting for quality, the "gun to the head" heuristic for efficiency, and the importance of problem-solving akin to pathfinding.
Good Software Development Habits
The blog post outlines software development habits that boost productivity, emphasizing small commits, continuous refactoring, frequent deployments, test-first approaches, and the importance of testability as a design indicator.
That being said although I agree with many things the author said, I think this phase goes a bit different:
> "You will waste so much time! Let's have a grand plan and write the perfect solution right from the start, ehh?"
The reason why bosses/ non technical people want to talk so much before and write so much non-code is because they can. If they could write code they wouldn't mind , but the "talking" phase is the only one where they can contribute and so to feel useful they actually delay everything.
This comes from an observation that difficult problems / projects sometimes were fixed much faster than easier problems.
Why? Because an easy problem is understood by everyone, so everyone has an opinion, so now we have to hear all the uninformed opinions and debate all the obviously-not gonna-works. But hard problems, they have two great properties, most people won't even understand the problem, and even if they do, they won't know what to do. So then you get one or two guys to actually fix it undisturbed.
Not only it's slower to have to deal with uninformed opinions, the outcome is often worse also, because for politeness and to avoid awkwardness you end up with an "average" of the opinions, but if majority of those are uninformed you just got a worse solution by talking.
I would not call this introducing a tool into the project. The debugger is not part of the project. I would call this utilizing the tools that are already built into your editor to make yourself more productive, instead of kneecapping yourself to only printing things.
Talking to the main point of that paragraph - using a debugger and having hot reloads are not mutually exclusive. You can use hot reloads to rapidly see live changes, then use breakpoints to inspect state if required. Additionally, that a debugger "cannot change the implementation" is not universally true; this varies by language and debugger, see Erlang/Elixir.
When people say things like this, it makes me think they simply lack the knowledge on how to effectively use a debugger, or they (or their language ecosystem) have not invested in good tooling.
and that is “hoist the system”
the important things that any file does is at the top.
the things those things depend on are either imported from packages at the top of the file or hoisted from functions below.
the things those functions depend on are hoisted from below them and so on
this makes every file in a system easy to grok because the first things are the business needs and as you scroll down, you get into the weeds and the implementation details— important things, but conversationally irrelevant things— this paradigm makes cross functional collaboration more effective as it drives engineers to understand business context with literal forcing functions.
Related
Algorithms We Develop Software By
The article explores software development methodologies that improve coding efficiency, emphasizing daily feature work, code rewriting, the "gun to the head" heuristic, and effective navigation of problem spaces.
What 10k Hours of Coding Taught Me: Don't Ship Fast
The article emphasizes the importance of developer experience and software architecture, advocating for simplicity in coding, prioritizing refactoring, and maintaining code quality through structured practices and passion for the craft.
Practices of Reliable Software Design
The article outlines eight practices for reliable software design, emphasizing off-the-shelf solutions, cost-effectiveness, quick production deployment, simple data structures, and performance monitoring to enhance efficiency and reliability.
Algorithms We Develop Software By
The article explores software development methodologies, emphasizing daily feature work, code rewriting for quality, the "gun to the head" heuristic for efficiency, and the importance of problem-solving akin to pathfinding.
Good Software Development Habits
The blog post outlines software development habits that boost productivity, emphasizing small commits, continuous refactoring, frequent deployments, test-first approaches, and the importance of testability as a design indicator.