Live data from Hacker News

Ask HN: Hardware guy needs to learn web application development – what language?

news.ycombinator.com

1–10 of 22 posts

Ask HN: Hardware guy needs to learn web application development – what language?

#1
After spending the past 10-ish years in hardware development, I have a business idea that I want to pursue. I'm not going to seek funding, I'm not really (yet) even looking for a tech co-founder. I want to develop this application that will be web based, and I want to do it slowly and learn along the way. I have some crude C++ skill and intermediate Python skill. My web app will incorporate drawing and hierarchies, with a database back-end. Basically Evernote and Visio combined.

We've all been there when a guy walks in your door and promises huge wealth if you'll just build and "be the geek". I'm going to be both this time.

So, HN, if you're in my shoes and moving from hard stuff to soft stuff - what language or toolset gives you the best bang for the buck? I'd like to make progress quickly but also have something I can build to be robust and perhaps bring professional developers in with me down the road.

Re: Ask HN: Hardware guy needs to learn web application development – what language?

#2
Since you want to do drawings and stuff we're definitely talking JavaScript and graphic frameworks, either raw canvas or something like the D3 library would be my guess.

For the backend, although it pains me to say so, I suggest PHP simply because there's a metric fkton of tutorials, guide, mentors, bootcamps, and what-have-you.

However, if your goal is to expand one day and hire on developers, I'd look around your area to see what's in demand and go with that, as it'll be your best bet to find developers later on.

I'm sure you'll get lots of suggestions for JS frontend frameworks, but honestly I'd stay away from them and go with the basics, JavaScript + JQuery + D3, plenty powerful and doesn't have the extra learning curve of whatever flavor-of-the-month JS framework.

Personally I'd not use PHP because I don't like to work in it, and I'm more productive in other languages, but there's no denying it's the most used webserver language in existence, it's updated/modern, hosting is cheap, and there are LOADS of information out there for how to do just about anything.

Re: Ask HN: Hardware guy needs to learn web application development – what language?

#3
Since you're already familiar with Python, I would recommend it for the backend. Take a look at Django and Flask frameworks. Django has an ORM and fits well for a typical CRUD application. Flask is a more lightweight tool. Both are quite mature and pleasant to work with.

Re: Ask HN: Hardware guy needs to learn web application development – what language?

#5
I've been using the Apache web server and CouchDB on the server side along with PouchDB.js, jQuery, Bootstrap, and Service Workers on the client side.

This provides most everything needed to create a feature rich "Single Page, Offline First, Progressive, web app.

Almost all of the app code is Javascript. What little server side code is needed I write in Perl, but Python would work just as well.

Personally, I think CouchDB/PouchDB is highly underrated. I believe the reason for this is that most developers started out using an SQL backend DB and are too lazy to learn how to use CouchDB.

I don't mean that to be an insult, they're using what they know and that's to be expected, but they don't know what they're missing by not learning how to use CouchDB/PouchDB, and they're missing a lot.

CouchDB was designed from the ground up for the web apps. It has features that make it much easier to develop multiuser apps and PouchDB makes it incredibly easy to implement them. User signup, authentication, permissions, are all very easy to implement. CRUD routines and Full Text Search are super easy, and lightening fast. Live Data Sync for multiuser/collaborative apps is builtin.

Adding offline first capabilties is easy using Google's "Workbox" (https://developers.google.com/web/tools/workbox/).

That's a pretty powerful foundation to build upon.

Re: Ask HN: Hardware guy needs to learn web application development – what language?

#6
I second using Python and a framework like Flask. If you're already comfortable in Python, you'll be able to get off the ground faster, and be productive sooner.

I would leverage a JS framework on the front end, as that will definitely improve the responsiveness. Perhaps something in React or whatever is the currently vogue framework.

For drawing and graphics, D3 is really powerful and will help you avoid having to write all the drawing routines from scratch.

Re: Ask HN: Hardware guy needs to learn web application development – what language?

#7
Many times language is not the barrier. It is very likely it will take you less time to learn a new language than to learn a framework in a familiar language.

Personally, I found PHP is the easiest to get into web development. You do not have to use MVC or any framework at all. For other languages (python, js), web development almost always requires using a framework, which can take more time to learn than learn the PHP language. And PHP is also easier for hosting.

Re: Ask HN: Hardware guy needs to learn web application development – what language?

#8
Django(Python) for backend. React for the front-end.

Pros:

+ You are already a bit familiar with Python

+ Django provides out of the box solutions for authentication, db management, migrations + bunch of stuff that takes quite a bit of effort

+ React is easy to grasp, since there isn't many buzzwords and concepts. Basically it's just JS.

Cons:

- You have to put effort in learning Javascript and browser fundamentals. There's no running away from it.

I built http://writango.com with the stack I mentioned. Literally took me a weekend to get the project's first version up.

Re: Ask HN: Hardware guy needs to learn web application development – what language?

#9
If you're already familiar with python look at Django.

I would recommend taking a look at Rails (ruby) and Laravel (PHP).

Laravel is probably the best bang for your buck. https://laracasts.com/series/laravel-from-scratch-2018/episo...

Laracasts, is a great way to get up and running.

I would start creating a standard web applications with just enough js+jQuery in the beginning vs doing a full SPA with vue or react. You can do that with version 2 if things take off.

Re: Ask HN: Hardware guy needs to learn web application development – what language?

#10
Bias heavily towards ease of debug and deployment. When you're the one-man-band you need to leverage all the tooling towards realizing the design, and avoid the scaling rabbit hole. That means - simple now, rewritable later as you bring in hires.

You will need a solution for producing front end JS/HTML/CSS. This should probably be your starting point in fact - create a site mockup with static pages and no real backend, use that to gain feedback, then build out the real functionality. For JS code Typescript is a very popular option to aid some additional maintainability. There are also many build systems available for compiling finished pages.

When you're ready to have a backend, you can evaluate it separately later. You need a combination of a language, a web server, and a database at minimum. Again, an early site can avoid horizontal scaling and focus on having one good database doing everything and backing everything up reliably. (Focus backend efforts on reliability first!)

Post reply on HN