Fog Creek Software
Discussion Board




Is this just a phase?

I'm looking for feedback, hindsight, wisdom from experience, etc. from older developers who maybe went through this when they were younger and have learned more now.

I am relatively young in the career field.  I'm 30, but I have only been developing applications for about 2 years.  In fact, 2 years ago I fancied myself a designer and had no interest in programming (which I considered boring before I really had exposure).  I got a web designer job with a Fortune 200 company, and was at the bottom of the food chain.  They told me that the nature of their business was that I would have to learn how to develop apps, talk to databases, etc.  No way around it.  So I started learning.  Come to find out I have the Dilbert "knack" and programming feels more comfortable to me than anything I have done before.  Its fun and interesting, and the harder the challenge the better.

Anyway, I have learned a lot of stuff pretty quickly, mostly concentrating on the core principles and fundamentals that are important in all types of programming, not just web development, and not just using one language.  I actively seek to learn what the best way to do something is, not just what works right now.  I have found that understanding the core concepts makes it pretty easy to learn an alternate language in a short time.  A problem is that I haven't had a ton of opportunities to demonstrate what I know now.

The team I am on seems to believe that everyone grows and learns at the same pace.  That due to my experience (in time), I MUST be at a low level of knowledge, and thus they keep giving me boring work, while handing more complex projects to the same people over and over.  Yet another problem is that most of the team appear to have a limited understanding of core programming principles, but a larger working knowledge of the language we use here.  They know what works in the end, but I have noticed a lot of them don't seem to understand *why* things work, and thus when things break they take (what feels to me like) very convoluted approaches to solving the problems.  Things like just diving into code changing things without really nailing down what caused the error.

Its not that I don't like them, or think they are idiots.  They are friends, and nice people, and smart in many ways.  Its just that I feel like I am, or at least have the potential to be better at this stuff than most of them.  Mostly just because I take a more pragmatic approach to solving problems.  The concern I have is that my feelings are just a phase, and that I really don't know anything (I already know that I have a ton more to learn), and that every young developer goes through this.

Is that the case?

The Young One
Wednesday, August 11, 2004

Some programmers are just better than others... it's normal. You just do your best and hope your coworkers and boss will recognize it in time. If not, you move on. And if your coworkers are all idiots, that will just make you look even better, so don't let it piss you off.

Bob
Wednesday, August 11, 2004

I'm a young developer too (about 4 years experience), and have felt like this in certain stages of my career as well.
My answer is: you know nothing... the more you know, the less you realize you know. You can go along for months thinking you are the cat's ass, and then get a rude awakening to make you realize that there are some things that time and experience just can't make up for.
Don't be too eager to take on projects that are considerably more complex and large than what you are doing now. Find a wise mentor and ask to work under him. Slow and steady wins the race.

Natty
Wednesday, August 11, 2004

You have the wrong attitude Young One. ("Its not that I don't like them, or think they are idiots.")

If your colleagues are not as smart as you, or do stupid things re programming, then they certainly are idiots. When you have learnt this important lesson, you will be ready for your journey to the next plane of programmer consciousness.

Learned one
Wednesday, August 11, 2004

Get into "lifetime learning" mode.  Taking classes in your free time is a good start.

I too came from the designer / web side of things.  The trick for  me was to keep learning the stuff I didn't know.  This meant transitioning from dreamweaver > HTML > ASP > C# > to now C/C++  and Java.  Most of this stuff happened in my free time.

Also agree with the above poster, get a mentor.

Sassy
Wednesday, August 11, 2004


Get experience outside of your job too.

Most of my work is in asp, previously I was in Java/jsp.

I do OSS projects in php.


Today, I proposed a solution in each of them in order to solve a serious/expensive problem.  More experience is more experience...

KC
Wednesday, August 11, 2004

> Yet another problem is that most of the team appear to have a limited understanding of core programming principles, but a larger working knowledge of the language we use here.  They know what works in the end, but I have noticed a lot of them don't seem to understand *why* things work, and thus when things break they take (what feels to me like) very convoluted approaches to solving the problems.  Things like just diving into code changing things without really nailing down what caused the error.

Do you tell people what you notice? Whenever you notice something specific (not just generalizations like the above)?

Does your shop do peer reviews (code reviews, design reviews, process and staffing reviews) and do you participate in them? Doing so would, as a side-effect, give them some insight into your abilities.

> Its just that I feel like I am, or at least have the potential to be better at this stuff than most of them.

Perhaps for the moment you should (for social reasons) aim towards being perceived as being "as good as" (not "better than") them ... so that they feel free share the interesting work with you equally.

Christopher Wells
Wednesday, August 11, 2004

Young One,

I think you will find that the good projects will eventually make their way to you once you have proven you have outgrown your existing projects. 

In the meantime, continuously improve on your knowledge.  Be vocal when you have good ideas (but not obnoxious).  To establish your prowess, you must first exceed your current tasks.  From what you say, these tasks should be very simple for you to accomplish.  Spend your extra freetime creating better procedures within your team.  There is always a way to improve on things... start suggesting them... such as automated daily builds, unit testing, source code control, etc.

Have patience and good luck.

Seeker

Seeker
Wednesday, August 11, 2004

Just to clarify again, I don't think that I know everything about the work we do and they know nothing.  Its just that as I learn more and more about better ways to do things, it exposes the problems here even more.  This is a web team, so there are no builds.  But in the other parts of the Joel Test, we fail on most.

*We don't use source control (we actually use Vignette Content Management, and that has a sort of source control to it, but only half our sites are in it right now.)  The team doesn't feel like source control is necessary.
*We don't have a bug tracking system
*We don't always fix bugs before writing new code
*We don't write specs, and we get into horrible scope creep and death march scenarios all the time as a result.
*We often bully marketing and content owners into accepting what we are willing to do, rather than what could be done with some innovation

I tried in the past to share my opinions and suggestions.  I often ask for help from co-workers and I think I make it clear that I know I have a lot to learn.  Yet, I was told that some team members take it as an offense for someone with my limited experience to assume that I could know enough to offer a valid solution.  I was basically told to shut up and just do my job.

Again, I am not making a comparison of my actual skills and knowledge to theirs.  I am moreso talking about their approach to problem solving and policy-making.  The consensus of people in the community that have demonstrated that they know what they are talking about seems to indicate that what we are doing here is not just "another way to do it", but the *wrong* way.

I totally agree with the suggestion of finding a mentor.  I had two of them.  One was a good friend who was very sensible and noticed the same problems, and he left the company.  The other was a seriously gifted programmer who knew everything from assembly to .NET.  He also left the company.

Thanks for the feedback, though.  Believe me, I am very aware of my weaknesses and I plan to keep learning.  I agree completely that the more you learn, the more you see that you don't know.  I am OK with that reality.  Its just frustrating to be trying to learn how to execute your craft at a high level of quality, that you can feel satisfaction and pride in, and you feel like the environment you are in forces you to keep doing things the wrong way even if you know better.

The Young One
Wednesday, August 11, 2004

>>>
Get experience outside of your job too.

Most of my work is in asp, previously I was in Java/jsp.

I do OSS projects in php.
>>>

These are all essentially the same. A web language. You would be better off learning C, or doing something with threading, maybe something like pygame. Anything different

Tom Vu
Wednesday, August 11, 2004

Ok - how about to gain a bit mroe experience you could create a bug tracking program in your free time and once complete bring it in for some one a bit higher up to look at. If your working in a team and don't have a bug tracking system in place then it will be a nightmare - who is reposonsible for fixing them, what if someone fixes it but it has a knock on elsewhere etc.

Either convince them to buy one or build one for them - and if you build it then they will get a look at your skills.

Also Joel has an article on the archive section - http://www.joelonsoftware.com/articles/fog0000000332.html - where he points out what one person in a team can do to improve it - you should have a good read of that and see what you can implement.

Fothy
Thursday, August 12, 2004

I'm young myself, just 24. I have had almost precisely the same sentiment. My sentiments are almost entirely due to difference in background from the norm.

I believe there are two basic breeds of programmer starting to emerge due to the way technology has progressed. I guess I'd call them specialists and fundamentalists. You sound more like the latter. Which I am naturally biased towards :)

You have a good grasp on core concepts and an intuitive knack for analytical problem solving. Application of core concepts combined with that gift of problem solving ability seems to make the best programmers in my opinion.

The discovery that it doesn't really matter who is the best was very disillusioning to me.

Your problem (and mine, as I often experience the same sentiment) is really more about the 'paying of dues' and 'who you know over what you know'.

You may know (or think) that you can do a better job then your coworkers. However, you still have to proove it.

I suppose it was really naive to think that popularity contests ended in high school. Success in any career appears now (to me) to be very much dependent on being successful at the sociological aspects. Unfortunately, this seems to occur to the extent that it overshadows talent in many cases if not the majority.

Chance Govar
Thursday, August 12, 2004

Some of the older people may just not give a damn after being pounded down time and time again for showing inititive.

Miles Archer
Thursday, August 12, 2004

Miles makes a good point. Not too long ago I took it upon myself to send some emails about problems with an application I used to be in charge of to the current manager of the app. After several emails, he then basically asked me to stop sending the emails, in other words, to stop showing initiative and stop helping him out.

Anonymous Developer
Sunday, August 15, 2004

*  Recent Topics

*  Fog Creek Home