5

For the past several years I have been feeling quite embarrassed about my coding abilities. I've been self studying most nights trying to catch up to my peers but I feel like I have a moving target. I feel like my years of work experience does not reflect my coding ability at all.

This post will go over my programming history, then how I am currently studying to improve my technical skills, then finally what I think my weaknesses are as a developer. What I am trying to get out of this post is how I can improve as a developer in my current embarrassing situation.

A bit about my past:

I graduated from a UX design program 6 years ago. I did several internships during my time in college. My first boss told me that my UX skills were lacking but he saw that I had potential in web development (I put together a basic static website for his company). Since then I decided to slowly teach myself web development.

I did my second and final internship at a well known IT companies (Amazon, Apple...) as a junior developer. Unfortunately I did not get a chance to do much programming due to over staffing of interns.

After graduation I got hired as a junior software engineer at another large well known IT company where I worked for 6 years. My manager knew that I didn't have a very strong programming background so I was only assigned very simple programming tasks to do. I thought I was a good developer for most of these years as everyone praised me for how fast I was able to complete my work.

Last year before I got let go (due to company restructuring) I was speaking to a senior developer and he quickly noticed that I was lacking a lot of basic front end programming skills. He felt like my programming skills were equivalent of a 2nd or 3rd year computer science student instead of an intermediate software engineer. After hearing this I started spending my free time self studying.

After I got let go at my previous job I got a software development position at a smaller IT company. I work with several other developers, all of which have about one year of working experience. My team lead has about 4 years of software development experience. Needless to say, I have by far the most software development experience on my team yet I have the worst coding ability.

I guess my problem is that I feel very incompetent and embarrassed as a programmer. I have all this years of experience working and a beautiful resume, but my programming abilities do not match my experience/resume. I feel embarrassed having to bother my peers about programming issues that they don't seem to face. I feel lost when they talk about how to better architect the code. I feel exhausted that I spend every day at work coding, and then spend my evenings studying more code.

I have a subscription to PluralSight and do follow a few front end email feeds. Over the past year I feel like I have increased my CSS/JavaScript from a basic level to an intermediate level. My new company is using Angular and I feel like I have an intermediate-ish understanding of the framework. I am currently finishing up an Angular app. I plan on learning Java next (via PluralSight) as my manager wants to transform me from a front end dev to a full stack dev.

I guess my question is what can I do to rapidly become a stronger developer? I feel like no matter how hard I study I have trouble thinking like a developer. I feel like I don't know how to properly debug (my general strategy is to comment out several lines at a time to isolate the problem). I have trouble reading documentation hence why I subscribe to PluralSight for instructional videos. I don't have any developer friends I can talk to about this.

Votes + Comments
Yep
Thumbs up for your honesty, which already makes you a better developer than many!
Brave and honest. Deserves our full support.
3
Contributors
5
Replies
48
Views
5 Days
Discussion Span
Last Post by JamesCherrill
2

First: I congratulate you on your honesty and bravery in making that post.

Second: You have already taken at least three giant steps where most others will have already failed:
You recognise that you need to improve
You believe that you are capable of improving
You are willing and able to invest time and effort into improving

I'm out of time right now, but I'll get back to you later today with some thoughts on asking for help, doc vs video, and debugging.

Finally:

I don't have any developer friends I can talk to about this.

Yes you do now, you just joined DaniWeb.

Edited by JamesCherrill

Votes + Comments
All but true
100% agreement
0

I have trouble reading documentation hence -> instructional videos

Reading doc is a fundamental skill for a developer. Nobody knows all the parameters of all the APIs in a full stack. They rely on being able to quickly find and understand the info they need as and when they need it. Videos are easy, but a very slow and inefficient way to get info.
Videos are most useful for getting concepts and overviews, but as soon as they get into details you are spending a lot of time.
I strongly suggest that you spend time getting to know the key documentation for the technologies you are using. Skim through them to see what info is there, and how it is organised. Don't try to remember the info, just remember how to find it.
I also worry that you may be spending hours watching videos when that time could be better spent writing a simple app that uses whatever you are trying to learn. Most people learn best by doing.

To be continued...

Edited by JamesCherrill

0

A huge problem I had to deal with several times over the years is the programmer who overestimates their abilities. I would much rather work with a programmer like you than one of those yobs.

0

I feel like I don't know how to properly debug (my general strategy is to comment out several lines at a time to isolate the problem)

I don't think I've ever heard of commenting out code as a debugging technique!

Maybe you are writing too many lines of code before running a test. Real coders test early and test often. This means a bit of throw-away code eg to call the method you are working on and print the results without having to start up the whole application. If you are unfamiliar with the APIs you are using then testing after 6 lines of new code wouldn't be silly. Anf if the test failed you would know that the problem was in those 6 lines. If you are completely new to the APIs then try a a complete throw-away mini-app to see how it works and get the exact parameters befroe trying to fit it in the real environment.

You didn't say what tools/IDE you are using, but you should have some kind of break/step/display variables debugger at your fingertips. Maybe you have been put off by its learning curve (most people are at first), but it's a great investment. If not you can use lots of print statements to show what's being evaluated a each line. That will immediatley tell you where its going wrong. (If you don't know what the intermediate results should be then you were coding blind and are doomed to failure. You should never write a line of code if you don't have a clear idea of what result it should return.)

T.B.C...

1

I feel embarrassed having to bother my peers about programming issues that they don't seem to face

Why? Asking someone for their advice is the sincerest form of flattery.

The trick is to keep the questions short and specific, because most people don't have time for a long discussion. Try questions like
I used this <code construct> but it seems tacky. Is there a better way?
Where can I find info on <API>?
Is it better to do <concrete example 1> or <concrete example 2>

Sure, some people are jerks and won't help you, but most people are pretty decent, just give them the chance.

Finally, when people spend time helping you don't forget to say "thanks"

Edited by JamesCherrill

Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.