I Am Not a Real Programmer
dev.to
dev.to
I agree that the condition is real, but at some point we all have to take responsibility and control of our own careers.
Chances are, you were hired and qualified for the position you hold, with the understanding that there is room to grow within that position, and ideally, that is where you want to be your whole career.
Walking in to work everyday with a complete mastery over everything you do and write is a problem of its own.
For those odd jobs that are somewhere between support and development, calling yourself 'not a real programmer' is a ridiculous mentality to have. Being able to comb through a codebase to insert 5-10 lines of code that fix an issue is a delicate art. I know because I did it for 5 years. Editing black boxes is scary, especially in those instances where tests are scarce.
Embrace your role, and do the best you can. You will be happier for it.
Impostor Syndrome is, or has, become like Asperger's, where every dev thinks they have it. It's a "humblebrag". I honestly tell people I mentor, be confident, but humble. You have this job because you're qualified (or you made yourself qualified), so have confidence in your skills - sit up right, answer questions, take ownership. But also be humble. Don't be afraid to say I don't know, admit you don't know everything about developing.
It's OK To say "I don't know, but I'm doing my best, and if I did, I could answer you."
Responsible, experienced engineers should teach newcomers that experiencing self-doubt is part of the process in maturing. I had the fortune to work under a mentor in my original position in this company that wasn't afraid to pull his assigns in to help solve problems he was working on.
Seeing that people of his caliber still acknowledge the value of second opinions and eyes really helped me understand that this business is not about the individual bodies entombed in cube walls, but a complex effort of many teammates.
After I embraced that, I learned where I could, and contributed where I could, and I personally feel much more productive as a member of my new team because of that. Do I still feel like I don't know things? Definitely. I also know that it's a big field and we all won't know everything.
My next goal is to find my way to a leadership position so I can perpetuate this kind of mentality downwards.
If we pretend for a moment that hiring processes are perfect methods for identifying the top X% of candidates objectively, when you are hired by a company that only hires the top 10% of candidates, when you are hired, you instantly go from being better than 90% of your cohort to being average. You might go from being in the 92nd percentile of your old cohort to the 20th percentile of your new cohort.
Sure, it's less stark when hiring processes aren't perfect and hiring criteria are fuzzy and don't oerfectly match the actual job requirements, but any time you go through a selective process it's going to happen a little.
Sort of. One thing about advancing in your career is that you end up working with people much, much smarter than you. Or at least I do. ;-)
I've felt like a working-class programmer for most of my career and I don't have a problem with that. I frame houses, hang drywall...
I'm a programmer, dammit Jim, not an architect.
Establishing clear lines of communication and trust is hard work. As hard as development. People are unpredictable and diverse. It's like writing a different language for every part of the application. The syntax you use to communicate between people changes.
As the world continues its descent into reliance on technology and software, more people are faced directly with generating requirements for developers to implement, and right now the gap between the two world is still rather large. The best way to help close those two worlds in, is not to point a finger at those around us and complain they aren't capable in this environment, it is to help build the bridge so that the person who is in your position next does not have to face those same realities.
This introduces dark corners where bad actors can operate on levels that people either don't know how to monitor or don't even know exist (rootkits, etc.).
And it's not just that. Machine learning is increasingly being trusted to make decisions for us despite being the blackest of all boxes. Decisions like predictive policing (https://www.theverge.com/2018/2/27/17054740/palantir-predict...) that have serious impact on people's lives.
I'm personally less skeptical of technology itself and more skeptical of unqualified people misusing technology (whether that's using machine learning to arrive at bogus conclusions, leaving personal webcams open on the internet, downloading fishy attachments, or anything else).
IMO, including some minimal technical education (like the technological equivalent of home ec) would be a fine start.
I do what I get paid for which is generally to solve problems. I get annoyed when people less competent than me choose the solution I should implement, but if they are the ones paying me and they insist on doing it a certain way (after I have explained my opinion) I'll get on and do it anyway. You sound fairly high maintenance in acomparison.
Anybody else sick of the "Just gluing stuff together" and "I just copy and paste from stackoverflow hahaha" lines? It does not reflect my day-to-day at all. Whenever I hear someone say that, it shows they are early in their career or they are not spending their time learning outside of hacking together code.
More than anything, I find that NOBODY has already done what I'm currently doing, and that online resources other than primary documentation is mostly useless.
Programming is hard because you have to be constantly learning and there is SO MUCH TO LEARN. Not just programming languages, or mathematics, although THAT is a whole mountain to climb in itself. But other skills:
- Communication, both internally and with customers
- Project management, requirements gathering
- Writing good documentation
- Management, mentoring new developers
- Marketing
- Leadership
- Other random software and tools that are NOT programming.
And NONE of this knowledge is going to come without study. We have worked hard to develop technologies and techniques to try and increase the probability of our projects succeeding.
"If you want to be a writer, you must do two things above all others: read a lot and write a lot. There's no way around these two things that I'm aware of, no shortcut." - Stephen King
To be a great ANYTHING means being a great student first. Which means it behooves you to study and learn from the past before charging ahead.
Not to be contrary, but I've never found _programming_ to be boring. What I've found to be the biggest frustration of working as a professional programmer (25 years now) is the expectation that programming, shared by apparently everybody who doesn't program for a living, that programming is easy as long as you've read the "learn programming in 24 hours for dummies" book and put ridiculously unrealistic expectations on anybody who calls themselves a programmer of any level of experience. And, in my experience, protecting that what they're asking for is unreasonable is a waste of breath - "I can't deliver that in that time frame because I still don't even know what it is" is always met with "you have to, figure it out, lowly programmer".
We need to get past this attitude.
>Anybody else sick of the "Just gluing stuff together" and "I just copy and paste from stackoverflow hahaha" lines?
I cut and paste plenty from Stack overflow. Stack Overflow also rates me as top 5% for Python and Django answers.
I glue stuff together. I try and do it in a way that is elegant and won't cause problems down the line.
Otherwise, we support the notion that you don't need to learn how to solve problems to be a "Programmer". Which at its essence, is what a "Programmer" is.
One person may think a "programmer" should know how to design/implement algorithms, while another would say algorithms are a library implementation issue.
The problem is many of us fill both definitions. One minute I could be creating a complex algorithm, the next I could copy/pasting a shell script from stack overflow and neither is necessarily a superset of the other, so which category would I put myself in?
I think coding interviews are fine as long as they aren't insane like what you see a lot these days. We just need a good metric on how to know if the person I'm interviewing can solve general problems, my problems, and has the appetite to grow more.
That's really hard.
While I can understand the instincts that drive this phenomenon, does anyone else not think it's all a bit self-absorbed and unnecessary? Like, why is it so important? Is your self-actualisation really so dependent on how you label the activities by which you make money? Bear in mind, to the vast majority of the population, the difference between somebody who "is" a programmer and somebody programs as part of an IT role is a barely existent irrelevance.
Especially at first, I had problems with thinking people were judging me all the time, or didn't take me seriously because I didn't have the letters "B.S." or "B.A." after my name. While this was probably true for some people, I think a vast majority of them seriously did not care that I wasn't qualified on paper, since I could do my job OK.
I don't disagree that these kinds of problems are self-absorbed and the standard definition of a "first world problem", but I found it kind of unavoidable.
The _only_ reason developers make as much as they do is that a critical mass of them understands how valuable and difficult their work is, how much their work allows the company to grow and profit, and they ask for what they deserve. If we lose that, we're fucked.
It seems like an inherent and necessary risk of the profession, even to the extent that maybe someday we'll all look back on and wonder how we ever let programmers exist without serious mental health safety nets in place.
Nowadays, usually when people ask what I do, I tell them that I'm an eccentric. This started as a joke, but I honestly feel that it has led to me finding more interesting jobs than I'd have had if I had just said I'm a "programmer".
I usually describe myself as a Software Engineer or Software Architect because of the projects I undertake.
My current job title: Digital Publishing Programmer.
What does that mean: HR processes made it complicated-to-impossible to hire someone for generalist software purposes because it didn't comply with regulated pay schedules within the parent company. In other words, it doesn't really mean anything explicitly.
Rather than everyone trying to put themselves in the "programmer" box, and everyone saying "anyone is a programmer". Maybe the technicians need to see / be shown how vital what they do is to the business.
When you find you've reached your level of incompetence, it's probably time to look for a way to move laterally. But if you find yourself still learning and growing into your role, then you've still got room to move up.