Allegro.cc - Online Community
Post Reply

Allegro.cc Forums » Allegro.cc Comments » Possibility of internship?

rss feed Print
Possibility of internship?
Doctor Cop
Member #16,833
April 2018
avatar

I was searching for a roadmap to become a C/C++ developer but couldn't find any.
I am still searching for it and it's been three years since I started programming but still I don't know how much I know and how much am I supposed to know.

can anybody help me in figuring it out, or if you can be so kind and give me the entire roadmap to understand the commonly used tools and technologies in C/C++?

Also I wanted to ask if allegro gives internship, many students have asked me where they can apply for online internships. I told them to go for GSoC but I myself feel a bit discouraged from applying there and they feel the same. It has become so competitive that it's almost daunting to apply there. with this fear they don't even dare to apply.

P.S: Feels good to be back again in the forums!

<edit/>
Please correct me where my English is incorrect or could be better, I want to improve.

bamccaig
Member #7,536
July 2006
avatar

I recommend overcoming your fear and applying for GSoC anyway. If you don't take risks you will end up in a stressful job with poor compensation and no job security. Worst case you try GSoC, and you find you were not up to the task. But I doubt that will be the case. You should get mentorship and they'll understand you're inexperienced and help you along the way. It'll be good experience coordinating with a team, you'll meet a few people, and hopefully get your foot in a door too.

Getting a professional job in C++ is probably difficult if you don't already have lots of experience. C++ is a horrible language, and as such the professionals that write and maintain it need to be very experienced. I imagine most job postings for C++ would be asking for many years of professional experience already.

A good way to gain experience is by joining an active open source project, and contributing changes to the code. A good project should be doing code review before accepting your changes, and they'll teach you things along the way. It will still take years though to get skilled at it! There's no better way to get skilled at something than doing it though. Reading about it is no substitute for actually doing it, and doing it on something that matters!

You could always offer to work for a company that needs C++ programmers extremely cheap, and work your way up. But that goes back to my first point: you can end up trapped in a horrible working situation with a job that you hate and nothing else to fall back on. If you're still young this is especially the time to take risks. :) Even just doing a CV and going to interviews is a skill in itself that takes a lot of practice to be good at, and if you aren't good at it then you'll be afraid to make a move to get your career where you want it. My advice is to TRY and see where that gets you. :)

Please correct me where my English is incorrect or could be better, I want to improve.

Quote:

I was searching for a roadmap to become a C/C++ developer but couldn't find any.

I am still searching for it and it's been three years since I started programming but still I don't know how much I know and how much am I supposed to know.

There should almost always be a comma before "but", and you should say "I am" instead of "am I":

I was searching for a roadmap to become a C/C++ developer, but couldn't find any. I am still searching for it and it's been three years since I started programming, but still I don't know how much I know and how much I am supposed to know.

Quote:

can anybody help me in figuring it out, or if you can be so kind and give me the entire roadmap to understand the commonly used tools and technologies in C/C++?

Remember to always capitalize the start of every sentence (exceptions can be made when referring to a case-sensitive code symbol, but in normal English there is no exception).

Can anybody help me...

Quote:

Also I wanted to ask if allegro gives internship, many students have asked me where they can apply for online internships.

This is two separate sentences so you should separate them with a period instead of a comma:

Also I wanted to ask if allegro gives internship. Many students have asked me where they can apply for online internships.

You may also want to capitalize Allegro because it is the name of something, but informally it's acceptable all lowercase. I prefer to say "I also" instead of "Also I", but I don't know if one is more correct than the other. Both work, especially in informal circumstances.

Quote:

I told them to go for GSoC but I myself feel a bit discouraged from applying there and they feel the same. It has become so competitive that it's almost daunting to apply there. with this fear they don't even dare to apply.

Same problems again: comma before "but", and capitalize your sentences:

I told them to go for GSoC, but I myself feel a bit discouraged from applying there and they feel the same. It has become so competitive that it's almost daunting to apply there. With this fear they don't even dare to apply.

"With this fear" is a bit odd in English. It works, but it's clear you are not a native speaker. I would say, "They are so afraid that they don't even dare to apply."

Quote:

Please correct me where my English is incorrect or could be better, I want to improve.

This is again two sentences.

Please correct me where my English is incorrect or could be better. I want to improve.

Alternatively, you could also fix it by using "because" instead of the comma:

Please correct me where my English is incorrect or could be better because I want to improve.

P.S. Your written English is already quite good. I can understand you just fine. The real question is how good are you at speaking it? Professionally if you are going to work for a team that speaks English then they will likely want to have voice conversations with you from time to time, unless they are an open source team that operates mostly online. If they do need to speak with you verbally then it's important to practice that so that you can enunciate words fully and be understood. From my own experiences talking with Indian developers some of them are very easy to understand and others are almost impossible to understand. For some of them it seems natural, and others need to try really hard to be understood. If they are tired or lazy, it becomes complete gibberish to my ears.

RmBeer2
Member #16,660
April 2017
avatar

Hello, welcome to the Allegro community. :)

I don't understand what you mean by roadmap in programming. If what you want is to learn faster, this is achieved with practice and passion. Make time to dedicate yourself to programming, propose your own exercises or goals and fulfill them, all the small achievements will motivate you and want to do more. But there is no magic solution, depending on the talent or passion that you have it can take more or less time.

╔═══════════════════════════════╗
╫ 🌟 Web of BlackRook 🌟 Patreon 🌟 YouTube 🌟 ╫
╚═══════════════════════════════╝

Doctor Cop
Member #16,833
April 2018
avatar

Thanks, bambam.

I am very grateful to you that you showed me my mistakes and how to improve them.
I will follow them wholeheartedly.

bamccaig said:

Getting a professional job in C++ is probably difficult if you don't already have lots of experience. C++ is a horrible language, and as such the professionals that write and maintain it need to be very experienced. I imagine most job postings for C++ would be asking for many years of professional experience already.

I am learning C++ so that I can use it to speed up Node.js programs. Streaming services and mission critical tasks need C++ to be used in Node and that's where demand for C++ developers having good knowledge of Linux shine the most (at least that's what it seems to be).

I am making a personal project for my portfolio. I haven't started working on it yet.

Quote:

If you don't take risks you will end up in a stressful job with poor compensation and no job security.

Yes, I'm working in such conditions. My college teachers suggested me to work in a startup to gain experience. When I applied there they also wondered why I came to them instead of MNCs.

RmBeer2 said:

Hello, welcome to the Allegro community.

Thank you.

Quote:

I don't understand what you mean by roadmap in programming.

It's something like this!
I hope you will be able to help me.

Edgar Reynaldo
Member #8,592
May 2007
avatar

You probably won't find a C++ roadmap, because there isn't one. There are lots of facets to C++.

If you're comfortable with all the topics here : http://www.cplusplus.com/doc/tutorial/

That's up through C++11. Then there's C++14, 17, 20, etc...

Then you might want to move on to more advanced topics like lambdas and multi-threading.

There's a high demand for embedded systems engineers, and experience with C and C++ can help.

Allegro is not incorporated. Working for Allegro would mean being a developer's code monkey, and you'd have to get someone to walk you through it. An internship with Allegro sounds cool, but is not very practical unless you can find someone willing to mentor you.

Doctor Cop
Member #16,833
April 2018
avatar

Edgar, you mentioned mentor, is it necessary to get a mentor to learn C/C++?
I have tried to apply for a Job but they refused me saying that I don't have industry experience. I asked them "what can I learn here that I can not learn outside of this job?" and they stopped responding to my messages. I have been wondering, what can I learn only at Job that I can not learn otherwise?

Like, there are GitHub projects such as Godot, phpredis that I follow and often try to understand their code-base and design methodologies. What is that they can't teach me but a Job can?

<edit/>
Please note that I'm asking about experience in C++ according to be used in Node.

DanielH
Member #934
January 2001
avatar

"Experience" as in an actual job for some time before they will look at your application.

It's the standard issue

You need experience so you need a job
You can't get a job because you have no experience.

Internships are good because they either don't have to pay for you or they pay less than a normal employee.

bamccaig
Member #7,536
July 2006
avatar

You learn a lot more by "doing", and you do a lot more in a work environment where you have no choice versus a volunteer basis where you can choose how much time and effort to commit to the project. You can gain the C or C++ experience by joining a project, but to do so you'd have to work on the project full-time 8 hours a day, and answer to somebody from the project who will assign you work and ensure you are getting it done in a reasonable amount of time and with reasonable quality.

As I said, C++ is a horrible language. C has its issues too, but is simpler so there are fewer of them. Working on projects full-time for months or years you will inevitably run into those issues. Bugs/vulnerabilities because you're human and you missed something or just did something wrong. There are also many non-code related things that you'd learn from working with a project or company. You learn communication skills, you learn to avoid politics with your colleagues, and other things of that nature. Things that you just won't experience hacking away on toy projects by yourself. You can learn many of these things helping out an open source project, but ONLY if you become a full-time developer with them long term. Which means you need to convince THEM that you have enough experience for that. In reality, you probably don't. So similar to the job scenario you're going to have to "crawl before you walk" and prove yourself to them somehow before you can even start getting the real experience. :(

Doctor Cop
Member #16,833
April 2018
avatar

But I already have experience in Node.js, but I don't have professional experience in C++. By the logic that you have given to me, I would need to apply for a C++ developer job and after gaining experience in C++, I would need to switch back to node if I want to develop in Node with C++?

That seems BAD. I wanted to learn C++ so that I can use it in Node and stand out in the crowd. It seems like I would be using C++ for personal use only for now. If my current employer would need a C++ developer in any project then I would volunteer, but I'm not changing my Job just to gain professional experience in C++.

I was hoping for a salary hike, but I would ask him directly rather than quitting my job and do an internship in another company.

<edit/>
Please help me in improving my English by showing me my mistakes and any improvements I can make.

jmasterx
Member #11,410
October 2009

I'm not sure why you're so technology centric.
I value more:
Good work environment/Team work/Good attitude
Good management that understands AGILE
No overtime (see agile triangle of time, resources, features)
Good salary/benefits/working conditions
Interesting projects

If my boss says tomorrow, we got a 5 million dollar project but you need to learn Go, I'll learn Go.

Doctor Cop
Member #16,833
April 2018
avatar

I agree, I just want to be a better software Engineer. If a certain language can give me advantage over a set of technologies then I'm ready to learn it.

C++ is a crucial language in case of Node.js because of it's limitations.
Well, now I have dropped the idea of finding a Job where I can utilize my C++ skills in Node.js, because I will be using it in my personal projects only (for now).

For carrier growth I'm looking back to PHP because of it's recent comeback and it's standards are becoming better. For a lot of years PHP was strong in CMS but now it's strong in MVC too. The number of jobs in PHP has grown a lot and it's easier to learn too.

I didn't thought that PHP will make a comeback, but it really did and a real strong one.

jmasterx
Member #11,410
October 2009

If you can show that you can make good quality, well tested code, that is maintainable, and you can show that you have good, creative ideas, you are open minded, a good team player, hard worker, open to learning new technologies, then that, in my books is what will make you stand out. I honestly don't care if you know C++17 by heart... sure, for a C++ firm that's an asset, but the other stuff I mentioned, to me, are requirements. Many places will need you to know basic computer science questions too... thread vs process, concurrency pitfalls, virtual memory, time complexity, recursion, data structures, etc

I don't care if your hobby projects are in Java, python, Node, JS, TypeScript... if I have a quick glance and I see on GIT you have CI/CD set up https://en.wikipedia.org/wiki/CI/CD your master branch always builds, the tests pass, you have a nice backlog and you seem to follow some form of scrum or kanban or similar in your personal projects, that's huge, once again, not caring at all about language choice.

I can teach you a new language (and I can even teach you English), but I can't teach you how to learn, be organized, be autonomous in a code base, think critically about problems, find creative solutions, etc.

If I also see you making regular contributions to Open Source projects, it at least shows me you have some skills working in virtual teams. But nothing beats sitting in an office and hearing the coffee machine run 30+ times a day.

Speaking from personal experience, I learned VB .NET, then C++, got an internship in SQL with no SQL experience, got an internship in ASP .NET C# with no C# experience, got an internship in Objective C with no experience in that, I learned on the job. Then finally got a job in C# and I had to work with some managed C++, which I learned on the job too.There, I also had to learn Ruby/RoR framework in about a week. I also then had to learn TypeScript. Now I work in a place where I do a lot of C# and WPF/XAML, which I learned on the job too. I've also needed to dabble in F# to maintain some programs.

Polybios
Member #12,293
October 2010

I'd like to add that the path to be able to write

jmasterx said:

good quality, well tested code, that is maintainable

is very likely to involve good knowledge of at least one major language and a very solid understanding of basic and advanced programming language concepts. Above all, it seems to require the determination to continuously improve your code and skills ("it works" is not enough).

It's not going to involve PHP, though. Only supreme losers use PHP. >:(

In consulting, clients usually really liked people who could see the forest for the trees and who could provide critical feedback and further input to client's requirements, guiding them to what they really wanted ( ;D ), instead of just implementing what they initially came up without asking further questions.

bamccaig
Member #7,536
July 2006
avatar

The problem is that there is no One True Way(tm) to judge the competence of a programmer in a few meetings. Recruiters and managers all have their own voodoo for determining who is good and who is not, and most of the time they eliminate good candidates for no good reason. In reality, there is no way to know if somebody is a good candidate within a few hours of meeting them. You need to see them actually work, see the quality that they put out over time, etc.

Some people are sloppy with code quality (which drives me nuts), but on the other hand can be very quick to figure out difficult problems and come up with working solutions. In an ideal world you wouldn't need that because production is perfect and nothing ever goes wrong. In the real world, it seems to be needed much more frequently. I think that in terms of code quality you can fix lazy programmers with strict rules and mandatory code review. As much as I'd like to think that I could judge the quality of a programmer by the appearance of their code experience has taught me that it's not as simple even as that. Append: I think you should judge by somebody's willingness to change though. If somebody is resistant to improve their code, or routinely repeats the same errors and needs to constantly be hounded to fix it then I'd say bad candidate and should be ousted. That said, I don't think you are likely to discover this during the interview process. That's something you'd likely discover after a few weeks or months of working with them.

As for CI, that's really neat, but that seems like a really good way to impress yourself with an unimpressive candidate. That, like learning a language, is something that anybody can pick up given the time to do it. While it's a nice to have, it's certainly not critical. The vast majority of repositories setup with CI probably rarely change, and/or are contributed to by a single developer from a single machine. ;D It's probably a waste of resources for those projects. Those resources could instead be donated to house and feed the poor or something. :P Zero of my personal projects are worthy of that kind of infrastructure and so none of them have it.

AGILE is sort of the same thing. You can teach anybody to use AGILE. It's not difficult. And a single developer's knowledge of it will be largely based on their past experiences doing it. Contrary to what they'd have you believe in university or college it's not some well defined methodology that everybody is doing exactly the same. If you visit 10 different companies you will likely see it being exercised 10 different ways with mixed results. Judging somebody for their ability to rhyme off AGILE terminology or describe the process expecting them to match your own perfectly would similarly eliminate good candidates for no good reason.

Unfortunately, because nobody has yet come up with a perfect way to judge candidates everybody still uses their own made up ways that are far from perfect. They often result in bad hires, and often deny good people good jobs for no good reason. And so you end up with really good candidates working in really shitty jobs. That's the reality of our world.

Doctor Cop
Member #16,833
April 2018
avatar

jmasterx: I agree with you, I am following PHP-FIG. I try to follow industry standards as much as possible.

Polybios: I agee with you, but not with this->

Polybios said:

It's not going to involve PHP, though. Only supreme losers use PHP.

PHP pays the bills so I don't care what people call me and People have been saying this for almost 30 years already, but PHP has maintained it's position all these years. At First Ruby was going to replace PHP, then Pearl, then Python, and now The backbone of the WEB itself JavaScript is supposed to replace PHP. Truly everyone believed that PHP is now done for, but it bounced back.
I am still in shock!

Some are saying that Go will replace PHP in future, but I don't care anymore.

Quote:

In consulting, clients usually really liked people who could see the forest for the trees and who could provide critical feedback and further input to client's requirements, guiding them to what they really wanted ( ;D ), instead of just implementing what they initially came up without asking further questions.

I take your advice to heart, but I believe that it will come to me with experience!

bamccaig: I can't describe my appreciation in words, what you have done is amazing.
You have put every point of view in process in one comment of yours, by which I could introspect and reflect on my views regarding interview process. Now I will try to describe myself to interviewer better, so they can evaluate my abilities better.

bamccaig said:

Unfortunately, because nobody has yet come up with a perfect way to judge candidates everybody still uses their own made up ways that are far from perfect. They often result in bad hires, and often deny good people good jobs for no good reason. And so you end up with really good candidates working in really jobs. That's the reality of our world.

So, true.

Post Reply
Go to: