Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

General Discussion

Craig Peckett
Craig Peckett
10,531 Points

What is the best way to go about hosting your own website?

Hey guys, I have been learning HTML, CSS and Javascript for about 6 months now and I am a bit stuck as to what the next step is. My end goal is to earn money doing freelancing work either debugging code or building websites so any answers to the following questions would be highly appreciated.

Freelancing What are the best freelancing websites to use? How much experience should you have before freelancing?

Wordpress What are the advantages of learning wordpress? Is wordpress the future of websites? Can you upload your own html, css and javascript and simply us it as a content management system? Is it easy to build your own content management system? Is wordpress the best way to host a static website? Is wordpress the best CMS? Is it easy to write a blog styled website without wordpress?

Shopify Is shopify the same sort of idea as wordpress but where you sell things? Is it easy to sell things without shopify?

Bootstrap After learning HTML and CSS I find using bootstrap is the most efficient way, do you agree?

I have started building my own portfolio so people can visit my page and maybe hire me, I know i'm a long way off yet but practice makes perfect but again I'm not sure how to go about hosting my page. Should I be building it on wordpress and paying the $300 a year business fee?

Sorry for all the questions and thank you for any answers

Craig

4 Answers

Heya, Craig ;) Tried to address everything you asked about.

On Freelancing:

Freelancing is uniquely challenging and (depending on the projects you take on) can keep you on your toes and out of your comfort zone code-wise, which is a really great way to learn and grow quickly. Would definitely encourage giving it a try, if that's what you're looking into :) Experience is relative - and everyone treats customers differently, so if you're asking how much experience is 'enough' you're going to get a lot of variety in the answer. As for me, I would say 'enough' is relative to the project, as different clients have different needs and you may be able to address some and not others. I would encourage you to be honest and not oversell yourself - one of the things that gives a lot of freelancers a bad rep is that they overcommit and don't deliver on time (or deliver sub-par code). It's okay not to know exactly how to build everything a client wants (you can learn it, the time for which will need to factor into your timeline), but you should atleast have a general idea of how to approach each piece of their project.

Finally, I think it's important to emphasize that 'enough' in frontend and design is very different (IMO) than 'enough' in backend. More robust projects and sites will likely require user input, fluency in common Linux CLI's, possibly scaling and load balancing, DNS, and - more importantly - databases and storing of user data. This is where 'enough' is important because the client's users are trusting the client, who is trusting YOU to make sure you're properly securing their information, using best practices, and preserving their privacy. Regardless of whether you're legally/contractually liable for data or security breaches, I would argue as a developer we have an intense moral obligation to preserve (within reason and to the best of our ability) user's privacy and integrity of their data. I would suggest you be sure of your competence in this area before building any kind of website where the user might make payments or where non-public information might need to be stored and accessed. Even if you aren't building the software or plugins being used, you should still have a good understanding of what's going on. Someone once told me about GitHub repos: If you can't read it, don't paste it. That is, if you aren't sure you know what's going on - you shouldn't use it in a production environment where your (or your clients') users have to trust it.

On Freelancing Websites and Local Work

There are several great sites that a lot of freelancers use to find new work - some popular ones that have been around a while are elance, upwork, freelancer, 99designs, etc. A common practice on these sites is for a potential client to post a job and potential freelancers and agencies can make bids on the work (or the client may post what they're willing to spend and freelancers can offer their services). One thing to consider, however, is that it can be hard to stand out without a deep portfolio on these sites, as they have tens of thousands of devs that you're competing with. That said, if you're strictly interested in building your portfolio, you may be at an advantage on bids as you can severely undercut agencies or more experienced devs' pricing.

You might also walk around your local neighborhood/city and offer your services to smaller stores (don't bother with chains, their accounts are normally handled by corporate). Often it's the mom and pop shops that 1) need a good site badly, 2) are more friendly and open to hiring someone with less experience (if you're open to them and don't misrepresent your skill and intentions, and 3) are going to be more flexible with timelines, budgeting, etc. At the same time, you're also learning to sell yourself and your services - and if you do well, you're likely going to be exposed to other businesses in your local community that need you. I personally found that churches were great when I started out - they're way more flexible on timeline, budget, etc and if you make their site look good, their congregation likely has businessmen and individuals also in need of a site. You can, of course, also normally negotiate some kind of branding with your clients to allow you to 1) list their sites on your portfolio and/or 2) link back to your website/portfolio in their footer, source code, etc.

On WordPress

There's a lot that could be said here (and that could be debated, especially on 'the future of websites') - but I would say that for you as an early freelancer, yes, WP is worth learning. WordPress is a content management system (CMS), meaning it allows you to make significant changes to the website with minimal to no understanding of the underlying code. This is great for blogs or websites with basic functionality as clients frequently want to be able to make small changes (such as updating their menu or changing their contact phone number) without having to contact (and pay) you. And, frankly, you probably want to spend your time working on cooler, newer stuff - not being a glorified data entry intern-for-hire.

Visually, WP operates off of themes, which can be uploaded and customized (they consist of HTML, CSS, JS, PHP, etc). You can also purchase/build plugins that add functionality to the site (such as a plugin for a contact form or for accepting payments). WordPress has been around a while (since 2003) so it has a rather large ecosystem (and bloat) surrounding it, so there are definitely devs and agencies that specialize in WP development (and you probably could, too). You will want to familiarize yourself with PHP and MySQL if you intend to really get anywhere with WP.

Best CMS? Highly relative, won't answer (cough hell no cough). But definitely easier, especially early on, than building your own CMS. Making your own solution may actually be wayyyy better - but requires more time (that you probably can't directly charge clients for), and requires you to account for all the needs your clients may have. Do they just need a basic blog? Do they need ecommerce? If so, what payment gateways should you use? Is any automation needed? What should clients have access to that's safe, and what should they have to go through you for? How will you organize multiple clients' dashboards? What if each client has multiple sites, or multiple users that they want to be able to modify their site(s)? These are all questions that a variety of other mature CMS' have already addressed and tested (some better than others) - so, while baking your own can be great for learning, I would contemplate it more before jumping in deep.

On Shopify

Short answer: yes, it's like WordPress but instead of blogging being the core focus, Shopify is all about very quickly deploying an online storefront. Selling things without Shopify (or other CMS's) is relatively easy, but requires some knowledge of backend languages (think PHP, Node, etc), API's therein, and databases.

On Bootstrap

Bootstrap has been the go-to for css frameworks for a long time, and it's still one of the best. I personally use SASS in almost all of my frontend projects (SASS compiles into CSS and makes coding in CSS much, much faster), so I lean towards frameworks that are built more with SASS as a focus (Bulma is my favorite choice at the moment). LESS is another language that makes building with CSS much faster. I would recommend you look into both SASS and LESS. Some other notable, popular CSS frameworks (in no particular order) include Foundation (Zurb), SemanticUI, Pure (Yahoo), Materialize, and UIKit (YOOTheme).

On Building Your Porfolio

Would definitely encourage you to focus on this - it will be difficult to get clients (worth working for) without some way to show them you can do what you're offering. Also, if you took the time to read above (it's a lot, sorry), I would recommend jumping in deep and trying to build your portfolio site without a CMS. You can get cheap VPS hosting from GoDaddy, Namecheap, etc (would recommend buying something with Linux and cPanel, as there's a huge amount of documentation on the web for you to pull from and it's cheap - like $5-10/mo). With Linux/cPanel, you can get started without having to know much about backend dev, and there's enough 'new' stuff there for you to learn quickly and experiment.

Also, since you mention paying the WP business fee - you probably want to incorporate if/when/before you start accepting payment for your services. Assuming you're in the US, you can normally incorporate for $50-300 (some municipalities require local licenses for certain services), and your personal assets will be protected in the case of lawsuit, bankruptcy, etc. Small businesses do have to file certain paperwork, taxes, etc so it's a bit of jump so far as paperwork goes if you've never started a business before, but can be fun and interesting so would definitely also encourage you to do this if you start charging fees for your service.

Wow, that was a lot ...

Sorry, I know all that was lengthy - but I remember just getting started and wish someone had given me more detail or explained their experiences more. We improve fastest when we're not just learning from our own mistakes and experience, but also that of others. Hopefully I helped point you in a direction that's helpful to you; if not, apologies ;P Also, please don't read this and be dissuaded from freelancing - it's a good bit of work, especially when you're just getting going, but it's got its own unique rewards and I would definitely recommend it.

Good luck, and if there's anything else I can offer to help, I've followed this discussion so just reply and it should notify me (there's no PM functionality on Treehouse). If you want some more personalized help or just want to chat, you're welcome to add me on social media (search for my username). Cheers :)

Craig Peckett
Craig Peckett
10,531 Points

WOW!

Thank you so much, don't apologize for the lengthy reply I couldn't have asked for a better answer.

All this information can be a bit daunting, it feels like i'm never going to get to where I want to be and actually getting assigned to some of the tasks I have seen on some of the freelancing website seems like mission impossible. I have only ever been learning code using this website and working through the W3Schools exercises so feel my code can be slightly sloppy at times.

"Finally, I think it's important to emphasize that 'enough' in frontend and design is very different (IMO) than 'enough' in backend."

Is this quote meant to mean that learning backend programming will be a lot more beneficial and rewarding?

If I were to find a client in my local neighborhood I assume you would essentially be self employed so would have to give them an invoice for your work etc?

I have played around with wordpress and worked through a few of the tutorials on treehouse but I find its just nowhere near customize-able as working from scratch. Or is this where PHP comes in? I saw there were CSS plug-ins but all the plug-ins come under the business plan which seems expensive and there was nowhere to edit the html and css on the customize page. All you could do is change a few colors text and background images of an original theme not actually upload fonts add buttons and padding etc.

Also with hosting my site so I cant just upload all my html and css files to a hosting website and get a domain name and be able to see it? I will need to learn PHP so it can be uploaded to the server?

Again sorry for all the questions I have read up on all this a lot and sometimes just get left feeling overwhelmed with all these programming languages I need to learn.

Thanks for your time and again any help is much appreciated.

Also I couldn't find you on social media tried facebook and instagram I dont really use anything else

Craig

Ahh, well those are the two networks I specifically don't publicly use, so that explains why you couldn't find me. Just email me at me@andrewdefee.com ;)

See if I can answer your questions in the order you asked.

On feeling overwhelmed

It can feel like a lot (and in some ways it is) but don't let it overload you. Everyone starts somewhere - and you'd be amazing how much (and how quickly) you can pick up in a short amount of time. Don't let me dissuade you from freelancing (that wasn't the intent), rather I just wanted to make sure you had some of the larger pieces to think about :) Believe me, there's plenty more we could get into - popular Linux distros and CLI's; scaling, containerizing, load balancing and sharding your apps and DB's; Git, versioning, licenses and fair-use; DNS, zoning and routing; SSH, SSL, etc (and that's not even touching on running a business itself).

You don't need to know everything, and especially as a freelancer much of that likely won't really be relevant to you or your clients, at least early on and while you're solo. But knowing what you do (and don't) know, and where your role fits in within the larger dev ecosystem, is invaluable.

What is "enough"?

The quote you reference was simply meant to convey a few things. Primarily, that from a backend perspective you're taking on additional, greater responsibility regarding the user's data, security, & privacy. That is, an unusable app is worst-case for design/front-end; but slightly usable app with major security issues and data leaks is even worse for backend. Backend doesn't just have to make sure the product works, they have to also make sure it does so safely.

That said, I'm not downplaying the incredible importance and role of frontend (I actually prefer frontend dev and am always the first to argue that every pixel matters and that without good design and UI/X your backend won't matter because people won't use your product; in fact, better to have a beautiful product with 2 features than an ugly product with 5). I'm just trying to say that backend is a different beast, with different responsibilities - and that those responsibilities grow increasingly important as your userbase (and the data you store for each) grows. If you store user accounts, payments, etc ('data') then you're assuming a certain degree of trust from the user. They don't know how that payment form works, or what kind of code you have on the backend. They shouldn't have to know. They do and should expect, however, a reasonable degree of privacy and safety for their data. That's the extra responsibility that a modern backend dev or server architect takes on.

As to whether or not you find backend development more beneficial or rewarding, who knows? Frontend and backend have different, equally impactful challenges. I would definitely recommend you atleast have a familiarity with both, and if you're freelancing by yourself you will definitely find much greater value out of at least a basic competency in backend, too.

WordPress, PHP, etc

With hosting, you definitely can just upload your HTML & CSS files. However, bear in mind your site at the point is purefly frontend. You probably have a basic contact email form; but otherwise you aren't going to get any advanced functionality. Further, your clients will have to either know code themselves or depend on you for changes. This is great for you, but not so great for a small business trying to pinch pennies - and most will know this. WordPress and other CMS's are popular because the end-user (your client) doesn't have to know any code in order to make small changes. This doesn't mean you won't still be needed or there aren't other ways you can continue to earn regular revenue from your client - just that your job will always be as a developer, and won't evolve over time into data entry (eww, boring for me - fun for some).

Is PHP required? Definitely not - but knowing some form of intermediary or backend language is going to benefit you if you ever take on a client that needs more than a basic 'hello' page. What happens when a client wants a blog? What about if they want to sell some of their products online through their site? What about if they want a forum or a email ticketing support system? Live chat? Even if you don't code these solutions yourself (wouldn't recommend that right now), you need to know 1) how they work, and 2) how to implement them. Do you choose a free solution (with probably fewer features and a more in-depth integration process), or a more commercial integration (which probably costs you - and therefore your client - more)? Do you use PHP? Node? Ruby? Java?

Treehouse has some awesome courses on all of the above - I'd personally recommend Node or PHP7 (or both). Even if you've only just played with them by the time a client asks for an app in which they're necessary, you will atleast be able to honestly tell a client "Yeah, I know how that works and can probably figure that out for you," instead of "Well ... no idea, sorry" (in any case would recommend honesty regardless).

To more specifically address your question on uploading to the server - no, you can upload just pure HTML and CSS to your server with any basic FTP client. I would recommend WinSCP or Filezilla - both are free/open-source and really mature.

Specifics on WordPress: WordPress is customizable, but a lot of the CSS and code editing are hidden away for devs. You can edit existing themes, build your own, etc. WordPress is built on PHP, so you would need to know atleast some basics in that area to most efficiently build with WP.

Craig Peckett
Craig Peckett
10,531 Points

Thank you so much, really helped me out on deciding my next step. Just checked out your portfolio very nice and inspirational. I have used node a very little amount at work but I am aiming to progress at work as well as doing my own thing so I think everything you have listed is definitely worth me learning.

Best get my head down.

Once again thanks for your response I really do appreciate it.

Craig

Oh, oops - I don't ever touch my portfolio, haven't had time to update it for well over a couple years ;P Spend all my time working (both at my own startup, Totem and the cybersecurity co I work at, Rivetz, and other various sideprojects, so haven't had time to update it. Sorry about that!

Glad I could help - reply to this topic or reach out if you want to talk more, always happy to chat.

Craig Peckett
Craig Peckett
10,531 Points

Well they're also pretty cool. Will do, seems like I've got a lot to learn in the meantime but will be in touch if I need any help.

Thanks again.

Craig