Settings

Theme

Ask HN: Elitist or reasonable concerns on state of front end development?

16 points by hashtree 11 years ago · 11 comments · 2 min read


My freelancing to date has largely consisted of ML, stream processing, data integrations, microservices, and other backend work. However, more recently I've shifted to include frontend work with react/reflux/react-native/electron and I have run into a high number of issues with development practices. I find myself declining most work for obvious lapses in development practices and, on occasion, "duped" into accepting a client that sounds good on paper but isn't.

I have observed a severe lacking in areas like:

  - Testing (i.e. usually none, which is often spun like an odd pro that they are so "fast")
  - Devops (e.g. lack of repeatable/automatic deployments, things must be hand-touched, no continuous integration)
  - Project management (e.g. no tracking of bugs, features, etc via issues, no milestone usage, no documentation)
  - Git/Github basics (e.g. don't break the branch when doing PRs, create useful commit messages)
  - Understanding of CSS/HTML basics (e.g. best practices, standards, anti-patterns)
  - Understanding of React/Flux basics (e.g. child keys, anti-patterns, bastardizing with some weird approach)
  - Understanding of functional programming basics (e.g. immutablity, HOFs, pure functions)
  - Understanding of computer science basics (e.g. weird custom approaches that poorly mimic trees, no big-o concerns that hurt perf, memory leaks)
  - Separation of concerns (e.g. making UI components know about and concerned with the data persistence layer)
  - Security (e.g. secure credentials committed, pretty much an afterthought)
Are these issues simply the norm for frontend development and something I just need to get used to OR is perhaps my frontend network itself poor and something I just need to work on building up to more "solid" clients? I understand few companies are perfect and I am not asking for it all, but coming across clients with lapses in all these areas is what concerns me.
angersock 11 years ago

So, a few of those are kind of elitist.

React/Flux is still super new. Hell, there are like a dozen Flux frameworks out there with more on the way, and people are still arguing over what it looks like. So, you shouldn't ding people for that.

Functional programming is something that, at least for what you've mentioned, is a nice-to-know and easily explained insofar as it matters to front-end devs.

Security tends to be a rabbithole and something that, if taken seriously, can really slow down a project. So, it makes sense to market yourself as "Hey, I can backfill your security holes". No reason to be high and mighty.

CS basics is something you can again explain, or charge a premium for.

Devops is a pretty vague and bankrupt concept. Lack of automated deployments is not necessarily bad, it may just not be how they roll. Lack of automated builds and tests is a different matter. Deployment/adminny stuff is typically a pain point in any org, and it just sucks. Look at it as an opportunity on selling them how to do it the Right Way.

The stuff that I would absolutely be concerned about would be lack of testing (if they won't even acknowledge the deficiency), the lack of understanding git and project management, separation of concerns, and the CSS/HTML basics.

~

Long story short, though, is that it is exceedingly rare to see any shop that has everything on that list squared away--and if they did, they wouldn't be hiring freelancers to save their ass.

  • hashtreeOP 11 years ago

    Love the final sentence, and thanks for the fresh viewpoint. On the bullets, we differ in opinion on some (maybe I truly am a stick in the mud):

    - React/Flux: It IS super new, I just assumed if a company choose/moved to it and are actively coding with it that they would know the basics of it. Certainly wasn't expecting core contributor knowledge by any means, just that fellow devs have read the docs and avoid plainly stated bad patterns in said documentation.

    - Functional Programming: Again, I only mentioned FP because they are core concepts for React/Flux. They are also highly encouraged/required in certain scenarios: https://facebook.github.io/react/docs/advanced-performance.h...

    - Security: There is no reason security needs to slow down a project dramatically, if done right. End-user security should be taken seriously and not be something to be tossed aside because it is "hard". Basics get you a long way.

    - CS: Good idea on the premium. Though it is often beyond a simple conversation when the concepts of recursion and basic data structure performance/usage is an exotic topic.

    - Devops: Solid points, however I wouldn't say it is anything close to a bankrupt concept. Ansible and Salt for a day or two and you have completely manageable, repeatable, and solid approach to your infrastructure.

    We agree on what the biggest concerns are. Oddly, I often see nearly everything missing, those being of the most concern.

  • arnold_palmur 11 years ago

    Well said. I do somewhat agree with OP however, in that there's probably a deficit of well trained (or classically trained) engineers in front-end world - especially as it becomes increasing that the "meat and potatoes" of the application logic resides in the front. That being said, it does seem a bit snobbish to be complaining about a lack of understanding for particularly specific areas that are arguably outside the realm of the front-end landscape.

nostrademons 11 years ago

The reason you're valuable as a freelancer is because you know things that their existing developers do not. Take this lack of knowledge as a gift: it's how you can add value to their organization and justify raising your rates. (You do want to select for companies that are open to implementing these dev practices, and sell them on the benefits up-front. But a company that wants to implement all of these but doesn't currently have the headcount for it is a gold mine. It's an opportunity for you to improve the efficiency of a whole team instead of just writing some code.)

jdlshore 11 years ago

Poor practices are more common among front-end developers, partly due to people coming in from non-programming fields (graphic design, for example) and partly due to people who should know better saying "it's JavaScript, JavaScript sucks, fuck it, I'm not responsible."

Don't get sucked in to the JS blame game. There are many excellent tools and libraries available (e.g., Karma for cross-browser testing; JSHint for static analysis; npm for installing and updating packages) and good practices are entirely possible. Keep up the good fight.

I have a screencast series on this topic at http://www.letscodejavascript.com (subscription required) and an essay on tooling and workflow at http://www.letscodejavascript.com/v3/blog/2015/02/javascript... (free).

eswat 11 years ago

While freelancing I’ve seen team members being oblivious to how much work would be involved in actually making an area of their product good and not realizing how badly techdebt can compound in the weeks and months ahead when not solved early (usually because “we need to move fast”).

An example would be CSS. Many developers hate writing it and think it’s a trivial toy that even a monkey can write properly. Sure, to get something up and running it takes little effort to get the presentation right in CSS. But making something maintainable that won’t slow down your velocity after a month of adding/removing/modifying rules and class names is an entirely different thing. Yet I’ve rarely met a client that didn’t have a severe tech debt with their CSS – I’m usually not called in to fix that – even those with refined testing and devops processes. Though they usually believe that their CSS is fine.

yayolius 11 years ago

About that: - Testing: Yes, for sure there is a lack of understandment in testing specially in frontend, here i have seen that a lot of the test depends on the framework that you are using, also testing in front is relatively new, and not really standarized.

- Devops, well if you are not seeing test, very hardly you would see the value of continuos integration, and tipiclly this process involves a lot of backend and even some server configuration, and as many say in here most frontends right now come from design backgrounds.

- Project management. This is more like a "company culture" issue, the way the do this mostly depends on how the rest of the company values this in frontend development.

fmsf 11 years ago

Last summer we where actively recruiting (senior) front end engineers in London. To try to filter, part of the first interview consisted of very simple CS related questions:

- JavaScript has a `.sort()`, if it didn't how (or what) would you implement it?

- Can you explain briefly what a Linked List is?

- Given that JS is all about Maps, can you describe me how an hashtable works?

Sometimes just by asking the `.sort()` I got replies like "Why do I need to know that? the sort already exists! Sorry I am confused, I thought I was applying to a senior front end position".

Regarding dev ops (even if just generating the build pipeline) I got answers like "No way! that is hardcore"

Everything else also lacked overall, specially testing.

  • seanwilson 11 years ago

    I can relate from interviewing several people for senior positions. Many had never heard of a linked list and didn't know how hash tables worked.

benologist 11 years ago

You've pretty much described the frontier of modern web development, some of this stuff is still being defined, lots of it is yet to reach mass-penetration.

It would be pretty nice if there was an "all of the above for dummies" guide.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection