Simon Willison’s Weblog

Subscribe

48 items tagged “softwareengineering”

2024

Tools are the things we build that we don’t ship—but that very much affect the artifact that we develop.

It can be tempting to either shy away from developing tooling entirely or (in larger organizations) to dedicate an entire organization to it.

In my experience, tooling should be built by those using it.

This is especially true for tools that improve the artifact by improving understanding: the best time to develop a debugger is when debugging!

Bryan Cantrill # 18th January 2024, 3:27 am

2023

Tech debt metaphor maximalism (via) I’ve long been a fan of the metaphor of technical debt, because it implies that taking on some debt is OK provided you’re strategic about how much you take on and how quickly you pay it off. Avery Pennarun provides the definitive guide to thinking about technical debt, including an extremely worthwhile explanation of how financial debt works as well. # 8th July 2023, 5:11 am

Every year, some generation of engineers have to learn the concepts of “there is no silver bullet”, “use the right tech for the right problem”, “your are not google”, “rewriting a codebase every 2 years is not a good business decision”, “things cost money”.

sametmax # 23rd June 2023, 11:59 pm

Old technologies that have stuck around are sharks, not dinosaurs. They solve problems so well that they have survived the rapid changes that occur constantly in the technology world. Don’t bet against these technologies, and replace them only if you have a very good reason. These tools won’t be flashy, and they won’t be exciting, but they will get the job done without a lot of sleepless nights.

Justin Etheredge # 19th January 2023, 1:42 am

2022

The Perfect Commit

For the last few years I’ve been trying to center my work around creating what I consider to be the Perfect Commit. This is a single commit that contains all of the following:

[... 2019 words]

Software engineering practices

Gergely Orosz started a Twitter conversation asking about recommended “software engineering practices” for development teams.

[... 1557 words]

Reduce Friction. Outstanding essay on software engineering friction and development team productivity by C J Silverio: it explains the concept of “friction” (and gives great definitions of “process”, “ceremony” and “formality” in the process) as it applies to software engineering, lays out the challenges involved in getting organizations to commit to reducing it and then provides actionable advice on how to get consensus and where to invest your efforts in order to make things better. # 25th July 2022, 10:25 pm

Visual Studio Code: Development Process (via) A detailed description of the development process used by VS Code: a 6-12 month high level roadmap, then month long iterations that each result in a new version that is shipped to users. Includes details of how the four weeks of each iteration are spent too. # 20th July 2022, 4:34 pm

The End of Localhost. swyx makes the argument for cloud-based development environments, and points out that many large companies—including Google, Facebook, Shopify and GitHub—have made the move already. I was responsible for the team maintaining the local development environment experience at Eventbrite for a while, and my conclusion is that with a large enough engineering team someone will ALWAYS find a new way to break their local environment: the idea of being able to bootstrap a fresh, guaranteed-to-work environment in the cloud at the click of a button could save SO much time and money. # 8th June 2022, 6:09 pm

Contributing to Complex Projects (via) Mitchell Hashimoto describes in detail his process for understanding and eventually contributing to a complex new codebase. I picked up a whole bunch of useful tips from this. # 15th March 2022, 6:09 am

How I build a feature

I’m maintaining a lot of different projects at the moment. I thought it would be useful to describe the process I use for adding a new feature to one of them, using the new sqlite-utils create-database command as an example.

[... 2779 words]

2021

PAGNIs: Probably Are Gonna Need Its

Luke Page has a great post up with his list of YAGNI exceptions.

[... 1289 words]

YAGNI exceptions (via) Luke Plant provides his collection of things that you probably ARE going to need in a project, where adding them later is painful enough that it’s worth the up-front investment. I really like these as a concept, and I’m coining the term PAGNI—for Probably Are Gonna Need It—to describe them. # 1st July 2021, 6:30 pm

Business rules engines are li’l Conway’s Law devices: a manifestation of the distrust between stakeholders, client and contractor. We require BREs so that separate business units need not talk to each other to solve problems. They are communication and organizational dysfunction made silicon.

Paul Smith # 22nd February 2021, 8:34 pm

2018

Software Sprawl, The Golden Path, and Scaling Teams With Agency (via) This is smart: the “golden path” approach to encouraging a standard stack within a large engineering organization. If you build using the components on the golden path you get guaranteed ongoing support and as much free monitoring/tooling as can possibly be provided. I also really like the suggestion that this should be managed by a “council” of senior engineers with one member of the council rotated out every quarter to keep things from getting stale and cabal-like. # 2nd December 2018, 7:40 pm

Migrations are both essential and frustratingly frequent as your codebase ages and your business grows: most tools and processes only support about one order of magnitude of growth before becoming ineffective, so rapid growth makes them a way of life. [...] As a result you switch tools a lot, and your ability to migrate to new software can easily become the defining constraint for your overall velocity. [...] Migrations matter because they are usually the only available avenue to make meaningful progress on technical debt.

Will Larson # 23rd April 2018, 3:03 pm

2013

Are there any good bootcamps, such as Code Fellows, DevBootCamp for mobile (iOS/Android)?

Big Nerd Ranch have been offering iOS and Android for several years now. A friend of mine went in the iOS course a while ago and spoke highly of it—he has since released an app to the App Store.

[... 62 words]

How can I convince my boss that I should dedicate time to clean an important part of our code base?

It sounds like your boss needs to learn about the concept of Technical Debt: http://www.codinghorror.com/blog...

[... 42 words]

What are ways to avoid getting discouraged while searching for a job as a software developer?

Do you have any programming side-projects? If not, I suggest starting one. You’ll learn a bunch, it will impress interviewers (and help you pull ahead of other candidates) and it will help you build confidence in your own skills.

[... 83 words]

Will a professional programmer lose anything if he doesn’t learn object oriented programming?

Yes. OOP is a very important programming concept—a professional programmer who is not familiar with it will be unable to understand vast swathes of high quality existing code and will have a great deal of trouble passing interviews or contributing effectively at great companies.

[... 95 words]

How do I become a global nomad as a software engineer?

Go freelance, start working on projects and build up a reputation as an excellent engineer who gets high quality work done on time. Build up a large roster of satisfied clients who wish to work with you in the future, and know how to successfully work with you via email and video conferencing. Now pack your laptop and head off around the world.

[... 126 words]

What are key considerations when building behind the firewall web apps?

CSRF and XSS are still important: don’t leave any security vulnerabilities which might allow an evil website out on the internet to run JavaScript that steals data from your behind-the-firewall web application.

[... 49 words]

What advice would you give to a new technical co-founder at a startup?

It sounds to me like you’d be better off seeking an engineering role in an existing, relatively mature startup (one with 5-15 engineers) rather than looking to be a technical co-founder of a brand new company. Startup engineering is likely to be pretty different from what you’re used to, and there’s no better environment to learn than a fast-moving company that already has a small and highly talented group of engineers.

[... 102 words]

What is the best resource for someone who is non-technical to learn about computer programming/creating software?

Learn to program. You don’t need to learn programming to the standard where you could work professionally as a software engineer, but having enough programming knowledge to write some simple programs and automate some simple tasks will make you enormously more capable when it comes to working with programmers—or in business life in general.

[... 135 words]

How is Web engineering related to Software engineering?

I’d describe it as a subset of software engineering that deals with issues relating to the web—web application development, web protocols, browsers and so on.

[... 41 words]

What tech conferences will be taking place in Seattle the summer of 2013?

We have a list of upcoming (mostly tech) professional events and conferences in Seattle here: Conferences in Seattle | Conferences & Events | Lanyrd

[... 63 words]

Which web/software development conferences a student should attend and why?

Offer to volunteer at conferences. If accepted, you’ll get in for free and you’ll get to meet loads of people (including spending time with the speakers)—in exchange for a full days work manning desks, finding speakers in time for their talks, giving people directions and generally helping organise and clean things up.

[... 104 words]

What are the most commonly used or most interesting open-source packages and software?

I’d say the open source browser engines, Gecko (Firefox) and WebKit (Safari, Chrome, iOS, Android) are probably some of the most important and widely used pieces of open source code these days.

[... 51 words]

How do I learn Python fast?

Learn how to use the Python interactive prompt and start solving problems with it. The official Python tutorial is an excellent place to start: http://docs.python.org/2/tutorial/

[... 38 words]

What was the Registration Fee for QCon NY 2012?

Registration opens in February—they haven’t announced ticket prices yet. You could always email them and ask.

[... 33 words]