This is a two part question, I want to get a friend into Web development should I start him off with the Frontend side(HTML, CSS Javascript) or Backend side(PHP, JAVA, PYTHON) of things?<p>Which is harder and why?
is Web development hard in general?<p>And which is more fun and joy to work on? if you had to pick one particular side to start off in and build a career out of because is fun which side would you favor?
Asking the first question is as silly as asking whether physics or chemistry is harder. It's a vague and loaded question that will be answered through a foggy personal lens of experience.<p>And asking which is more "fun and joy" is as silly as expecting an insightful answer as to whether football or soccer is more awesome.<p>My one piece of practical advice: learn JavaScript. With its massively growing presence on the backend, it's on of the few cross-cutting skills you can have in web dev.
I'd suggest that /you/ start him off with neither - your best bet is to turn him on to something like teamtreehouse.com's html/css/javascript course if he's already computer literate. Otherwise computer literacy is first priority and linda.com has some pretty good videos.<p>You should then after the 30 day trial be able to judge his <i>passion</i> by how far he gets. If he doesn't even complete the first chapter, then you would have wasted your time trying to teach him something he has no interest in.<p>I believe the way to introduce someone to web development is by teaching them something that has a tangible reward - e.g. design a static web page you can host, or have the ability to edit the HTML/CSS in a CMS or e-mail template.<p>My opinion is that anything is hard if you have no idea what you're doing. The biggest factor I've seen that determines if someone can become a competent programmer is passion.
I work across the whole spectrum from design to backend. During the learning phase both front/backend can be quite fun. Though it becomes less joy full when you are working professionally due to constraints, bugs, deadlines etc.<p>Anyone can start learning frontend development as you only need a browser and text editor to experiment. There are tons of free tutorials and books available to get going. I also find it helpful to see how other websites are implemented, last night I was going through khanacademy.org using chrome developer tools. However, professionally, I find frontend to be the most frustrating part of web development due to inconsistencies and bugs across browsers.<p>In my experience backend is the least frustrating part of web development once you know your environment, stay within that environment and follow best practices, most of the time things just work. It only get irritating when you have to integrate with some troublesome remote api which is not under your control.<p>But, to answer your question, I would say try both, see what he likes and go from there.
This depends on the person entirely because you can challenge yourself and push the boundaries in either one.<p>If your friend enjoys visual feedback/things then it would follow that they would probably enjoy front-end work better, however if they enjoy problem solving and tend to be more logical in their thought process, the back-end may be a better fit.
Begin with a problem then start with the thing that your users will see and work your way down the stack. New students enjoy the immediate gratification from changing a color, moving things around on the browser, or animating a great looking turtle. I recommending having a problem to work within as it provides constraints and a set of mini goals. "I need to take user input" then becomes "I need to process user input" then becomes "I need to put this user input somewhere" and once your friend visits each part of the stack, he can decide where he wants to spend time.<p>I didn't answer the "fun" part because it's not so great a leading indicator of career direction. Both sides have significant depth and breadth in terms of technical challenges and skill.
The answer is of course: <i>it depends</i><p>"Modern" front end development will often involve build processes - gulp, browserify, whatever - that will introduce a barrier for entry.<p>Likewise if your friend wants to get into, say, C# development, you'd be much better off with a Visual Studio environment.<p>That's not to say that either of those are necessary, but I'd suggest that they are the norm for developers in those areas.<p>Alternatively, work with something like Sinatra and plain old HTML/CSS/JS - your friend could get a sense of one of the simplest methods of creating web applications.<p>So - <i>it depends</i>. Because there are so many choices, I suggest you find out their interests first. Is it visual? Then maybe they'd prefer frontend. Is it in the overall architecture of an application? Then maybe they'd prefer the backend?
When I started off there was something really gratifying when doing a static web page front end. You get immediately rewarded when throwing in an img tag and setting some basic CSS (if you start from nothing, it's really nice to get visual feedback).
But soon after I wanted to get into 'real' coding and got interested in TDD, and finding elegant solutions for problems be it backend or a complicated UI. If you can spark that kind of motivation I'd say your friend is good to go. I'm also working on a program that I'm basing on my experience of teaching myself how to code: <a href="http://archi2tech.com/" rel="nofollow">http://archi2tech.com/</a> maybe your friend is interested ;)
I would have them try both and see what they like more. I came from a backend development background and found the most difficult thing about frontend stuff is figuring out what the best tools, frameworks, etc. are to use. As soon as you learn something new and shiny like Angular, Bootstrap, etc. there's a new thing like React and Flux to check out. The build systems for frontend tools are IMHO a pretty big mess, annoying to use, and changing very quickly too.<p>Regardless of which path you take learning solid algorithm and software engineering skills will help with any development you do, frontend or backend. Consider your friend might not even care about web stuff too, perhaps they'd rather make games or mobile applications.
Which is more fun may depend on the person's skills. For instance, a person with a background in design may prefer front-end. IMO, it's best to start the person off with at least basic understanding of HTML, CSS, JS the reason being that all web sites have a frontend, but not all a backend. Codecademy Web Fundamentals can be good for this. I guess in the end, really depends on what kind of web dev the person wants to do. The person will be motivated to work on what he or she wants to build for pleasure.
It depends on what you want to do and where you want your career to go longer term, but that's specializing. Realistically, you should start him out learning the entire stack and understanding how different pieces fit together to create a complete picture. Perhaps something like Ruby on Rails that includes a more end-to-end approach. Knowing how the pieces fit together early helps you understand what you enjoy doing and makes understanding future co-workers more expedient.
It's really hard to get a friend into Web development. You can encourage, mentor, and guide them but someone has to be genuinely curious and excited about web development.
Each of them requires its own paradigms and conventions. Writing good UI code that works cross-client (especially on mobile) is often a challenge that requires different thinking than backend code. On the other hand, backend requires you to think about databases and scalability, which may not be your bread and butter. I genuinely enjoy each of them for different reasons. I don't think it's tenable to argue that one is objectively harder than the other.
To build anything non-trivial you really need both, but the frontend is generally easier to start out with and get enough visual feedback to motivate you to go deeper and deeper into the stack. The reverse is far more difficult for most people.<p>As you go deeper and get exposed to more concepts, it's only natural to specialize in either backend or frontend.
It depends.<p>Both can get difficult and being an expert requires lots of training. However, I believe that frontend is easier and more fun for starters. With little skill you get something on the screen, with more skill you can make some really sweet stuff. If you can hook in some existing API it's easy enough to do a dynamic site.
Why not both at the same time?<p>1. Think of a small project (one <i>you</i> could do in a weekend)<p>2. Architect it as a backend API + frontend consumer.<p>3. Explain the architecture to him at a high level.<p>4. Teach him Python/Ruby with bottle.py/sinatra, make the API.<p>5. Teach him HTML/CSS, make the layout.<p>6. Teach him Javascript, call the API and manipulate the DOM.
I can't see why there would be a consensus best answer for this. People enjoy different things and are better at different things. If you want to get your friend into web development, I'd advise having him work through one of those complete tutorials where you write a bit both sides of a site, and see what he enjoys more. I know there are different languages for back end but I think any good tutorial should do, as the problems you solve on the backend I think are pretty consistent over the different languages.<p>Some people really like working front-end and doing all types of things to make a page load quickly in all browsers/look good or whatever, and some people like working on the back end and getting it up to 10kqps ro something.<p>I like back end but that's just my personal taste. Let your friend be good at what he's good at, I think the job market wanting both skills right now if that's the reason your friend is trying to learn web development.<p>And don't forget the whole world of non-web programming :)
Front end is harder because success is less objective. I think that backend has for more technically difficult problems, but if you want a straight answer to this question without lots of caveats then front end is harder.
Frontend, with a backend serving as an API/data layer. But focus on the frontend.<p>That seems to be the way things have gone and are going, and I don't see that changing any time soon.
For a long time, the hardest was front end because you had to remember all the bugs and incompatibilities of various browsers. I think it's getting better.
Front-end development is easier if (a) they are a designer (b) they know a designer. HTML, CSS and JavaScript are easy, but making a design is very hard.
My advice: show her 3 lines oh html that talk to 3 lines of backend. Once she gets it, she'll decide by herself which parts she wants to hack first.
Nothing is hard once you have put your 10000 hours of practice in.<p>But this is a question about personal preference. Different people have different strengths and weaknesses, different personalities, etc. We cannot answer for your friend. The best approach would be to gain a broad exposure to all layers of the stack, not just "front-end" or "back-end", but also the databases, servers, networking, and all those pieces that comprise the modern Internet. Any one of them might spark an interest and a passion.
I'd say back-end. The front-end of any software no matter how complex it is it will always run on a single device, while a scalable back-end could imply a complex architecture composed of multiple components running across multiple servers, all working together to serve the front-end.
Frontend, without any doubts. A lot of compatibility and legacy issues, most of tools are in "beta", main language was made to "move a monkey".
Front end is harder, because people that have no knowledge about how things are created can more easily justify their decisions because of the way it looks.<p>the back end just needs to work as intended. The details can be pretty much any combination of things..as long as it works.
There are increasingly more tools for creating the frontend without code - my favorite right now is Webflow. This will continue happening because that's what we had in the past (Smalltalk, VB6, and so on).<p>Nothing seems to be replacing the need to code backend any time soon.<p>That's my argument for learning backend: frontend coding is unnecessary and an affectation of the current industry.