"Rethinking from first principles" and "reinventing the wheel" are pretty easy to conflate. Proceed with caution. My recommendation is to choose boring technologies that are widely deployed so that people will have to support them for decades to come. If there isn't a mature, well-supported option in a space, it's better to roll your own than to spend a bunch of time learning a technology and writing code, and then h…
Ask HN: What is the ideal developer experience in 2020?
51–60 of 92 posts
Re: Ask HN: What is the ideal developer experience in 2020?
#52It has been a long time since I've done any web development, but I've done almost everything else, and I've converged on preferring C# in Visual Studio. Why? - typechecked, but the types get out of the way; "var" and intellisense fill them in for you. It also shows you what types the function arguments should be and autosuggests objects of those types - functional when you want, but not when you don't: LINQ et al, in…
Re: Ask HN: What is the ideal developer experience in 2020?
#53It has been a long time since I've done any web development, but I've done almost everything else, and I've converged on preferring C# in Visual Studio. Why? - typechecked, but the types get out of the way; "var" and intellisense fill them in for you. It also shows you what types the function arguments should be and autosuggests objects of those types - functional when you want, but not when you don't: LINQ et al, in…
Earlier, you mentioned F#. How easy is it to combine C# and F#?
Re: Ask HN: What is the ideal developer experience in 2020?
#54It has been a long time since I've done any web development, but I've done almost everything else, and I've converged on preferring C# in Visual Studio. Why? - typechecked, but the types get out of the way; "var" and intellisense fill them in for you. It also shows you what types the function arguments should be and autosuggests objects of those types - functional when you want, but not when you don't: LINQ et al, in…
> Language interoperability is another: it's still astonishingly hard to combine languages within a single software artefact unless they're C and C++ or similar things that produce platform-native binaries. Earlier, you mentioned F#. How easy is it to combine C# and F#?
(I've not actually done it myself, writing functional-style C# is enough for me)
Re: Ask HN: What is the ideal developer experience in 2020?
#55I often consult other teams in my company on technical issues and architecture. Coming from this background I always wish the following would be covered: - The project should start up with one click or one command. It's fine if I need to configure credentials or something similar, but beyond that, your project should be so easy to start that your mom could do it. If the project requires me to locally install a databa…
The thing is so over-engineered that they had to do a makefile that clones the project for you. And I don't know what they're doing, but the thing is unusable on a Mac (it's supposedly related to filesystem operations in Docker -- why are you doing so many?).
I could go on and on. I spent 2 days trying to make this work properly, but in the end I decided that if I need to do a Web store, I'll go with something else.
Re: Ask HN: What is the ideal developer experience in 2020?
#56Re: Ask HN: What is the ideal developer experience in 2020?
#57Re: Ask HN: What is the ideal developer experience in 2020?
#58Building, both artifacts and tests, should be single commands. That might mean you need to write a script that does the "cd into a directory, cmake .., make, make install" dance, but it should be handled.
Dependencies should work, should not conflict with system dependencies, and should be fetched if not already present. Hi Python!
Good IDE support: IntelliJ has some great features, I'd like to use their stuff. But some people want to use other IDEs or editors. Maintain project files for common ones.
Self-contained PRs. Keeping PRs small is all well and good, but having PR A depend on PR B and C and D getting merged in the right order makes review much harder than if they were all just stuck in one.
Must work on Linux, Windows and Mac, at least. Preferably also some BSDs.
Documentation, with all of the following: An introduction saying what your project does, tutorials on how to do intended tasks, how-to guides on solving detailed issues, explanations with examples of how things are used, and a comprehensive reference of what can be done. Divio has a good article[1] about this, though it misses the need for an introduction while providing one itself.
Strong types, with good type inference. Dynamic typing is nice for scripts, but not for full-on programming.
Good safety around memory issues. GC or Rust-style ownership based will depend on application, of course.
Interoperability with different languages. Especially an issue is building multi-language projects.
As an embedded dev, the hardware should be debuggable. Provide a damn JTAG or SWD port. Provide a GDB server or OpenOCD plugin. Provide test points, and a dev board with a damn schematic!
Have your datasheet actually describe the function of the chip and how to communicate with it. LTC (now owned by Analog Devices) datasheets tend to be great examples, try to be like LTC/AD. For example, see the LTC4015 datasheet[2]. It provides example application circuits, clear pin configurations, detailed typical performance info, a nice detailed block diagram, I2C protocol info (because that's chip specific), functional descriptive text, equations to calculate the needed supporting component values, operational state flow charts, detailed component selection procedures, PCB layout considerations, a full register map, and a recommended solder pad layout. Too many datasheets lack too much of this info.
[1] https://documentation.divio.com/ [2] https://www.analog.com/media/en/technical-documentation/data...
Re: Ask HN: What is the ideal developer experience in 2020?
#59I often consult other teams in my company on technical issues and architecture. Coming from this background I always wish the following would be covered: - The project should start up with one click or one command. It's fine if I need to configure credentials or something similar, but beyond that, your project should be so easy to start that your mom could do it. If the project requires me to locally install a databa…
> If the project requires me to locally install a database, configure ports, or anything of the like, that's a shining red flag that things are very wrong I disagree here slightly. I think it's reasonable that a database setup may be necessary, especially if abstraction layers (ie. ORMs) aren't being used for SQL, and SQLite is not your database of choice. Sure, you could set up docker , but not every project adopts…
Re: Ask HN: What is the ideal developer experience in 2020?
#60I don’t know about you guys, but .NET Core (c#) and Visual Studio along with Blazor on the front end and deploying on Linux is pretty darn cool and highly productive. I haven’t had much success getting as productive on Python, Golang, or Node. Blazor eats TypeScript for lunch. Sometimes people confuse complexity for productivity. You can’t tell me installing 60,000 NPM packages just to have one dependency break is yo…
I totally agree with you, but production deployments are terrible. The confusing way to handle secrets and environment variables, the lack of a standard database migration tool that is not tied to EF, the lack of a good standard integration layer with nginx... it's just a pain if you don't have a dedicated devops team.