I am a professional embedded systems developer. Depending on how far your knowledge is with computer architectures, it may be a steep uphill or a steady climb.
I recommend improving your C (not C++) programming skills. Understand more lower-level concepts like stack/heap memory allocation, calling conventions, know how your compiler generates the binaries for you (this is especially important for embedded systems). Once you have these basics down, I recommend trying to write device drivers. Get comfortable with that and then you can go to actually building your own minimal kernel for your target device (of course, understanding the kernel is also part of the process). Learning processors' assembly languages is also helpful (start with some RISC architectures like ARM).
These are just my personal recommendation. Depending on what your goals are (learning embedded just for fun, or to become a professional), you may not really need to learn all of the things I mentioned.
I want to become a professional programer but I dont know if embedded systems is good way for me. Its hard to find out which way is best. My computer architectures knowledge is poor, I understand pointers and stack/heap memory allocation. Should I look at books or tutorials are enough?