What it's like to learn fast as a developer
That title doesn’t really role off the tongue but I couldn’t think of anything better. 16 months ago, when I had been working for 5 months, I wrote a very popular article on LinkedIn: What it’s like to be a new developer.
Looking back at that article now I find it interesting. It doesn’t resonate with me anymore. In fact it doesn’t sound like great writing to me either. It’s disjointed and I find it doesn’t express my ideas clearly. But I think that is pretty evident of my state of mind at that time and I think also that it is a state of mind that other new developers share. I believe this because I have received countless private messages on slack and on LinkedIn from new developers telling me how much that article helped them. How they related to every word I wrote. How they were shocked to read these words from their own minds written down by someone else. It helped them feel not so alone. It helped them talk themselves down to realize other people have the same thoughts and experiences.
Now I am past the point of being a new developer. I have only 20months work experience (that’s a little over a year and a half) but I have lead a project, mentored others, done architecture design and am currently on a feature team for an important part of an in-development API that my app will consume. Somehow in that time I found my way to Intel with only 15months experience even though I have no computer science education.
I’m not the smartest...but I genuinely love what I do.
I want to give you some perspective so that you don’t get the wrong impression. I might have made it to Intel quickly but I’m not the smartest. I don’t “get” concepts right away. I definitely don’t remember APIs that I read and I often come across “new” tasks only to remember halfway through “hey wait a minute I actually did this on another app 6 months ago”. I have a horrible memory. I was also one of the worst students in my 8 week bootcamp, only completing 43% of my assignments and failing my midterm exam. But my learning has gone quickly because I genuinely love what I do. Loving what I do means I am curious and passionate, always investigating new things, always interested in my colleagues' code, always saying yes to challenging tasks. It’s awesome. And it can be tiring. But usually awesome.
The thing is, even though I do these important things at work I still feel like I have no idea what is going on most of the time when I am talking to other people or reading proposed API documentation or product specifications. People talk to me and I hear a word I don’t know, go off in my mind trying to figure out what it means, tune back into the conversation 10s later and have absolutely no clue what they have been talking about since my brain checked out. I sit down in a meeting often not even understanding what the meeting is supposed to be about until the meeting is done.
Other days chug along pretty good. I get my work done and I feel pretty good about myself. I learn a new library, I teach a colleague about the library, I feel confident. And then someone does something in the app that surprises me or I see someone answer a question on ios-developers slack and I think “wow I never would have thought of that, I sure have a long way to go” and all of a sudden I get knocked down a couple notches and my excitement wanes.
It’s not the same as being a new dev. I don’t think I suck. I know I’m a good dev even if I don’t know as much as another dev.
It’s not the same as being a new dev. I don’t think I suck. I know I’m a good dev even if I don’t know as much as another dev; my history and how quickly I’ve gotten here is evidence that I’m a good dev. And I believe deep down that being a good dev is a lot less about what you know and a lot more about what you are capable of doing. But getting knocked down a notch is demotivating. Suddenly my energy is gone. I’m not that excited to tackle the next task. Doing tasks that I am not excited about now becomes a struggle. It’s hard to stay focussed. I want to do something simple. Stuff is hard. Life is hard. I just want to build apps like I did back when I didn’t know what I didn’t know.
But now I do know what I don’t know. And I laugh at myself most days. I think it’s just learning fatigue really. I’m in this strange place where there is still a lot to learn but I haven’t come across a task I couldn’t do without being walked through it for quite some time. But because I haven’t allowed my career to stall, because I am always taking on new tasks (everything from actual development tasks to architecting to project planning) I am always learning. And not just learning little things about a new API but often I’m learning big huge new things. Sometimes I am tired of learning every day. Other days it’s pretty exciting. Some days I am happy to just knock out a simple UI task. Other days those are boring and I want something challenging.
Basically, being a dev who is learning fast means you live your work life in a paradox.
Basically, being a dev who is learning fast means you live your work life in a paradox.
And sometimes you know what? Sometimes I get overwhelmed still and reach a point of paralysis. I think the difference now though is that it doesn’t cripple me. I have tools in my toolbox and I reach into them without allowing myself to be stuck for too long.
It’s important to be humble about what you do and do not know and not be afraid to ask for help. It’s equally important to not judge yourself when you do need to ask for help. In fact, you should only judge yourself if you are not asking for help. Drive and ambition and ego are needed when you want to progress quickly but they can only take you so far, at some point you need to be vulnerable and expose your weaknesses. Humility is the only way to open yourself up for even more growth… Hey, another paradox.
I hate it! No I love it! No it’s too hard I want to quit! No it’s not too hard it's fun!
Thank You for Your honesty! It was really inspiring and supportive reading!
In my experience, there are actually stages that developers go through. Your articles are laying them out nicely. There's the "I have no idea what I'm doing and I'll never be ablet o pull this off" phase. Then a lightbulb comes on and you can do a few things really well and you're ready for more. The next phase I usually see is when developers get 3 or so years under their belt and they start getting too smart for their own good. They overthink and over-design everything because they read some article that says they should do it that way. I call it "programmer fashion". You see it when people decide that some tool, language, library or methodology is the one great truth in programming and "why can nobody else see that?" Thinking becomes very rigid, and it then becomes harder to learn new things outside that paradigm. If they ever move out of this phase, it's when they discover their code is so complicated that it's hard to maintain. I've seen it over and over in a lot of companies. Complicated code doesn't prove you're smart or good at your job. This was a good article. Stay flexible and keep learning!