
Can I really do it? - ahmgeek
it&#x27;s something about Algorithms and problems solving.
I&#x27;ve just graduated from computer science, crafted some CRMs and websites with microsoft stack, the problem is, although I&#x27;ve programmed in C# and some other languages, most of my things were just for business, I never dealt with any algorithms, actually since August I&#x27;ve quieted microsoft things and started to learn C,
I love C really, but the problem is the Exercises, it takes too much to be solved,  I am so weak in problem solving, and this is the main thing in this career.
I don&#x27;t know where to go from here, I got some books, but the books aint teach me how to solve things,books like introduction to algorithms for example.
If i want to make it thorough these obstacles, how in your opinion should i proceed?
and should I really proceed ?
at this point i can&#x27;t just leave this thing, my passion to it, drives me even if I can&#x27;t be a real programmer.<p>* sorry for any typos
======
lovelearning
One technique that's worked for me is to first come up with questions in areas
_I 'm_ interested in.

Questions like "how does google maps implement route finding", "how does a
database implement its index", "how do I process images quickly on my
multicore machine", etc.

These are _my_ problems, so there is a lot of satisfaction waiting at the end
when they're solved by myself. I find them much more motivating than abstract
or contrived examples of the kind found in books or online judges.

So I come up with these questions. Then think about how to solve them naively,
using pen and paper. This may take days or even weeks. Then I start improving
the solution incrementally. I don't allow myself to be intimidated by any math
involved. Though I'm not great at math, I have developed a belief that all it
takes to become good at math is to persist in solving the problem no matter
how much time it takes.

Invariably, this technique ends up resembling one or the other algorithm out
there, but now I have developed intuitive understanding of it because I
arrived at it myself instead of reading

In the process, I also get exposed to new concepts in math and computer
science. I write detailed notes on these concepts too. Exploring these
concepts leads to exposure to even more concepts and _their_ algorithms. So it
becomes an ever expanding spiral of knowledge and practice.

By this process, I've become extremely comfortable with algorithms like path
finding and data structures like trees.

2 books that have helped me mainly because they are written in simple language
and make the topics seem approachable : 1) Polya's "How to solve it" which is
math oriented 2) Dromey's "How to solve it by computer" which is programming
oriented and inspired by Polya's book.

------
xpto123
And so what's the problem, why the focus on algorithms? Solving business
problems IS problem solving by creating an algorithm.

What is this idea of a real programmer, a real programmer likes to read
algorithm theory books or something?

I would say just keep coding and reading: blogs, books, conference videos,
attend conferences, etc.

Focus on a language and a stack to start with.

Find a job doing software development and leave if they put you doing
something else. You like the C# stack, there are plenty of jobs out there
depending on where you live. The Java stack is more popular around the world.

It will take three years of professional experience and lots of googling
around and stackoverflow (asking questions and giving answers) to feel
confortable in the software development role.

You will have this feeling that because you can't figure out XYZ you are not a
real programmer. Knowledge comes in layers, try to identify on the persons
around you that are seen as experts and try to figure out what they know that
you don't.

Then go ahead and learn it and unwrap that layer bellow, it will be easier
than it looks. Try to identify the 'bible' books in your area and read them.

Remember that it doesn't happen overnight, you can count three years.

------
aioprisan
The problem with CS training is that it is too focused on algorithms and
complexity analysis vs real world applications. Take the CS problem solving
with a grain of salt and don't get discouraged. Knowing how to build sort
algorithms or turning recursive algorithms into non-recursive ones, and
backwards, hasn't been required in my 8+ year career so far, but they are good
to know from a performance perspective and can help you when you're scaling
things out.

------
codemonkeymike
Its best to learn first what Algorithms are used were and why. Almost every
algorithm has its place, something I wish I knew before I took my first
programming class. This may seem like some trivia but employers like to know
that you know what solution to use for a problem. Also it will spark your
interest for actually programming a solution. Then just try to implement the
most mundane Algorithms, like bubble sort, by only reading what it does, not
the solution.

------
spotman
problem solving skill comes with experience dealing with real world problems.
sometimes school alone is only part of the equation. your problem solving
skills overlap with computer science knowledge, but they are also different
things.

passion is more important, because if you have passion then your passion can
take you from where you are now, to where you want to get to.

it takes time to become very skilled, even if you did excellent in cs. nothing
is as good as experience.

so if you are passionate about it, keep at it. you won't get there tomorrow,
but you'll know more than you did today. always try to re-evaluate what your
doing and if most of the time it lines up with your passion, your doing better
than a lot of people!

------
CmonDev
_"...actually since August I've quieted microsoft things and started to learn
C..."_ \- yes, that's going to help, since there is no way to write algorithms
in C#.

I mean how do you even write an algorithm if you don't need to manage your
memory? Also no pointers means implementing data structures is simply
impossible!

But the main reason to switch should of course be "Microsoft things" \- those
guys are sure pure evil, especially lately.

How about sticking with a language you know and starting a hobby project you
like? Works for many people.

~~~
ekr
> there is no way to write algorithms in C#

Sorry, but that's just bullshit. I'm a C programmer by trade (I program device
drivers), and love Linux/BSD/Unix and despise Microsoft, you can write any
algorithm you want in C#, or Java, and I'm not talking about Turing
completeness. (just recently as part of a school course, I had to implement
red-black trees in C# and Java, I could show you the source if you still don't
believe me).

C# and Java references work just as well as pointers when defining a tree node
for example.

------
davelnewton
What's a "real programmer"?

Just keep programming.

