Recently I heard a talk by Shir Nir of the Handel Group on Personal Coaching. What he explained was very consistent with my own experience in trying to better myself and also mirrors principles from cognitive-behavioral therapy and meditation. The key message is that our actions are triggered by our thinking (be it conscious or subconscious) and our thinking is shaped by our character. Instead of saying "character" Shir Nir actually makes a distinction between our traits and our believes which are two very different parts of our personality.
Personality traits are something that is basically inherited or formed in early childhood and almost never changes. It is things like being introvert or extravert or being heterosexual or homosexual. Although I used those very well-known dimensions for examples, the spectrum of traits is really much much broader and many traits have no name in common language or no precise name at all! Traits are very important, however, since it will always be easier to do this in accordance with your traits than "against your grain". So one very important part of personal development is to get to know yourself better and on a much more detailed level than simple categories like "introverted" or "hard-working" or whatever cliches our culture has to offer. Chade-Meng Tan in Search inside yourself calls this "high-resolution perception" and I find this term really appropriate. One key still to develop such a perception is to not categorize or judge experiences, but just see them plainly for what they are. Vipassana meditation is one method of learning this skill. Another method (or an additional method) could be to get feedback from many people with different perceptions and take each of those perceptions as a part of the truth without judging or categorizing it. (As you notice, this already requires the skill that you want to train, so some amount of meditation would probably be needed to get you started in the process.)
On the other side are your believes and this side is even more complicated. People usually separate believes into the categories of true or false and all your own believes are just what you consider true. However, many important statements are actually neither completely true or false and some are actually quite self-fulfilling: if you believe that you have a certain ability (or don't have it) then this influences your behavior in a way that makes your belief true. (Interestingly, positive believes (like "I can do this") are more likely to be true, since you will do that thing and then see whether you do it well or not. Whereas negative believes like "I can't do this" are much more self-fulfilling because you'll likely never sincerely try to do the thing.)
Trying to change your believes all by yourself is very hard because since you believes are just the things you assume to be true, there will be a lot of things which are really true (1+1=2, earth is round, ...) mixed up with things that might or might not be true. And what's more, of those believes that might be possible to change many are quite irrelevant to your goals. It's really hard to find one or two believes which are both possible to change and worth changing! Once you have found such a belief, then all you need to do is imagine a world in which this belief would not matter or its opposite would be true. Then you'll ask yourself what would be good actions to take in this world (actions that are not harmful in your current world, but beneficial in the other world) and you write down those actions and resolve to try them out. It's important to write down actions because in your day-to-day life you don't live in a parallel universe, so it would be very hard to remember those actions exactly as you planned to do them in the imagined world.
Once you've done the actions and see results that are beneficial to you, then your believe will start changing by itself. (This is not from Shir Nir's talk, but rather my naive understanding of cognitive-behavioral therapy.)
I think that the environment which you are in has a big influence on your believes and positive environments (like, for example, great company culture) can make a big difference in your life. However, this difference is also fleeting because you'll lose some or all of its beneficial effects once the environment changes again.
To create lasting change, in my opinion, there are only two ways: one is to have a really great personal coach, whom you trust and who uses the right method (and who understands you personally and who fits your style and whom you can afford, ...) and the other method is meditation. Meditation of course takes much longer, but it also creates very sustainable results. Meditation basically helps you become your own personal coach! Of course you can profit from having a meditation teacher, but in a way this is more like a train-the-trainer relationship. With meditation, it's always you who stays in control and you who's responsible. For your personal development. And for your life.