Learning Bootstrap 3 or 4 should take you very little time, I would suggest you don't learn either of them, but instead take the time to learn CSS (I am of course assuming you are not already a CSS wiz).
You can look at the source of Bootstrap to see how they accomplished certain things if you'd like, but if you're doing anything more than prototyping (and even then), I feel there is very little benefit to using Bootstrap these days.
Once I was told to ignore Bootstrap and just create my css myself (using Sass or CSS Modules) I find I'm making the same recommendations to others. It doesn't take long and you'll have a much better idea of what is happening on your page.
Your html and css should end up being much smaller as well.
As a backend dev, I wish somebody had told me this exact advice earlier on in my career. CSS does have a fair amount of silly legacy shit, but it's really not all that bad once you dive in.
Another good project's source code to learn from is Skeleton. (more simple than bootstrap)
I'm a backend dev who did a little frontend here and there over a decade ago (and has sorta kept up since then out of curiosity). So I know CSS decently well, but still need to look things up here and there, and I certainly don't know all the bleeding-edge stuff.
So yes, you should learn CSS, at least so you understand how web technologies work, in general. But not learning/using Bootstrap (as the parent recommends), if you think that will make your life easier, seems silly. I recently had to do a couple frontend projects for the first time in said over-a-decade-ago, and I found Bootstrap easy to pick up (it took like a half hour), and made things a lot easier than rolling my own CSS, for very little cost.
To actually answer the OP's question, it depends on what you need to do. If you're starting new projects, just learn BS4. I did that back in February, and it worked out well for me. If you have to deal with some existing projects that use BS3, you'll of course need to learn that. But they're so easy to use, that if you already understand how HTML and CSS work (if you don't, of course that should be your step 1), you don't need to really "learn" it so much as read through the section on the layout model, and start building a page/site/app, looking at the reference docs as you go along when you want to add a dropdown or navbar or something.
I came across this when I was looking to gain a more complete mental model of how CSS layout works, as opposed to to the odd assortment of tricks, approaches, and googling I had been relying thus far.
Good stuff. I did notice that the normalize.css of Skeleton hadn't been updated since 2014. Is there a more update version of "normalize" out there, or is it still pretty much apropos today?
Yea there have been updates to it, I dunno why they included it like that. What I do is use a forked version of Skeleton-Sass and include normalize.css as a dependency, so that npm always pulls down the latest version.
I think, unlike assembly, CSS and browsers have improved some of the warts bootstrap was invented to address, do it's less helpful then it used to be (eg flexbox). Also, you can program without needing to learn assembly, but even with bootstrap, you need some CSS knowledge. Finally, learning a little assembly is not a terrible waste of time. I think most CS students still do.
My advice is to always understand the layer below what you're working with.
Learning assembly is worthwhile if you're programming in C.
Learning CSS is worthwhile if you're designing websites using Bootstrap.
Perhaps even more importantly though, CSS, JavaScript, and HTML have a longevity that's tremendously longer than any given framework. My understanding of these technologies from 15 years ago remains relevant today, and although there's been a lot of new features added, I can build upon that knowledge to incrementally learn new things. And I'm confident that in another 15 years from now, knowledge of these web technologies that underpin all the frameworks will still be relevant. The same can't be said of Bootstrap 4.
Agreed. The biggest thing I look for when interviewing new developers isn't "how much do you know about X framework", it's "could you implement all of that without the framework?". Knowing bootstrap won't do you that much good if you don't understand how/why it does what it does. Similarly, I demand that Java developers are able to describe the underlying 'how' of Spring, rather than regurgitating tutorials from the Internet.
I interview developers also. I don't expect developers to be great designers. I expect them to know the basics of CSS and how selectors work, but that's about it. I'm fine if they aren't advanced CSS whizzes. I do expect them to know JavaScript including how prototypes work, scoping, etc.
>> My understanding of these technologies from 15 years ago remains relevant today,
I have almost the exact opposite experience. I use next to nothing I learned eight years ago today when I'm building apps and websites.
- Float based layouts? Nope, everything is a grid system these days.
- Browser inconsistencies? Nope, they're almost all gone except if you still have to support legacy browsers. All the quirks of every IE version I used to have memorized? They're all but forgotten now and I don't need them.
- I used to be a whiz with Flash. Nobody uses flash anymore. CSS animations, transitions, and better javascript rendering libraries have rendered my Flash skill set irrelevant.
- I used to only have to worry about how my sites rendered on desktops. Now, everything is mobile, mobile, mobile and has to be responsive. More and more media queries to handle all those weird outliers of screen sizes.
- I never had to think about UI/UX patterns. Now, it's almost all I do nowadays. Make sure this is touch enabled, how can a user use this app on a phone? Are you hiding menus when you should be showing them? Does a desktop user even know what a "hamburger" menu is? A/B testing out the ass to make absolutely sure you have the right color/shade/hue of a button so the user clicks on it.
- When I first started, I never had to know Javascript. The places I worked had JS plugins all written for you. All you had to do was copy/paste a snippet and you were done. Prototypical inheritance? Closures? A functions "this" keyword and how it works? Never, ever had to know that stuff. Now I have to know all that, and a TON more.
I'd say on average my skill set tends to do a 100% turnover about every 2-3 years. That's not to say I don't still use some of the basic understanding of HTML and CSS that I learned right off the bat such as selector classes and pseudo classes or the difference between elements and tags. But on the whole, I'm constantly having to learn new techniques, new standards, and generally anything that's being added to the HTML5 or CSS3 specs. I've actually quit jobs because I felt like what I needed to know to do the work was too easy and my skills were just eroding while I was there.
In a parallel universe there must be a non-sarcastic version of you, and I agree with them. I genuinely believe that devs should have at least some familiarity with any flavour of assembly.
Yes, you should learn CSS. Whether or not you should roll your own bespoke CSS/JS for interface components depends on the project. You will learn a lot more about CSS if you do it yourself.
However, I encourage most folks to just use Bootstrap (or Foundation). They're not hard to learn, handle a lot of browser issues for you, are easily customizable, and are very well documented.
If someone ever tells you that Bootstrap is "bloated" or that they "don't like its design choices", they've probably never seen http://getbootstrap.com/customize/.
As a developer, I strongly prefer picking up projects that just use an established framework. No, it's not hard to go through someone's crappy CSS/JS components, but it's just another thing to think about. Let someone else write the JS for dropdown interactions and just build your app.
If you're starting from a vector design (designed in Sketch for example) and need to convert it into a design, would you recommend using Bootstrap's components and overriding them, or is it easier to roll everything yourself?
This depends on how closely your designer's ideas can be mapped to existing Bootstrap components. If it's a very conceptual project (maybe an infographic or product advertisement) it may be better to start from scratch.
Most of the time though, I try to limit the extent of my designer's vocabulary by having them use a sketch template and see how far they get. There are iOS, Android, and even a Bootstrap template that they can start with: https://www.sketchappsources.com/free-source/349-bootstrap-3...
All of those usually resolve into components that can be mapped to something in Bootstrap or Foundation. If your designer can't solve an interface problem with something from those templates, that's often a sign that there's a bigger problem in your app's structure.
Yes, I think that if you don't know CSS then learning that (rather than bootstrap 3 vs 4) is the right answer.
None of these technologies are all that hard. Like, they are easy enough that I don't understand it as a question...
if you know CSS/ SASS and that stack, they take about an hour to figure out the main points and get rolling. But even if you don;t know hardly any CSS then they still take like a day or so, and the principles are pretty much the same.
And equivalent question is "should I learn Sublime or Notepad++". If you understand what they do, pick one and if it stops being a thing you can use for whatever reason then learn the other, because the difficult part of understanding what id going on with them is conceptually the same between them.
* Learning CSS is not the first priority of a bootstrapped business. The cost associated with a 100kb of css is much lesser compared to creating a layout and all other styles.
* Learning CSS to create a whole layout from scratch can be a daunting task for the uninitiated.
* The best approach would be to start the project with Bootstrap, create a winning product, and iterate to find the best layout you need. Then in a subsequent release, you can redo the same using css. CSS Flex is very easy once you get the hang of it and you do not need any other css layout framework.
I think it would depend on how much time you are willing to put in and how far you want to go.
If you are primarily a back end developer and you just want to quickly throw down a few prototype pages. If you will never really need more than that, just spending a couple of hours learning bootstrap will be a much better use of time than spending a few weeks learning all the intricacies of css.
I spent years fighting with css. It was such a relief when Bootstrap and friends came out and just removed a whole layer of complexity from my occasional forays into the front end.
We had the same thought over a year ago. We choose Bootstrap 4 but it was a big headache because the Javascript plugins were and still are quite busted. I would choose BS3.
I'm also using Bootstrap 4a5 without issues on a small site that I initially upgraded from Bootstrap 3 mostly out of curiosity, and then pushed live when I didn't discover any major issues.
Since it's a "major rewrite of almost the entire project"[1], I can't recommend that new Bootstrap users invest any time in Bootstrap 3.
It doesn't matter. Because no matter what tech you use in the web app space, it will all be obsolete in a year or two. Your apps will never be done, because the sand will shift underneath them. You'll need to continually update them to keep them working, or abandon them.
I think it's better to ignore the world of framework hype and just code to the browser APIs as described by the standards. You can basically guarantee that your site will still work ten years from now and that your knowledge will still be relevant (though you'll need to keep up to date with new features e.g. flexbox).
I personally find it more work to learn frameworks and deal with the leaky abstractions inherent in them than to work with the browser directly. Especially when I hit a case where I want to do something that the framework authors didn't cater for and I end up having to go down to the browser APIs to implement it anyway.
In the short term, it's a bigger investment to learn the underlying technologies, but in the long term it pays off big time, since you don't end up being stuck with something that sounded great two years ago when you started your project but is no longer maintained.
FWIW I'd never use either on a production site. But for a quick-and-dirty internal site or to just play around with, I can't think of any reason not to use 4.
The "CSS Frameworks" like Bootstrap, Foundation, etc. tend to be very opinionated and therefore, for some aspects, difficult to customize. The production sites on which I've worked generally want to project their own unique identity and not look like the "million other Bootstrap sites on the internet." It often ends up being harder to override the BS/Foundation/etc. styles than simply creating a framework from scratch.
Also, as others have noted, the large frameworks tend to be ... well ... large. That can definitely drag down performance if you're forcing a bunch of CSS into a browser that isn't actually needed by the site.
The question I'd ask myself is are there any features of 4 you really need right now? If not use 3, as it is more production ready. Using 4 right now you are potentially walking into a minefield. You might make it through ok but you might not.
It depends on what you want to optimize for. If you're starting a startup and you anticipate having a dedicated design team, I think you're better off making your markup match your domain and hand-rolling the CSS instead of using a framework like Bootstrap. This is the ideal approach IMO because it lets you much more effectively keep the styling out of the markup and in the stylesheets. CSS frameworks by definition require you to put styling in your markup.
But if you're just trying to bang out a small project quickly and have it look nice without needing to muck with CSS too much, then a framework can be very useful. These days I prefer Semantic UI over Bootstrap:
Oh, I might not be aware of that type of CSS framework. Can you point me to some examples? I was thinking of frameworks like Bootstrap and Semantic UI.
Given that they've been working on 4 for so long, I'd learn 3 now since it works and the migrate to 4 when it's ready. And for the record, I'm tired of everyone bashing Bootstrap. I'm using it for a production site and I love it. I'm a one-man shop and I need to earn revenue now. I can't afford to spend the next six months learning the quirks of CSS and its crummy layout techniques. Bootstrap has allowed me to create a responsive website that works well across all devices. It also looks much more professional than what I could have done on my own, not to mention the fact that my site looks much better than those of my competitors. I'm grateful that Bootstrap is around.
I had to build something back in February (hadn't done any real webdev in >10 years), and picked up BS4 in a half hour and started using it in production. No issues doing so; the "alpha" moniker seems to be the developers erring on the side of caution and reserving themselves the right to make user-visible changes.
When you start on a new technology, you have to endure the breaking changes, lack of community support, and lack of skilled operators.
You also burn one of your technology chits. You get just a few as a startup. Selecting all bleeding edge technology could kill you. Would love to know where I read that. :D
What browsers do you need to support? Version #4 dropped support for IE9. If IE is important for your business then version #3 is currently the better option.
Now, learning bootstrap is not too bad. All you need to donis figure out how it defines the layout grid, how it handles margins, padding, and gutters, and how to use different classes to make the site responsive. Should take a couple of days. Ping me if you need help. :)
I'd start with 3 then migrate to 4. Also, learn Flexbox as it will be enabled by default in BS4. FlexboxFroggy.com is a nice introduction. There's one more breakpoint in BS4. The css class to make images responsive has changed for the third time in 3 releases. Other than that, basically the same. I've been toying with it.
I've used BS2 and 3 in the past, and wouldn't recommend bootstrap at all these days. You're better off with something like Bourbon which is much more modular and lightweight and doesn't force you into a certain "way" and eventually down the "override everything" rabbithole.
I started using bootstrap from Bootstrap 1 and it was not difficult to start using 2 or 3 - the basic conceptual framework remains almost the same and most of the implementation anyway requires the Bootstrap documentation open on the side for reference.
However, I would recommend to move away from Bootstrap to Material design for example, I feel (after using both) Material design is more well though framework and it also has bindings with Angular (that is if you are building angular apps) through [angular-material](https://material.angularjs.org/latest/). There is also standalone framework [getmdl.io](https://getmdl.io/started)
Then there is a very detail documentation on how to think like [Material design](https://material.google.com/) way by Google . Checkout the components section from the menu, it is really nice they way explain the theory behind why each component the way it is
Yeah, people are saying, "No, learn CSS!" but isn't CSS exceedingly simple?
Why can't I just use Bootstrap because I don't feel like designing an app, and Bootstrap is the fastest way to get a consistent layout on web and mobile? What's it got to do with learning at all?
> "No, learn CSS!" but isn't CSS exceedingly simple?
No, it's not. I don't want to start a CSS flame war, but at least for layout / positioning I struggle every single time with CSS, especially on sites with dynamic content. CSS is my least favorite part of the web development stack by far.
I agree whole-heartedly. Frontend web development is broken in that sense. In no way does it make sense to define a layout through a Stylesheet. Most of the other frontend "languages" get this. HTML needs layout tags, e.g. for grids and panels.
You cannot use Flexbox if you are targeting the enterprise market, since they are often stuck on old versions of IE due to slow moving and draconian IT departments.
AMEN. It's easy to write CSS. Just hacking away until something works... It's hard to write GOOD css and if you have any ounce of good programming taste it's difficult.
I think it would be valuable to you to give HN a little more insight to your particular set of skills and your purpose.
I say this because I personally have dived head first into using a CSS framework without first fully understanding a few key CSS fundamentals. This made front-end work very hacky and involved a lot of trial and error.
Further along the line I've also been burned once or twice by adopting a CSS framework, only to have breaking changes from future updates.
So really it depends on your situation, whatever it may be.
If you don't plan to support IE9 then by all means use Bootstrap 4. But keep in mind that Bootstrap (or any CSS framework) are not a perfect solution for not learning CSS. Sooner or later you will need to modify bootstrap or create your own styles.
Copying and pasting wouldn't work, because many times you need to customize things.
Also, what a nightmare would be to look it up every time you need to use a component!
Of course learning it means to learn components by heart, just like you don't look up built-in functions every time when you use a programming language.
Is it just me? I don't recite the built-in functions (intentionally) before I code. I will look into doc when I want to find a shortcut. It's very efficiently.
If I want a Modal, I will check Modal doc (accurately, I jump to CODE PATTERN and copy it, not starting to read doc explanation.) and use it. After few times, you will memorize the basic by heart. (understands the basic, then you can create your snippets or something. Myself, I still open the doc to see the visual examples. Anyway, I coded with a lot of frameworks in different projects at the same time, not just bound to Bootstrap. You need to find your best workflow yourself)
EDITED:
"customize things" seems not suitable to the questioner at the moment. If he understands basic CSS, he may not ask this question. :)
As a backend dev moving from python to ruby, I've been thinking of explicitly sitting down and learning-by-rote a lot of the standard library just so that I could move faster and feel less scattered. Do you make flashcards?
Everyone opting for "do your own CSS" and not using a framework, is absolutely a horrible idea. You will not be the only one writing CSS for long term for your app I assume, any new member will find it extremely difficult where to modify following some good standards. They might miss a lot of things or overdo things perhaps.
Regarding learning BS3 or BS4, I'd opt for BS4. All you have to know what things BS4 provide and use them appropriately. Not to mention, some fairly good CSS knowledge is also a pre-requisite. One of the themes we recently used is startUI (google for it). It's on BS4 and the components were easy to integrate in apps.
I've been using Bootstrap 4, since it's already stable and will come out in a few months anyway, so I won't have to upgrade anytime soon.
If you use libraries that depend on Bootstrap, you might want to check compatibility. I was using Bootswatch and the developer didn't upgrade the code to Bootstrap 4 until a few weeks ago. Other than that, I see no reason not to use the latest version.
I'm surprised by all the comments saying that you don't have to learn Bootstrap but you can just look up the components every time you need to use them, suggesting you use Skeleton, or that if you use Bootstrap you don't want to learn/know CSS. Nonsense.
There's also an other reason to go with the "almost released" one when starting a new project: bootstrap has been historically painful to migrate.
Upgrading major bootstrap version means changing class names in whole codebase (like the classes for grid system), changing html code for some components which have been updated, and having to remove other components altogether and go with your own sauce because components were removed.
This has been the case for all previous major bumps, and there is no sign of it being any different this time, so better save a migration and go straight with bs-4.
The other day I was looking at Bootstrap 3 documentation by mistake instead of Bootstrap 4 and it was completely different, with some components missing altogether.
111 comments
[ 2.8 ms ] story [ 158 ms ] threadYou can look at the source of Bootstrap to see how they accomplished certain things if you'd like, but if you're doing anything more than prototyping (and even then), I feel there is very little benefit to using Bootstrap these days.
Once I was told to ignore Bootstrap and just create my css myself (using Sass or CSS Modules) I find I'm making the same recommendations to others. It doesn't take long and you'll have a much better idea of what is happening on your page.
Your html and css should end up being much smaller as well.
Another good project's source code to learn from is Skeleton. (more simple than bootstrap)
CSS version: https://github.com/dhg/Skeleton
Sass version: https://github.com/WhatsNewSaes/Skeleton-Sass
Edit: For more of a tutorial approach, check out http://learn.shayhowe.com/html-css/
So yes, you should learn CSS, at least so you understand how web technologies work, in general. But not learning/using Bootstrap (as the parent recommends), if you think that will make your life easier, seems silly. I recently had to do a couple frontend projects for the first time in said over-a-decade-ago, and I found Bootstrap easy to pick up (it took like a half hour), and made things a lot easier than rolling my own CSS, for very little cost.
To actually answer the OP's question, it depends on what you need to do. If you're starting new projects, just learn BS4. I did that back in February, and it worked out well for me. If you have to deal with some existing projects that use BS3, you'll of course need to learn that. But they're so easy to use, that if you already understand how HTML and CSS work (if you don't, of course that should be your step 1), you don't need to really "learn" it so much as read through the section on the layout model, and start building a page/site/app, looking at the reference docs as you go along when you want to add a dropdown or navbar or something.
http://book.mixu.net/css/
I came across this when I was looking to gain a more complete mental model of how CSS layout works, as opposed to to the odd assortment of tricks, approaches, and googling I had been relying thus far.
The changes to normalize are listed here (Skeleton includes v3.0.2): https://github.com/necolas/normalize.css/blob/master/CHANGEL...
Learning assembly is worthwhile if you're programming in C.
Learning CSS is worthwhile if you're designing websites using Bootstrap.
Perhaps even more importantly though, CSS, JavaScript, and HTML have a longevity that's tremendously longer than any given framework. My understanding of these technologies from 15 years ago remains relevant today, and although there's been a lot of new features added, I can build upon that knowledge to incrementally learn new things. And I'm confident that in another 15 years from now, knowledge of these web technologies that underpin all the frameworks will still be relevant. The same can't be said of Bootstrap 4.
I have almost the exact opposite experience. I use next to nothing I learned eight years ago today when I'm building apps and websites.
- Float based layouts? Nope, everything is a grid system these days.
- Browser inconsistencies? Nope, they're almost all gone except if you still have to support legacy browsers. All the quirks of every IE version I used to have memorized? They're all but forgotten now and I don't need them.
- I used to be a whiz with Flash. Nobody uses flash anymore. CSS animations, transitions, and better javascript rendering libraries have rendered my Flash skill set irrelevant.
- I used to only have to worry about how my sites rendered on desktops. Now, everything is mobile, mobile, mobile and has to be responsive. More and more media queries to handle all those weird outliers of screen sizes.
- I never had to think about UI/UX patterns. Now, it's almost all I do nowadays. Make sure this is touch enabled, how can a user use this app on a phone? Are you hiding menus when you should be showing them? Does a desktop user even know what a "hamburger" menu is? A/B testing out the ass to make absolutely sure you have the right color/shade/hue of a button so the user clicks on it.
- When I first started, I never had to know Javascript. The places I worked had JS plugins all written for you. All you had to do was copy/paste a snippet and you were done. Prototypical inheritance? Closures? A functions "this" keyword and how it works? Never, ever had to know that stuff. Now I have to know all that, and a TON more.
I'd say on average my skill set tends to do a 100% turnover about every 2-3 years. That's not to say I don't still use some of the basic understanding of HTML and CSS that I learned right off the bat such as selector classes and pseudo classes or the difference between elements and tags. But on the whole, I'm constantly having to learn new techniques, new standards, and generally anything that's being added to the HTML5 or CSS3 specs. I've actually quit jobs because I felt like what I needed to know to do the work was too easy and my skills were just eroding while I was there.
- Learn Javascript before you learn React etc.. - Learn Python before you learn Django etc .. - Learn LANGUAGE before you learn FRAMEWORK
For assembly, perhaps that should be something like https://ocw.mit.edu/courses/electrical-engineering-and-compu...
However, I encourage most folks to just use Bootstrap (or Foundation). They're not hard to learn, handle a lot of browser issues for you, are easily customizable, and are very well documented.
If someone ever tells you that Bootstrap is "bloated" or that they "don't like its design choices", they've probably never seen http://getbootstrap.com/customize/.
As a developer, I strongly prefer picking up projects that just use an established framework. No, it's not hard to go through someone's crappy CSS/JS components, but it's just another thing to think about. Let someone else write the JS for dropdown interactions and just build your app.
Most of the time though, I try to limit the extent of my designer's vocabulary by having them use a sketch template and see how far they get. There are iOS, Android, and even a Bootstrap template that they can start with: https://www.sketchappsources.com/free-source/349-bootstrap-3...
All of those usually resolve into components that can be mapped to something in Bootstrap or Foundation. If your designer can't solve an interface problem with something from those templates, that's often a sign that there's a bigger problem in your app's structure.
None of these technologies are all that hard. Like, they are easy enough that I don't understand it as a question...
if you know CSS/ SASS and that stack, they take about an hour to figure out the main points and get rolling. But even if you don;t know hardly any CSS then they still take like a day or so, and the principles are pretty much the same.
And equivalent question is "should I learn Sublime or Notepad++". If you understand what they do, pick one and if it stops being a thing you can use for whatever reason then learn the other, because the difficult part of understanding what id going on with them is conceptually the same between them.
* Learning CSS is not the first priority of a bootstrapped business. The cost associated with a 100kb of css is much lesser compared to creating a layout and all other styles.
* Learning CSS to create a whole layout from scratch can be a daunting task for the uninitiated.
* The best approach would be to start the project with Bootstrap, create a winning product, and iterate to find the best layout you need. Then in a subsequent release, you can redo the same using css. CSS Flex is very easy once you get the hang of it and you do not need any other css layout framework.
I know CSS pretty well and Bootstrap versions are no longer an important concern to me (I can pick up either just by looking at the docs).
He's basically asking if Bootstrap 4 is ready to be used. Nothing to do with knowing CSS.
If you are primarily a back end developer and you just want to quickly throw down a few prototype pages. If you will never really need more than that, just spending a couple of hours learning bootstrap will be a much better use of time than spending a few weeks learning all the intricacies of css.
I spent years fighting with css. It was such a relief when Bootstrap and friends came out and just removed a whole layer of complexity from my occasional forays into the front end.
> A: Learn CSS
This is not helpful and does not answer the question.
Since it's a "major rewrite of almost the entire project"[1], I can't recommend that new Bootstrap users invest any time in Bootstrap 3.
[1] https://v4-alpha.getbootstrap.com/migration/
I personally find it more work to learn frameworks and deal with the leaky abstractions inherent in them than to work with the browser directly. Especially when I hit a case where I want to do something that the framework authors didn't cater for and I end up having to go down to the browser APIs to implement it anyway.
In the short term, it's a bigger investment to learn the underlying technologies, but in the long term it pays off big time, since you don't end up being stuck with something that sounded great two years ago when you started your project but is no longer maintained.
You're going to be in the dirt eventually anyway...
Also, as others have noted, the large frameworks tend to be ... well ... large. That can definitely drag down performance if you're forcing a bunch of CSS into a browser that isn't actually needed by the site.
But if you're just trying to bang out a small project quickly and have it look nice without needing to muck with CSS too much, then a framework can be very useful. These days I prefer Semantic UI over Bootstrap:
http://semantic-ui.com/
How do mixin-based CSS frameworks require you to put styling in your markup?
I.e., used properly, Bootstrap itself is "that type of CSS framework".
i.e. you will have to learn the new thing at some time in the future so may as well not incur that debt and go straight to the future.
You also burn one of your technology chits. You get just a few as a startup. Selecting all bleeding edge technology could kill you. Would love to know where I read that. :D
Now, learning bootstrap is not too bad. All you need to donis figure out how it defines the layout grid, how it handles margins, padding, and gutters, and how to use different classes to make the site responsive. Should take a couple of days. Ping me if you need help. :)
However, I would recommend to move away from Bootstrap to Material design for example, I feel (after using both) Material design is more well though framework and it also has bindings with Angular (that is if you are building angular apps) through [angular-material](https://material.angularjs.org/latest/). There is also standalone framework [getmdl.io](https://getmdl.io/started)
Then there is a very detail documentation on how to think like [Material design](https://material.google.com/) way by Google . Checkout the components section from the menu, it is really nice they way explain the theory behind why each component the way it is
http://bulma.io/
I've been using the version 1, 2 and 3 and I've never felt like I needed to learn it. Usually I just open the doc when I need to use something.
Why can't I just use Bootstrap because I don't feel like designing an app, and Bootstrap is the fastest way to get a consistent layout on web and mobile? What's it got to do with learning at all?
No, it's not. I don't want to start a CSS flame war, but at least for layout / positioning I struggle every single time with CSS, especially on sites with dynamic content. CSS is my least favorite part of the web development stack by far.
I say this because I personally have dived head first into using a CSS framework without first fully understanding a few key CSS fundamentals. This made front-end work very hacky and involved a lot of trial and error.
Further along the line I've also been burned once or twice by adopting a CSS framework, only to have breaking changes from future updates.
So really it depends on your situation, whatever it may be.
If your question was should I use 3 or 4, then my answer would be, depends on your project.
But for learning, the version doesn't make much of a difference as the general principles are the same.
I happen to like Semantic UI a lot, but you can also consider something smaller and less proscriptive than Bootstrap, like Skeleton or UIkit.
All these frameworks are just COPY & PASTE the pre-made code. For example, you wanna button in that style: http://v4-alpha.getbootstrap.com/components/buttons/
Copy that code and paste into your HTML. Whatever v3 or v4 are the same way.
If your learning way is memorizing the code without checking the document each time, then I'd say v3.
Also, what a nightmare would be to look it up every time you need to use a component!
Of course learning it means to learn components by heart, just like you don't look up built-in functions every time when you use a programming language.
Take Bootstrap as an example, I open the following doc: http://v4-alpha.getbootstrap.com/components/alerts/
If I want a Modal, I will check Modal doc (accurately, I jump to CODE PATTERN and copy it, not starting to read doc explanation.) and use it. After few times, you will memorize the basic by heart. (understands the basic, then you can create your snippets or something. Myself, I still open the doc to see the visual examples. Anyway, I coded with a lot of frameworks in different projects at the same time, not just bound to Bootstrap. You need to find your best workflow yourself)
EDITED: "customize things" seems not suitable to the questioner at the moment. If he understands basic CSS, he may not ask this question. :)
It's much easier to memorize them in my opinion.
It also comes from practice, if you use Bootstrap often you'll just memorize the components after a while.
As a backend dev moving from python to ruby, I've been thinking of explicitly sitting down and learning-by-rote a lot of the standard library just so that I could move faster and feel less scattered. Do you make flashcards?
Regarding learning BS3 or BS4, I'd opt for BS4. All you have to know what things BS4 provide and use them appropriately. Not to mention, some fairly good CSS knowledge is also a pre-requisite. One of the themes we recently used is startUI (google for it). It's on BS4 and the components were easy to integrate in apps.
I've been using Bootstrap 4, since it's already stable and will come out in a few months anyway, so I won't have to upgrade anytime soon.
If you use libraries that depend on Bootstrap, you might want to check compatibility. I was using Bootswatch and the developer didn't upgrade the code to Bootstrap 4 until a few weeks ago. Other than that, I see no reason not to use the latest version.
I'm surprised by all the comments saying that you don't have to learn Bootstrap but you can just look up the components every time you need to use them, suggesting you use Skeleton, or that if you use Bootstrap you don't want to learn/know CSS. Nonsense.
Upgrading major bootstrap version means changing class names in whole codebase (like the classes for grid system), changing html code for some components which have been updated, and having to remove other components altogether and go with your own sauce because components were removed.
This has been the case for all previous major bumps, and there is no sign of it being any different this time, so better save a migration and go straight with bs-4.
The other day I was looking at Bootstrap 3 documentation by mistake instead of Bootstrap 4 and it was completely different, with some components missing altogether.