Settings

Theme

Can I really do it?

7 points by ahmgeek 11 years ago · 8 comments · 1 min read

Reader

it's something about Algorithms and problems solving. I've just graduated from computer science, crafted some CRMs and websites with microsoft stack, the problem is, although I'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'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'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't just leave this thing, my passion to it, drives me even if I can't be a real programmer.

* sorry for any typos

lovelearning 11 years ago

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 11 years ago

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 11 years ago

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 11 years ago

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 11 years ago

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 11 years ago

"...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 11 years ago

    > 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 11 years ago

What's a "real programmer"?

Just keep programming.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection