I work for a telecom company as a programmer with a few years of programming experience; I'm self taught. However I feel there's no clear direction for me. Nobody to look up to as I'm considered a top notch programmer within the company. I feel inadequate, suffers from the impostor syndrome and I wish there were other programmers I could look up to and communicate with as well as work on projects to gain more experience and become a better programmer. Any ideas.
My friend, that is some real content. I know what it's like to be seen as the master h4x0r when writing a basic existence check in vanilla JS, making stuff happen on a screen, blowing in a cartridge or locating a printer's power button. It helps me to get a little more serious when I do have to reject it, like "no, I'm not being modest here... I appreciate it, but I promise you this wasn't an impressive thing."
I have the opposite problem at work, though. The difference there is that the "top-notch programmer" at my current job, who is pretty good but not God's gift to CompSci, is not just perceived to be the best by others, but also believes so to his core / betrays an assumption of superiority every day, and consistently teaches me things that he knows I already know. One time he taught me all about a data model I created just two weeks prior. He understood it mostly, so that was good to hear, but it was so difficult for me to interject and gently nudge the conversation closer to what my actual question was. We are "equals" on paper, but he claims to make twice as much and is closer in age (by far) to our manager. If the manager hears that I am having a spirited debate with said colleague, I get in some trouble, despite neither of us thinking there was anything harsh about anything said during any such discussion. It is confusing.
He is an excellent friend, but has claimed himself to lose interest in learning more than need be way before he graduated, or even started, formal studies. Seriously, you ought to take pride in the simple fact that you know you could be doing something better, cooler, or harder. That doesn't exactly sort out your future, but it speaks volumes about your character and mindset, and it shows that likely are among the better candidates in a great deal of opportunities. Perhaps a change of scenery would solve it? That is, changing companies and joining a team where there are programmers senior to you and helping you learn. If that is your MO, then you may achieve it in a snap like that.
Otherwise, check out some open projects. What looks neat to you, tech-wise? Any websites making you wonder how they work? Music visualizers blowing your mind? Pull something apart, continue to self-teach, and realize that self-teaching isn't you teaching you; it's you learning from others' documentation and code. But if you begin pulling apart some open projects, you may then find ways to improve them, and then you'll perhaps be itching to contribute. It sounds like what you need is a challenge, not so much another superior or a more senior programmer to come and show you how code really looks. That person might not exist in your context. For all I know, you're doing some pretty challenging stuff, but suffer from illusory inferiority. So long as it's not the opposite... :-) Alright, not trying to be like the people you posted about.
Whatever the case, stay humble. That is an excellent trait, and coupled with your apparent thirst for knowledge and search for some means to improve with no immediate personal projects, I'd say you're going far and may have a good opportunity to be selective in your work. Not all have such a luxury!
Hey there and congrats on a good first question!
I second what Hipkiss says. Hashnode is a great place for people like you - and me. I am in the same situation, even though I work for a big company, I don't have anyone able to mentor me - however I have to mentor others and bring them up2date with patterns, algorithms, practices and additional knowledge.
Most of my skills are self-taught and confirmed via my B.Eng., however I also had imposter syndrome (and still sometimes have it), so Hashnode helped me a great deal to always verify my knowledge. I write answers and articles and read what others have to say. Seeing everyone agree with me on many topics really reassures me a lot - and whenever there is a problem with my knowledge, people chip in and correct me or add fresh ideas, which helps me grow.
I love the Hashnode community for being friendly, open and helping me gain something I would not get anywhere else! So I hope that you will be able to make the same experience; just go ahead and write questions and answers, we don't bite!
Being on hashnode is a good start bud!
There is a theory that one should have 1/3 1/3 and 1/3 in ones life. 1/3 of people who you can see as mentors, 1/3 who are on the same level as you and a final 1/3 who are below you and can mentor.
This is the point where you need to be disciplined and choose a direction to go in. Pick an idea in your head and choose a language/framework/design pattern/other to execute that idea. Converse with people online about it and yours and their experiences.
My personal suggestion, having built a telecom company is go look at webRTC. You could join some open source projects and build up a reputation when submitting code - helping the developer community in some small way, a bit at a time.
It's the inchworm. tl;dr recognise the skills you have - ones you do well, ones you do ok with and ones you're crap at and then improve them all; pulling yourself along to constantly improve. Remember to occasionally stop and recognise your achievements though and how much you've improved and new things you've learned. Doing this helps you keep going forward, like the inchworm pushing its head to reach ahead with learning new skills and pulling its tail to improve on old ones.
Hey there, please tag programming and general advice communities :)
Co-Founder, Founder, Entrepreneur & Problem Solver
Igor Rendulic
Co-Founder & CEO of Mailio -> mail.io
I hear you. After couple of years in the same spot things can become stale. I found that the way for was to start my own small projects to learn additional skills.
I started to post to medium describing what I thought might be useful as a tool for other devs. In parallel most of the articles had a github link with source code. I think sharing knowledge in that way is very humbling and you might find other devs out there with crazy good skills from which you can learn a great deal. Some might contribute to your code others might have questions. Both make you think usually.
While working on code I've also learned a great deal from open source projects. How they're organized, how specific problems might be solved,... Especially when you're trying to pick up a new skill looking at projects with many people working on them is a great challenge.
If you're still interested in communication I might have a proposition for you :)
Me and couple of devs from around the world have come together to develop the email and messaging communication platform in decentralized manner. We're not a company or seeking any investments. It's just enthusiasm fueled by our free time. Currently the project on Github is privately held, but we plan to open it up next year for everyone to use/contribute. If that is something of your interest let me know.
The current tech stack is: Javascript libraries, Go Database, Go SDK, peer to peer networking using libp2p, decentralized pub/sub, AngularJS, WebSockets, GraphQL, ... Currently i'm looking into HTC Exodus 1 phone to check their Zion wallet.