Jump to content

Am I not good enough to become a programmer as a career?

pipnina

I have had an interest in computers since the first day I used one, pulling my family's first computer apart when it was no longer needed, breaking them on a software level, and towards the end of my secondary education self-teaching simple programming languages like Python and simple C++, as well as gaining some experience with Linux systems via a raspberry pi.

 

Even though I am (even based on my lecturer's words) the best programmer in the class, I feel like I am such a ways off being any use to an employer and attaining a level of knowledge needed to succeed in a programming career.

I look at job listings and see that I have no expertise deep enough in any field that'll make me useful to an employer. Despite trying to teach myself things in greater depth that college has or will teach me, I do not feel like I will even be close to job-ready by the time my degree is over.

 

Is anyone here a programmer by profession? How much do you need to know to become employed? How did you learn it all?

Link to comment
Share on other sites

Link to post
Share on other sites

Nobody enters a career being the best. It takes hard work and confidence. 

Cor Caeruleus Reborn v6

Spoiler

CPU: Intel - Core i7-8700K

CPU Cooler: be quiet! - PURE ROCK 
Thermal Compound: Arctic Silver - 5 High-Density Polysynthetic Silver 3.5g Thermal Paste 
Motherboard: ASRock Z370 Extreme4
Memory: G.Skill TridentZ RGB 2x8GB 3200/14
Storage: Samsung - 850 EVO-Series 500GB 2.5" Solid State Drive 
Storage: Samsung - 960 EVO 500GB M.2-2280 Solid State Drive
Storage: Western Digital - Blue 2TB 3.5" 5400RPM Internal Hard Drive
Storage: Western Digital - BLACK SERIES 3TB 3.5" 7200RPM Internal Hard Drive
Video Card: EVGA - 970 SSC ACX (1080 is in RMA)
Case: Fractal Design - Define R5 w/Window (Black) ATX Mid Tower Case
Power Supply: EVGA - SuperNOVA P2 750W with CableMod blue/black Pro Series
Optical Drive: LG - WH16NS40 Blu-Ray/DVD/CD Writer 
Operating System: Microsoft - Windows 10 Pro OEM 64-bit and Linux Mint Serena
Keyboard: Logitech - G910 Orion Spectrum RGB Wired Gaming Keyboard
Mouse: Logitech - G502 Wired Optical Mouse
Headphones: Logitech - G430 7.1 Channel  Headset
Speakers: Logitech - Z506 155W 5.1ch Speakers

 

Link to comment
Share on other sites

Link to post
Share on other sites

My cousin is currently really well employed full time as a programmer, he got his bachelor of computer science and AFAIK he just worked several entry level/poor paying/startup jobs until he had enough experience to net a "real" job. Took him 2 or 3 (maybe 4?) years but now he makes bank.

Want to custom loop?  Ask me more if you are curious

 

Link to comment
Share on other sites

Link to post
Share on other sites

Even getting a university degree will only get you into entry level programming jobs unless you're one of those special people who are extremely good.

As long as you're fine not working at google, just keep working on it and you will eventually know enough for a starting job.

Just make sure you enjoy it before putting tons of work into it.

NEW PC build: Blank Heaven   minimalist white and black PC     Old S340 build log "White Heaven"        The "LIGHTCANON" flashlight build log        Project AntiRoll (prototype)        Custom speaker project

Spoiler

Ryzen 3950X | AMD Vega Frontier Edition | ASUS X570 Pro WS | Corsair Vengeance LPX 64GB | NZXT H500 | Seasonic Prime Fanless TX-700 | Custom loop | Coolermaster SK630 White | Logitech MX Master 2S | Samsung 980 Pro 1TB + 970 Pro 512GB | Samsung 58" 4k TV | Scarlett 2i4 | 2x AT2020

 

Link to comment
Share on other sites

Link to post
Share on other sites

I don't have any really good advice, I'm only in high school.
I just wanted to wish you luck, I hope things go as best as possible for you ^_^

Doge wants you to grow just like him
doggo-jpg.262867

Link to comment
Share on other sites

Link to post
Share on other sites

not everyone gets to work in the field they studied for. Its not just ability its also personality. Tech companies know they can teach technical skills but they cant fix personality clashes.

Just get a job and study what ever pathways are open in the company you work for.

I switched industries via university study during the GFC only because i was out of work and no one was hiring. An education does not open doors you hope it does unless you score a scholarship that includes an internship.

             ☼

ψ ︿_____︿_ψ_   

Link to comment
Share on other sites

Link to post
Share on other sites

Currently my career is software development. Though not in the glamorized Silicon Valley life or the grudge of crunch time at a video game development. I've been at it for 8 years or so now (and now I feel old). Here's what I've picked up over the years that I think are useful for those who want to make software development a career.

  • This applies for jobs in general, but it's more important who you know than what you know. Make connections where you can, either at school, in your circle of friends (if they are in similar fields), at job fairs, or social media like LinkedIn. I was hired on most of the jobs I took because I knew someone who could get my foot in the door. The company I work for literally gets hundreds of thousands of applications in a hiring period for maybe a dozen positions. Connections are what help cut in line and get noticed sooner. And if those connections can vouch for you, even better (but make sure you can actually do what they vouch for)
  • It's important to know how to do something. While job interviews are a lot about trying to see if you'll fit in with the team, it'll be your potential supervisor, leads, and colleagues who want to see how you think. If they see you struggling with a basic problem, then it doesn't matter if you can tell them what a advanced technical thing is. Software development and engineering is about solving problems, not about regurgitating what you can find on Wikipedia.
  • Do you have something to show off? In my case, I had my classes I took at school, then when I got laid off and had to look for another job, it was the accomplishments I did on various projects. Things like development something that the rest of the team uses or assembling something together for a customer demo to win a contract. In your case, even if you have something that you think looks dumb, as long as it's related, show them anyway. It helps your employers figure out how you do things.
  • How quickly can you pick up on something? Do you know how to ask the right questions? You will be looking at someone else's code. You will be diving into things you may have never touched before. For instance, I never touched Python until I was a few years into my first job. But I had to learn it because something needed to be fixed.
Link to comment
Share on other sites

Link to post
Share on other sites

8 hours ago, pipnina said:

I have had an interest in computers since the first day I used one, pulling my family's first computer apart when it was no longer needed, breaking them on a software level, and towards the end of my secondary education self-teaching simple programming languages like Python and simple C++, as well as gaining some experience with Linux systems via a raspberry pi.

 

Even though I am (even based on my lecturer's words) the best programmer in the class, I feel like I am such a ways off being any use to an employer and attaining a level of knowledge needed to succeed in a programming career.

I look at job listings and see that I have no expertise deep enough in any field that'll make me useful to an employer. Despite trying to teach myself things in greater depth that college has or will teach me, I do not feel like I will even be close to job-ready by the time my degree is over.

 

Is anyone here a programmer by profession? How much do you need to know to become employed? How did you learn it all?

It all depends on your true level of skill, which is impossible to gauge from a small forum post, and the skill level required by your potential future employer.

I'm a cross platform C/C++ programmer myself with a strong embedded focus, and over the years I've found:

  1. You'll be going trough existing code a lot. Updating, refactoring, debugging and maintaining existing projects is probably the more common work in many fields over developing brand new projects.
  2. Thorough knowledge of programming patterns is required, regardless of language used. If you don't understand common design patterns you won't recognize them and you'll have a hard time understanding existing code. which is important regarding point 1.
  3. Thorough knowledge of the main languages involved is required. You can look up some things from time to time, but too large a knowledge gap in the languages finer nuances also makes it hard to understand a large existing project, again regarding point 1. When you master a language you'll also get a better nose for code smells, which greatly helps debugging. C++ is like an onion. Most ppl only see the outer shell and quickly think they mastered the language, unaware of the behemoth that lies beneath.
  4. Many languages, like C++, evolved a lot over time. Some projects have a lifetime of decades. You might need to know how older versions of the language worked and older design patterns, even ones that have been discarded today, if ordered to work on such a older project.
  5. For "close to the metal" languages, like C/C++, knowledge of the "metal" is required as well, that means assembler, even on a basic level. I might get some flak saying this from ppl shouting assembler is no longer relevant. It most certainly is. You'll be spending a lot of time (most?) debugging - and some bugs can only be found effectively by studying the emitted assembly code (#).
  6. Some employers will allow a lot of leeway in learning on the go and growing while others will expect a potential hire to be up to scratch from the get-go. You might want to pick a job at one of the former, even if you don't really like the field they operate in or the pay is bad. You'll learn a lot, especially working on large (sometimes huge) projects with multiple ppl, something you don't really learn in school, where the average project/exercise is tiny. You can always switch jobs later, with a better CV.

As for how I "learned it all". I hardly know it all - and the things I do know I had the fortune of being able to learn "on the go" as the language evolved over time as I've been at it for a long time.

 

#: As a practical example - We updated a project recently that had been running correctly for years. After our update, some totally unrelated part of the project broke. Turned out our predecessors forget to make a certain variable 'volatile'. It did not cause any problems for years up until we made our change, which caused the entire project to be rearranged just enough by the compiler that some important writes to that variable in a loop were now being optimized by caching in a CPU register. Since that variable was used to exchange information with a interrupt service routine, the caching broke the code. But only in release mode, as said optimization was not performed in debug mode (this is called a heisenbug). One can only effectively trace such bugs by combing trough the assembly.

Link to comment
Share on other sites

Link to post
Share on other sites

To help you in your respective field, I will suggest you to start making programs with your current knowledge that are interesting in such a way that may help other people  aswell. Build a strong Github profile, because if you make a strong profile and get a degree, trust me you can get a job in just any major corporation. Let it be Microsoft, Google, Facebook or whatever you wish.

 

 

BTW, one should never be loyal to corporations because all they care about is when you will deliver their work, they dont care about you.

Link to comment
Share on other sites

Link to post
Share on other sites

Keep checking for work (whether it be Fiverr or some company) as you expand your programming languages. With how many mobile apps and software packages coming out these days you'll be sure to find work eventually.

Link to comment
Share on other sites

Link to post
Share on other sites

Every application is different, just how you read in these posts. Some say it depends on your skill the others says something whole different.

When I Applied for a Internship i got a bit of behind the scene's. That company did not care about how great your code was or how you solved it. Aslong you did it within a respected time period, I dislike this kind of thought.

 

Then there are companies where they respect that somethings take some time to solve, and they care about how you solve it because it has to be of quality.

 

There are way to much different "flavors" of companies that hire, the best thing is to react to the one's to stand out the most and specially learn as much possible in the fields you have passion for. Get as much information out a intake and prepare yourself.

Quote or mention me if not feel ignored 

Link to comment
Share on other sites

Link to post
Share on other sites

On 28.8.2017 at 2:19 AM, pipnina said:

Python (...) Linux systems

No, you are not good enough.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

8 hours ago, Erik Sieghart said:

I write python professionally on Linux systems.

Isn't python basically the 2nd most used interpreted language behind javascript?

Link to comment
Share on other sites

Link to post
Share on other sites

On 8/28/2017 at 1:19 AM, pipnina said:

I have had an interest in computers since the first day I used one, pulling my family's first computer apart when it was no longer needed, breaking them on a software level, and towards the end of my secondary education self-teaching simple programming languages like Python and simple C++, as well as gaining some experience with Linux systems via a raspberry pi.

 

Even though I am (even based on my lecturer's words) the best programmer in the class, I feel like I am such a ways off being any use to an employer and attaining a level of knowledge needed to succeed in a programming career.

I look at job listings and see that I have no expertise deep enough in any field that'll make me useful to an employer. Despite trying to teach myself things in greater depth that college has or will teach me, I do not feel like I will even be close to job-ready by the time my degree is over.

 

Is anyone here a programmer by profession? How much do you need to know to become employed? How did you learn it all?

I am a software developer for a company and just graduated this summer. The basics which you need to know at least are the fundamentals such as OOP/SOLID principles and will be handy to be aware of certain design patterns.

 

Normally speaking to program is not how much you can remember in regards to the syntax itself but more being able to take a problem and solve it to certain standards regardless if you have to look up certain things or not.

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/1/2017 at 7:31 AM, Dat Guy said:

Only if you're under 20.

BASIC is interpretive too right? (From Commodore 64, and Apple 2 computers?) 

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/1/2017 at 4:29 AM, pipnina said:

Isn't python basically the 2nd most used interpreted language behind javascript?

And even then it's kind of hard to call Python a purely interpreted language and more of a JIT language since often times Python scripts are precompiled into bytecode.

Link to comment
Share on other sites

Link to post
Share on other sites

21 minutes ago, M.Yurizaki said:

And even then it's kind of hard to call Python a purely interpreted language and more of a JIT language since often times Python scripts are precompiled into bytecode.

It seems to me the fact that a language is compiled or not is too often used as a measure to indicate 'speed'. Ppl seem to rush in to defend languages like Java and Python with comments like "Our language can be compiled too!" or "We have JIT". As if compilation is the sole fact that defines speed and efficiency.

 

I've seen interpreted C programs (yes; that exists too) beat the pants of compiled Python.

The far more important part is the fact that languages like C allow for far more undefined behavior. One might frown and wonder why that would ever be a good thing. It's a good thing for speed and efficiency because it allows for optimizations and less 'hand-holding'.

 

Take the simple fact that accessing a array out of bounds in C results in undefined behavior. The standard simply says "don't do that", and nobody can define in advance what will happen if you do (nasal demons, anyone?). Python, on the other hand, seems to have some IndexError exception when a out of bounds access occurs ? (I'm no Python programmer, feel free to step in, but even so I think you'll get the point I'm trying to make when this is done). 

 

Think about what that means for the implementation. It means each and every array access in Python must be checked for a valid index first, that's the only way one can implement a language that defines out of bounds access, by checking before the access. That is slow, plain and simple, compiled or not. In some tight loops the checking is more work then the actual work that needs to be done.

 

By not defining this situation, C allows the implementer to simply forgo any such checks and just "trust the programmer". And that's a crucial step to runtime speed, as a trade off to some development speed, as you'll probably have some more debugging to do. (Although much can be mitigated with proper tools and procedures).

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

If you are worried about getting a job at the end of your degree, look into an internship.

 

The entry requirements are lower usually, since you are only competing against other students and the companies can't expect the world from you.

Then, once you get to one you'll get a full year of experience, both in learning the style of work your sector does, as well as just straight experience in a working setting.

 

Plus, you'll get more an appreciation of how stuff works in job.

University teaches you a tonne of things, but in a job you aren't using it all instantly, at least not coming in at a junior level.

You learn all this complicated stuff for in-depth implementations of algorithms etc, which are definitely useful....But they aren't especially used straight away.

A normal company is going to bring you in, give you a tonne of training on the tech they use, then sit you next to a guy to ask questions to for a bit whilst you slowly work through bug fixes and small feature implementations. Then after a bit you are asked to do some bigger features since you know your way around, they trust you a bit more. Maybe a new project starts up a bit later and you start to get experience at the start of a project, but again with a few more senior people around you. That carries on and you build your experience up as you go.

 

The reality is, is that you can teach it yourself a bunch but it won't truly stick unless you are using it for real on a job everyday. And you are learning things that you won't use for the start of your programming career. 

Learn all the basics, and have an interest in the area and you'll get a decent job. Then they'll teach you the rest when you get there. And don't ignore the rest of your life whilst you do that, since companies want someone who fits with their company, not just the best programmer. 

 

I've just finished my degree in Comp Sci, then did a year out in an internship which just finished before my masters starts in a few days, so if there is anything else I can help with, I'll try to.

CPU: 6700k GPU: Zotac RTX 2070 S RAM: 16GB 3200MHz  SSD: 2x1TB M.2  Case: DAN Case A4

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×