Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am presently an employed software engineer, less than a decade out of college. Given where I would like to be in my career, I am currently looking to sharpen my skills to find my next job. However, I feel that I have certain technical deficits, from my degree and work choices, that make it difficult for me to study on my own or pass muster in the positions I hope to achieve.

Because of this, I am trying to find a professional mentorship or continuing study group for practitioners beyond my workplace, as I believe I would benefit from having someone with more experience elucidate areas that I might wish to build competence in. I believe this would also help identify material that I would not otherwise be able to find on my own.

This is especially true for the algorithms training that I missed in college. While trying to shore this up, I have participated in Top Coder, Coursera, MIT Open Courseware, and Project Euler. I have also purchased, digested, and worked with many books focused on CS and programming. This is well and good, but having this process be solely self-directed is both isolating and lacking in necessary social feedback on how my studies connect with the real world.

As such, I am curious what resources might be beneficial for someone looking for a human component to studying SE/CS outside of the workplace. Would it be valuable if I started a group myself, for people looking to study these areas?

Full disclosure: This is a new account, because I prefer to separate this question from my professional identity. I almost feel embarrassed by it, to the point of not asking, which is precisely why I feel it may be valuable for others here.

share|improve this question

closed as off-topic by Ixrec, GlenH7, durron597, Snowman, gnat May 23 '15 at 5:46

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – Ixrec, GlenH7, durron597, Snowman, gnat
If this question can be reworded to fit the rules in the help center, please edit the question.

...and How to Mentor a Junior Developer – gnat May 6 '13 at 22:27
@GlenH7 +1. I'll see if I can pare this down to its essence. gnat and Dynamic gave me many resources to research in trimming this down. In the interests of creating something of lasting value, I'll be going through those, first. – Not Quite Anonymous May 7 '13 at 2:47
I liked @GlenH7's answer, and the only thing I'd add is that, if you were able to understand all the content (books and courses) that you took on your own, I'd say that you might not need professional mentorship, but just networking with smart developers. That alone might give you a big push and the social component that you're looking for. Also, I think it might serve you a lot to dedicate part of that time that you're using to learn to learn a few new skills or techniques that you could apply to your work projects. That would get you noticed and help step up on your corporate ladder. – silverCORE May 7 '13 at 12:04
up vote 7 down vote accepted

I'm going to lean upon my martial arts background for a few pertinent responses.

  • Black belts are simply white belts that never quit

Many, if not most, people assume that someone who has earned the rank of black belt had some amazing athletic talent that led them to that achievement. And while there are some gifted athletes in those ranks, many black belts are practitioners who simply never gave up; who never stopped learned; and who enjoyed the path they were on.

While developers don't break boards or even bits, the fundamental message still applies. The best developers are those who never quit learning; who never quit having a passion for the work they are doing.

Being recognized as a "master programmer" may take longer to achieve without some of the aspects that you mention, but it's certainly doable.

  • Perception drives reality

Another aspect worth considering is that your perception of other developers may be biasing your judgements about your own development skills.

Having an XYZ degree may have provided you with more development training, yes. Working for Acme Corp may expose you to more interesting technologies. But a training deficit can be overcome and the truth is that many, many developers stop learning the day they graduate. Bonus points to you for understanding that the developers craft requires lifelong learning. Continuous learning is an end, not a means.

Likewise with technologies. Pick one that interests you; dive deeply into it so you understand many of the nuances and complexities. That will stand you in greater esteem than most common practitioners who simply use that tech to get a job done.

  • Memberships / community / social aspects

There are a number of mechanisms to fulfill these requirements. Local, national, and international organizations all exist - IEEE is one org that comes to mind, but there are certainly many others. High quality Q&A sites like Stack Exchange are another option. CodeReview.stackexchange does exist and is a reasonably useful area for review of code. Likewise, SE Chat rooms are additional source for interaction with like minded professionals. There were comments recently within The Whiteboard to the effect of the daily banter being more enlightening than a college course. There's some truth to that.

  • "feedback to the real world"

Honestly, the only feedback to the real world that you need is a project you are interested in contributing to. And for that matter, it doesn't even have to be all that long of a commitment. Many communities host code-a-thons to benefit a local organization. Look those up and see what connections you can create from that. They're usually an open, congenial environment.

"Feedback to the real world" is only important if you're wanting to explicitly leverage that experience to find a different job. As you might be suspecting by this point, I'm suggesting something different. Find something that sparks your passion, even if just for a little while, and pursue that. Rinse and repeat; with each cycle your skills will become better. Seek feedback and guidance from those who benefit from your work. Use professional contacts to review and guide the quality of your code.

Finally, don't be embarrassed by your path. Every path is different and each one has its unique values along with its challenges. Honestly, I'm more impressed by someone who owns their path and strives to continue learning than I am with someone who puts no effort in.

share|improve this answer
Thank you, to both you and gnat, for your articulate advice and answers. I'm checking this AA, because it's comprehensive, salient, fully addresses my question, and provides useful advice for others that find themselves on this same path. Thank you again. – Not Quite Anonymous May 11 '13 at 6:10

...looking for a human component to studying SE/CS outside of the workplace. That component is you. It is entirely up to you. Your career is in your hands.

  • Deficiencies

    Address them now.

    • College - Reference Accredited university curricula; have a discussion with a faculty advisor regarding what is deficient in your core knowledge.
  • ... connect with the real world.

    Consider joining an open-source team.

...identify material that I would not otherwise be able to find on my own. Here is an idea. Google this search term: best your programming language books. For instance, best c++ books yields a wealth of information in particular this.

Ok, shrug your shoulders a bit, roll your head, deep breathes, relax, and get going. Have a plan, know a direction, and proceed. Don't do this haphazardly trying to learn everything.

Also, you don't need to be embarrassed asking this question to the point of identity concealment. You are not the only person in this position and there are plenty of programmers on Stack in this position including myself.

The advice I have given you is advice I have taken. I am an Electrical Engineer that made a career change to Software Development. I went back to school and earned a Masters Degree in Computer Science. There I received my core knowledge and from there I realize I am not a Software Developer. So many gaps in knowledge, so many things unknown.

However, I begin at the beginning. Deficiencies? Don't forget you do have access to a worldwide community of programmers that provide a depth and breadth of experience impossible to find through one or two humans in a study group. Feel free to bounce questions here and on Stack and get that knowledge going.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.