

A Front End Engineer's Manifesto - hdragomir
http://f2em.com/

======
kvnn
I'm a successful front-end developer and I really don't care about any of this
stuff.

This is one of the last manifesto's I'd personally subscribe to.

In fact, I feel sad for anyone who takes front-end development this seriously.
This is a field that exists because of fragmentation and the strange place
that the web has arrived at.

On the whole, we aren't solving interesting problems. We are building what
someone else has designed and then patching that build across devices and
browsers. Sometimes there are fun problems to solve while doing that, but its
nothing compared to what we could be doing as programmers.

I get paid well to make applications work cross device and cross browser, and
I have an extremely flexible work environment. That is why I work hard. Not
because Tom from Oklahoma is going to have a slightly better day because he
doesn't have to figure out how to get on with his life when the site I'm
working on doesn't break on his particular device or browser.

Look up at the stars. Think bigger.

------
HarrietJones
"I will learn at the root, not the abstraction: JAVASCRIPT BEFORE JQUERY"

I'm not sure why one high-end abstraction finds favour over another slightly
higher high-end abstraction, but this sure sounds a lot like the people who
insist that you can't be a good programmer unless you've learned some kind of
assembler.

On the "shoulders of giants" means we don't need to know javascript as well as
jQuery. It means we don't have to know assembler as well as pascal. It means
that we don't need to learn IP when we can just learn TCP/IP, and we don't
need to learn TCP/IP when we can just use REST over HTTP.

Learning at the root goes a lot further down than you want to go, need to go
or are capable of going.

~~~
spacemanaki
I pretty strongly disagree.

> this sure sounds a lot like the people who insist that you can't be a good
> programmer unless you've learned some kind of assembler.

This isn't a very good analogy. JavaScript is a high level language, and
jQuery is just a library with features that make it a high level DSL. But when
you "write jQuery" you're really writing JavaScript, not some other language,
so I don't think the analogy with languages compiled to assembly really makes
sense. That being said, I do think that knowing some assembly will not hurt
you writing C, and likely will help. Similarly, understanding some of how JS
is implemented in browsers won't hurt, and might help you write JS.

It's true that there's almost no limit to how deep the rabbit hole goes.
Someone building web apps probably doesn't need to have a degree in electrical
engineering, but I don't think this kind of slippery slope argument defends
someone using jQuery without knowing JavaScript.

In a grandchild comment you wrote:

> It took me ages to unlearn certain practices and just accept the garbage
> collector would do its job and I no longer need to think about unallocating
> memory.

You don't need to explicitly think about unallocating memory, but that doesn't
mean your knowledge of manual memory management isn't useful. You do need to
be aware of how the GC works if you're working with one. You can still have
memory leaks, so how could you possibly debug them if you think the GC is
magic?

There's this meme that is floated around HN and elsewhere, that the title
"software engineer" is just puffery, because we aren't "real" engineers. I try
to avoid this discussion because I think it's mostly stupid, but I can't help
touch on it here given the title of this manifesto. I just don't think anyone
could seriously call themselves a "front end engineer" if they refuse to learn
JavaScript, claiming it's not necessary to use jQuery. Given that the author
thinks this title is appropriate, I think the assertion about learning
JavaScript is perfectly acceptable.

I'd be interested to hear more about what you think though, and about how the
negatives to understanding lower levels of the stack outweigh the benefits. In
my (limited) experience, some or more understanding of one or even two "levels
down the stack" has never been a net-negative.

~~~
Evbn
99% of devs building the popular sites on the Internet have never needed to
think about GC beyond maybe the vaguest terms of "if you keep too many
references to too big things your app will slog." 0.5% write tools, libraries,
and compilers that worry about this, and 0.5% debug extreme cases in their
apps.

Numbers made up, of course.

~~~
spacemanaki
I think you're wrong, and I don't know what the point of making up numbers is.
It might be your experience that you've been able to treat garbage collection
as magic, and that's nice, but it's not been mine. I was speaking generally,
about all programmers, not just web developers.

My point was that if you don't have any understanding of how garbage
collection works, you simply don't have all possible tools at your disposal
when you need to debug a memory leak. I'm not suggesting every programmer
needs to have spent years hacking on garbage collectors and studied all of the
literature, just that having some familiarity with the tools available to you
is important.

And this was just one example meant to support my main argument that gaining
understanding below the level of abstraction you are working at is not a bad
thing.

------
csomar
_I will choose the RIGHT TOOL FOR THE JOB_

So just put this in a full static page. Why the scrolling? And also color/font
choice is quite terrible. No responsiveness for small screens. Apparently, he
didn't follow his own advice.

~~~
ken
I was going to observe that you can (in Firefox, at least) turn off the custom
stylesheet, and it becomes much more readable. But if you scroll all the way
to the end, it jumps around and doesn't actually let you scroll to the end
(perhaps due to its JS). There's definitely something weird on that page.

------
atirip
"I will educate my friends and family that WEB BROWSER CHOICE MATTERS"

and

"Most importantly and above all, I will put the needs of the USER FIRST over
my own needs as a developer."

So please do, put the needs of your USERS first. Your users do not NEED to be
educated by you. It is not your business what browser they use.

~~~
ajanuary
Friends and family != users.

You can cater to the variety of platforms your users want to use whilst at the
same time having useful and meaningful conversations with friends and family
about what the best browser is for them. You don't annoy your users by trying
to 'educate' them, but collectively we see a move forward.

------
snogglethorpe
He may "put the user first," but he clearly doesn't put the _reader_ first ...
ouch. oO;

------
daurnimator
"Without JavaScript or CSS, or without mobile Webkit, my site may not look
pretty but will still be functional." There goes backbone.js and other
javascript MVC patterns. This is something I'm still unsure about.

What do (you) people think of keeping your "data out of the DOM"?

~~~
rimantas
It depends where your site falls on

    
    
      content_page<-------->web_app
    

continuum.

~~~
daurnimator
the last time this came up as a serious question for me was in a web
management console.

------
lucian1900
Scrolling through that was very annoying. Page up/down obviously won't move by
exactly one of the "pages".

~~~
marceldegraaf
I found out that the page listens to j/k just as in Vim. However, it seems the
scroll directions are inverted from Vim; j goes up and k goes down.

~~~
lucian1900
wtf

------
daurnimator
I thought it was a blank page at first... some sort of less is more statement.

~~~
unwind
You failed to interpret the page author's 100% custom scrollbar (on the left
edge of the screen) as an indicator that there was more content? That's ...
odd.

He clearly had your interests in mind when implementing that, since browser
vendors just think about themselves with their annoying scrollbars that look
the same on every page, even. Simplistic fools.

~~~
icebraining
It does have a custom scrollbar, but the normal one still shows up (at least
on FF and Chrome), so I don't see the problem.

------
twiceaday
"I will continue to foster both HEMISPHERES OF MY BRAIN"

I thought this was debunked?

~~~
saraid216
There's basically enough truth to it that you can't just refute-by-reality,
but not enough to make statements like this acceptable by my standards. It's
vague enough that it's not actually a useful statement for anyone taking it
literally.

See: [http://www.psychologytoday.com/blog/brain-
myths/201206/why-t...](http://www.psychologytoday.com/blog/brain-
myths/201206/why-the-left-brain-right-brain-myth-will-probably-never-die)

------
ggwicz
anyone more interested in the "brain hemispheres" bit
(<http://f2em.com/#brain-hemispheres>) should check out Miyamoto Musashi's
collection of writings called "The Book of Five Rings"
<http://en.wikipedia.org/wiki/The_Book_of_Five_Rings>

Just some great writing on this idea of being a "balanced" human, and how that
influences, informs, and improves your skills. His skills were as a samurai,
but the principles apply pretty universally. I got a lot out of the book, you
can find it free on iBooks, Kindle, etc.

EDIT wow, I actually didn't find a free version on Kindle, but here's a few
formats for free from Archive.org ->
[http://archive.org/details/MiyamotoMusashi-
BookOfFiveRingsgo...](http://archive.org/details/MiyamotoMusashi-
BookOfFiveRingsgoRinNoSho)

------
jacobr
> Without JavaScript or CSS [...] my site may not look pretty but will still
> be functional.

For what reason exactly? Of course there are cases where it makes sense to
follow this rule, maybe even the majority, but having it as #2 in your
manifesto will severely limit what you can accomplish on the web.

~~~
dotborg
example: in some specific situations random javascript error(and lack of
exception handling) can disable your interface forever,

random HTTP connection problem may occur, while loading CSS/JS files,

etc.

------
conradfr
I don't think it will convince anyone who doesn't do more or less all of that.

And the scrolling is annoying.

------
malandrew
Progressive enhancement is the main reason HTML-based apps can't compete with
native apps. Progressive enhancement is synonymous with not pushing things
forward.

I know of at least one stealth startup who have built up a javascript library
that is indistinguishably performant with native apps, but that performance
comes at the cost of progressive enhancement. It's a tradeoff worth making.

I believe in an open web too, but one that is as powerful as native apps, not
a crippled second-rate one that loses users and developers to proprietary
platforms. Any browser feature that developers find useful and actively adopt
will quickly be incorporated into the remaining browsers.

------
prasincs
I'd expect an article titled Front-end engineer's manifesto to have better UI
than this. First thing I assumed was that I could use up, down in my keypad to
navigate through slides. Then right, left. Figured scrolling is okay. The
sidebar that's supposed to show me how far I've read isn't apparent. The font
choices and responsiveness coud be better. Reinventing scrolling isn't good.
I'd have been fine if it worked for me on Chrome, it got stuck in page 4 and 5
and I had to press j/k few times to get moving again. If there's a tool that
takes care of kind of stuff and frees you to do important stuff, why not use
it? On that point, checkout impress.js for this kind of stuff.

------
hatu
This rubs me the wrong way for some reason. Maybe it just sounds really
pretentious(?) In the end front-end (or any other) development exists to
create services for the users, not for it's own sake as a philosophy or
something.

------
zachleat
Please read the associated blog post that went along with the site.
<http://www.zachleat.com/web/manifesto/>

"I’ve been reluctant to share the slides because I certainly don’t want
developers to take them as dogmatic truth. Rather, I’d love for people to see
a forest using trees they’ve planted themselves."

Certainly scrolling could be improved. I'll definitely look into improving the
performance. I honestly had no idea this slide deck would get this much
attention.

------
svec
Funny that the manifesto doesn't render well on an iPad. It's too wide, and
scrolling is chunky.

~~~
hdragomir
I also find it funny that they're using the processor intensive version of the
bigtext plugin AND emphasising performance on the same page...

------
rglover
Here's a manifesto: do your job, do it well. Some tools/ideologies will work
better for you than they do for others. Strive for perfection, accept reality.

------
AtTheLast
Seems over the top, but I think it's great if someone wants to make a
commitment to being better at what they do.

------
Evbn
Nice how security is an after thought as something to strive for, not commit
to.

Also, layout is totally borked on Android Browser.

