Friday, September 4, 2015

Re: What I need to know to be a Django full stack developer?

On 2015-09-04 12:21, Luis Zárate wrote:
> I don't know why I was thinking that a Django full stack developer
> was a Django hacker o guru that know a lot of things related with
> Django, but now I am disappointed about this term.

The stack is the layers between the hardware and the end user. For
a web developer, those layers look something like


[Hardware]
[Operating System]
[Server software (web server, database, caching, LDAP, …)]
[Server-side application software]
[HTTP]
[Browser]
[Browser-side content layer: HTML]
[Browser-side presentation layer: CSS]
[Browser-side software: JavaScript/AJAX]

Usually a "full-stack developer" (FSD) sets the endpoints of their
expertise within that range and will include where the bulk of their
expertise is. My "full stack" (FS) range starts with OS-level skills,
is strongest at the server-side application level, and extends to the
HTML/CSS/JS end, but the JS is certainly my weakest skill in that
chain. Other devs I know start some weak/functional skills at the
server-side application layer, but are front-end masters.


Most people don't consider the hardware layer part of the
qualifications for being a FSD.

It's assumed you're comfortable with your target OS. That might be
Windows, Mac, Linux, or BSD. If you have server administration
skills on your deployment platform, all the better. If not, since
it's on the edge, it doesn't stop you from claiming FSD as a title.

Once you get to the server software, it's expected that a FSD knows
the basics of getting things up and running as well as doing basic
configuration and trouble-shooting, but some folks might need a
sysadmin to wrangle the stickier points. I've seen folks claim FSD
status without experience with server software and it always sounds
suspect to me ("you call yourself a FSD, but you've never configured
a web server or created a database before?") You might not be able
to tune the web/database server for massive load but you should at
least be able to get it deployed and functional.

Every FSD should have experience writing back-end code. Usually
this is a combination of a language and a framework. On this list,
it's Python/Django, but it could also be Ruby/Rails, PHP/Cake, or
whatever. This is where the bulk of my expertise & coding-time is.
At a minimum, a FSD should understand the framework and be able to
make reasonable tweaks without completely breaking things, even if
it's not their main area of expertise. E.g. "Oh, the business logic
is using an OR here when it should use an AND «fix»"

Knowing HTTP helps a lot when debugging communications that go out
over the wire. I've worked with devs that were confused by behavior,
but had they understood things like GET-vs-PUT/POST/DELETE, response
codes, and cache-control headers, certain solutions would have been
easily solved.

Most FSDs don't actually work coding up browsers too. I suppose you
could, but mostly we assume that the developers of Firefox/Chrome/IE
know what they're doing.

Once you're on the client side, a FSD is expected to know HTML.
Semantic markup, basic nesting rules, entity escaping, etc. The
basics are pretty simple. This is pretty essential material for
all FSDs.

With that skeletal HTML, a FSD should know some basic CSS to layer
atop that to make things look nice(r). A FSD with server-side
expertise may a general understanding, while front-end focused FSDs
should have a solid CSS mastery.

Similarly, with some well-constructed HTML and some good-looking CSS,
adding a little JavaScript can improve the user-experience. I tend
to avoid JS as much as possible as I know it's not always available
(I fly with NoScript; there are more concerns about accessibility of
you start tinkering with JS; and it's not my strong skill). AJAX is
just a subset of knowing JS.


So that's the stack, and a FSD will have a sweet-spot of expertise,
with functional experience in the neighboring layers extending at
least down to the server-side application layer, and a bit past the
HTML layer.

Additionally, there are other meta issues like version control
(git, mercurial, subversion, etc), bug tracking, and use of a good
text editor, where I'd expect a FSD to at least be comfortable with
the basics.

-tkc







--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/20150904142640.43b29dcc%40bigbox.christie.dr.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment