Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think you are describing the work of a junior software engineer. Sure a junior engineer can do "google-fu" and glue together a working application but there is so much more to being a software engineer than that. Here is just a sample of the kinds of things a more seasoned engineer has to consider when developing an application. Note that none of it can be solved by simply googling and glueing in another open source piece of kit. It requires careful consideration and knowledge/experience that lets you make these decisions.

Frontend:

- Should I use a frontend framework with backend API for a single-page application? or use a standard web site with no distinction between frontend/backend.

- How will I handle mobile responsiveness of the html/css?

- How will I server css & js assets? Use a CDN or host them locally?

- Will I minify css & js?

Backend:

- What business requirements will I take into account when choosing a language/framework?

- Is speed and concurrency a must (perhaps choose Golang)? Or rapid prototyping and complex business logic (perhaps Ruby on Rails or Django)?

- Will I write a monolithic application or go for microservices?

- How important is security? Will my framework prevent vulnerabilities like XSS and SQL injection automatically?

- What web server should I use? What kind of scaling requirements do we have?

- How will we handle version control? What processes need to be put in place around deployment?

- How do we handle deployment?

Database:

- Relation SQL database or NoSQL?

- Are there any cases where I will want to de-normalise my data right away or should I wait

- How can I design my schema to be flexible yet still scalable?

- What columns need to be indexed?

Hosting:

- Use a cloud host? (AWS, Google, Azure...)

- Do we need dockerized deployments?

- Should we use kubernetes or a more managed solution?

- How important is vendor lock-in?

- How do we handle config secrets (like API keys)

- How do we handle changes in configuration (i.e. use Chef/Ansible/Terraform etc.)



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: