Simon Willison’s Weblog

35 items tagged “softwareengineering”


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


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


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:

[... 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:

[... 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]

How should people organise software developer focused conferences in order that they achieve socially acceptable representation across relevant demographics (eg gender, ethnicity) in terms of speakers and attendees?

No one wants to feel like they have only been invited to speak because of their gender/other demographic factors, especially since they risk losing some the respect of the audience if there is a feeling that they weren’t invited purely for their expertise.

[... 309 words]


What are good ways to develop software architectures using multiple languages?

There are a bunch of options for communicating between different languages, but these days the simplest is definitely JSON—it maps directly to common data structures in PHP, Python, Ruby and so on. Treat it as your common interchange format and you can’t go far wrong. It’s very easy to build simple internal web services on top of JSON.

[... 109 words]

What are the best practices for onboarding new software engineers?

I’m a huge fan of “deploy on the first day”—which forces the issue in getting all of their accounts set up, their development environment ready, showing them where source control is, how code review works and so on. Even if it’s just adding themselves to the about page or humans.txt file, it means they can come in on day two ready to get real work done.

[... 106 words]

To become a better developer ? To read more OR to create/contribute to open source projects?

Contribute to an existing project, rather than starting one yourself. There are a bunch of benefits:

[... 231 words]

What communities and interest groups in London should software developers get involved in?

The monthly Hacker News London Meetup Group (held near Old Street) is a great opportunity to meet up with entrepreneurial-minded hackers—the talks are usually a good combination of technical and startup/entrepreneur material, and it attracts a really interesting crowd.

[... 61 words]

Did Mark Zuckerberg have any knowledge on building scalable social networks prior to starting work on Facebook?

I’m going to bet he didn’t have this knowledge, simply because back when he launched Facebook in 2004 almost NO ONE had this knowledge—there simply weren’t enough “web scale” products around for the patterns needed to run them to be widely discussed.

[... 143 words]

Why do tech companies provide MacBooks for software development?

Smart tech companies give their engineers the laptops that they ask for. Engineers are EXPENSIVE, and anything you can do to increase their productivity is worth the money. If they prefer to work on a Mac, buy them a Mac.

[... 55 words]

How can a new developer get involved in open-source projects?

I was going to say the same thing. Find a useful project in GitHub (preferably one that clearly has an active maintainer), fork it, fix a bug (look at the project’s issue tracker) then make a pull request.

[... 80 words]

Which web frameworks should I focus on to make myself the most well rounded and to be able to solve the most problems as a web application developer/architect?

Being an expert web developer isn’t about which framework you know, it’s about the fundamentals. It’s important that you know how the tools you are using work, so you can fix things when they break—Joel Spolsky’s law of leaky abstractions is a great essay about this:

[... 260 words]

How does Linkedin use Node.js?

They use it for the backed for their mobile app. Here’s an article with more information:

[... 29 words]


What’s the difference between a software engineer, developer and programmer?

Absolutely nothing. Job title differences like those only really matter when working for a large organisation that sets compensation based on title—in which case you want to figure out which title gets you the best deal at that particular company.

[... 58 words]

Are there any Meta APIs? is a good example of this kind of API—it gives you one endpoint which wraps oembed APIs on dozens of other services (plus a bunch of custom scraping code). We use it as part of our video/slide embedding feature on

[... 57 words]


What are the main weaknesses of Ruby as a programming language?

Ruby still has a cultural tendency towards monkey-patching, aka action-at-a-distance. There are plenty of gems which modify existing classes—sometimes in ways that can break working code.

[... 45 words]