5 ms·
I used to work at a web agency, and my biggest impactful was without a doubt setting up something similar. Instead of starting from scratch at each new project,
by williamdclt 6y ago
I used to work at a web agency, and my biggest impactful was without a doubt setting up something similar. Instead of starting from scratch at each new project, or copying config from another project, I wrote a "project generator" that asked you a few questions (Django or symfony? React or vue? NextJS? Terraform?) then generated a fully-configured project for you, including a staging and a production environment.
It's incredible how much time is lost on config: AWS is a big one, but having to configure Django, Black, Flake8, Webpack, ESLint, prettier, Typescript, Sentry, react-router... It easily takes days, and copying from other projects meant we were propagating some less-than-ideal setup.
Automating setting up a React-native app was clearly the most challenging, I don't work there anymore but I don't think it's a smooth process even now
- freehunter 6y agoThis is why I love opinionated frameworks, why I love hand-holding tutorials, why I love abstractions. I don’t like code. I don’t like writing it, I don’t like reading it, I don’t like thinking about it. A mechanic doesn’t love his crescent wrench, he loves working on engines. The wrench is just a tool. What I enjoy is the final product and seeing a project come together as time goes on. “The right tool for the job” doesn’t matter for most regular CRUD boring programming work. Django vs Rails vs a huge bundle of JS libraries cobbled together at random... for most programming work it doesn’t matter. So why not pick the one that lets you get your job done the quickest and easiest? I get nothing (nothing but added stress) from trying new frameworks and new libraries and new packages constantly. I want to learn the right way to do something and then get down to business. My boss and my stakeholders don’t care what language or framework I’m using. The only consideration I need is “how quickly and easily can I get this done” and to be honest most of the time that’s Rails. These days I’m using AWS Amplify which is an opinionated framework for AWS serverless apps and that’s all I really want... someone to make the “right” decisions for me so I can get my own work done. Because my job isn’t to pick languages and frameworks, it’s to produce a finished product.
- mrmonkeyman 6y agoIf you don't like code you don't become a developer. If you hate wrenches you're going to have a .. difficult time being a mechanic.
- fludlight 6y agoI feel the same way about rust’s standard lib, which is pretty sparse compared to, say, python and go. Finding libraries for common tasks is the most stressful part of an otherwise stress-free language (first world problems, I know). I get that it’s a trade off, and I get why the designers chose this path, but I would have preferred it the other way.
- xmprt 6y agoI use Go pretty regularly and I feel this. I had to choose a CLI framework and was bombarded by 10 different options all with wildly different designs to choose from. The flipside of this is Go's old errors library which lacked so much functionality that people standardized on an open source package.
- otabdeveloper4 6y ago> Django vs Rails vs a huge bundle of JS libraries cobbled together at random... for most programming work it doesn’t matter. It might not matter to you, but it sure matters for the end user. This sort of attitude is why blog pages weigh north of 20 Mb and load for minutes nowadays.
- freehunter 6y agoYou read the absolute wrong conclusion from that statement. Hint: Django and Rails are not front end frameworks and you can definitely use them to serve 20mb front ends too.
- jjeaff 6y agoIf mechanics didn't love their wrenches, companies like Snap-on tools wouldn't exist. Where you get the same thing as a good tool at a big box store, but for 5x the price.
- corytheboyd 6y agoI have never worked for such an agency, but I actually find value in setting up some of the infrastructure from scratch, at least on the application side. It’s a time to dig into the latest versions of each component, or apply learning you wish you could have on other projects but things got too big to make large architectural changes. It costs a few days, but you’re laying down what should be the forever foundation, that’s worth fully understanding and trusting IMO. All that being said, rolling AWS infrastructure ad-hoc like this is a terrible experience, but I far less experienced with it. Terraform seems like a great general tool to ease the pain, or something with this project.
- JamesSwift 6y agoThat exploratory work is still done... its just done one time by someone who is "best" suited to do it. Then you just stamp out projects leveraging that exploratory work.
- corytheboyd 6y agoMy point is more that the exploratory work is done at one point in time, not that it hasn't been done at all. If it has been years it's likely components you are familiar with have either matured or died, and starting a new project is a great opportunity to catch back up with the current ecosystem.
- williamdclt 6y agoThe project generator became a core part of our business (and a sales argument, actually), so it was maintained to be up-to-date. It's the implementation of what we collectively knew to be best practices: you don't always have time or knowledge to set up each individual component of a project. If there's a later version of a component or you want to apply learning... contribute back to the project generator, to ensure other projects benefit from it The only value we lost was the experience a dev gets setting up the infra from scratch. It is a consequent loss, but we deemed it very worth it (and retrospectively, I think it was)
- whalesalad 6y agoFor folks who want a tool to help them accomplish this, I have heard good things about cookiecutter: https://github.com/cookiecutter/cookiecutter https://github.com/cookiecutter/cookiecutter
- williamdclt 6y agoIt was one of the options I looked into, yes :) IIRC it's python-only, so didn't fit the bill. We ended up using Handlebars templates, and Plop (https://plopjs.com/ https://plopjs.com/) for prompts and the generation logic. It was lightweight and extensible, worked great
- makeee 6y agoBeen working on a React codebase generator (https://divjoy.com https://divjoy.com) for the past year and seeing some decent traction with agencies. There’s definitely a need!