Thinking C++

Hi, I've been into C++ programming for some time now, but I need advice on how to think like a professional programmer.

Aceix.
Do you want to think like a professional, or do you want to think like someone who knows C++?

If you have read the tutorial on this website, your only option is the latter.

Have you tried contributing to any open source projects? It's good to be able to adapt to unfamiliar code bases and conform to styling conventions you are not comfortable with.
Last edited on
The main things I would say that seperates a professional programmer from a hobbiest programming is their knowledge of working in a team and other common things like good communication skills, solid work habits, professionalism, etc.

Professional programmers aren't always better programmers then hobbiest, in fact a lot of the time it can be the opposite. Don't get me wrong I am not saying professional programmers are bad coders (Though some are), instead just saying being a professional programmer has a lot to do with other aspects outside of coding.

So my advice would be to try and join a team project, contribute and get a feel for how a team development enviroment works. Like LB mentioned a open source project would probably be the best way to go, aim for something you like and I would probably stick to ones that are not just starting up in their development since they tend to go dead (The project that is) quite easily.
Last edited on
I think the Pragmatic Programmer is a good book to read to help you learn how to think like a professional programmer. I started listing things and then realized that most of them are strait out of this book.

Last edited on
Thank you all!!!
I'll work on participating in group works, and I'll have a look at the book.

Anyway, more opinions are needed!

Aceix.
Thanks for this forum post question !
Needed some guidance.
One big difference between programming as a student or hobbiest and writing professional code is the need for checking and handling errors. This is often harder than the "sunny day scenario" where all the inputs are just fine.

Another big difference is the need to log data about progress, errors, etc.
Professional programmers needs to get things done in time. That is the main difference between hobbysts and professionals. Proper architecture? Good style? Extensionability? Error-proof? All those thing does not matter when it is 19:00 now and at 09:00 tomorrow project should be finished, working and ready to deploy.

So, aside from teamwork, time management is a very important skill to have as developer. Or you will have manager with a whip constantly standing behind you.
While time management is vital, I don't agree that it in any way undermines good style or extensibility. Unless maybe in one of those "lean startups" that don't care about quality because they don't plan to exist long enough.

In my experience, a lot of time (half or even more of any given project I did on different jobs) is allocated for code reviews, for unit tests and for other forms of testing and integration, not even mentioning QA (they are typically their own departments with their own schedules). If it's due tomorrow morning and you're still coding, better let the manager know that it won' t be ready any time soon.

One thing I would say is characteristic of professional development, especially in the C++ world, is the personal responsibility. If a line of code has a bug and it causes loss of corporate credibility, client money, or even some factory worker's life (okay didn't happen to me quite so bad, but my code did hit someone on the head once and they sued), the person who wrote it and the person who signed off the code review bear responsibility. Sometimes it may not even be the code you wrote, but the code you inherited from years or decades ago: some programmer is always responsible for it, and he gets the call at night and an adjustment to the bonus.
Topic archived. No new replies allowed.