You have seen these articles a thousand times:
- "10 things you should build to become a top developer."
- "Top Frameworks to learn in 2019."
- "Do this to become a rockstar developer."
- "Read these ten technical books, and you will be a successful developer."
What they talk about is that you should learn
node. Build the 1.000.000.000 ToDo App. Read
Python Crash Course and boom you're a top developer.
This is all (theoretical) technical knowledge. You need to learn the technical knowledge but do you think that a hairdresser that can hold some scissors in the technically correct way is good? There are more skills to consider in every profession!
Let's talk about at least, in my opinion, overlooked skills.
As a developer, you have to implement a feature that will be used by someone. This someone can be you, a client, your colleagues, people on the internet that you will never know.
Knowing this, it is your job to think for all of them and get the feature down to its essence.
Your management wants to see how often people click something on the website. You need to understand that they are concrete thinkers.
Your management thinks in list, numbers, and spreadsheets. Right now, they don't care and understand the bigger picture of your complex software. They don't have to. That is your job!
Coming back to the
how often has a user clicked on the website task. I imagine my self in both roles. In the role of the user and of the person who then will see this data and will try to figure out what the user intended.
For the end-user, nothing should change. Maybe a disclaimer that he/she has to click once. That's it. These features should be not visible for the end-user. Okay, that was easy. Always think about your end-user first! Always!
Now, let's think about the person that has to make sense of the data. So what will he see? Just a number. Like
42? But what does that number mean? Maybe a better way would be to measure not how often he clicks but what he clicks? You go back to your Product Team or the stakeholders and tell them that it would be maybe better to have a statistic about how often we click and what action was followed by that click. Probably you will hear something like
Oh you can do that? Yeah, let's do that. I could go even more abstract on this topic, but I hope you get the point.
Asking the right questions
I see this all the time from Junior to Senior Developer. You get a task, and you do it. I call these people
Code Monkeys 🐵.
Part of being a developer is to ask questions and get down to the essence of what we want to achieve (this comes back to the abstraction point).
One sentence can be interpreted in 1000 ways.
You should understand why you are implementing this feature. So you can better see problems and future hazards.
Questioning why in companies is sawn often as a trust problem.
You will hear sentences like:
- We should trust the product team.
- Let's trust them they know what is best for the company
- Don't you trust me?
- Let's first try it and then ask questions
Asking a question and trying to understand why has absolutely nothing to do with trust. As a developer, you know the inner workings of the system. You can see the technical problems and point out what can work and what can not work. If you ever hear these sentences here is a reply that works always:
- "I trust you, and I know that this is important. "
Communicating with non-technical people
How often this has happened in companies chat systems like slack:
You open up a channel for the entire company, and you see some link to a super technical blog post about why
forEach is faster than
Or you say "No, we can't do that" and you start to explain that reactjs does not have this feature and we need to load a npm package.
If your product manager is not an ex-developer, then he/she will not understand a word you are talking about.
Instead, you should try to find a good Analogy from a domain that everybody understands. Like I did in the beginning with the hairdresser. A non-technical person can understand that and conclude that you have a point.
You see these tutorials on youtube where people create something in the video in 15 minutes, and then you try it, and it takes you way way way longer!
You get frustrated because you can not implement that todo list. It is also the first time you touched code. The Youtuber has at least ten years of experience and also prepared that video and implemented that todo list before at least once and now is just going down a script.
You know where the cliche comes from that developers are creatures of the night? Because we like it? Because we are anti-social? That's true maybe for a small group of developers. The biggest reason is that coding takes time! A long-time if you try out new things!
I'm a strongly opinionated guy when it comes to web development, and I tell people my opinion even if I know that they will not like. I don't do that to annoy people or to bring them down. Like how can be my opinion so emotionally intense that after hearing it, you doubt your whole existence? Sorry but there are more significant problems behind that, and you should figure out how to deal with them because it will lead to only one thing: Stagnation. You will be the same at age 18, age 25 and age 50. I know this is easier written than done but you need to know: "How you are right now only brought you so far".
The worst thing that can happen in a development team is when everybody has opinions, but nobody is telling them! If this happens, you are doomed. It is the beginning of the end. If you are not a
code monkey you will feel less motivated and more frustrated every day, and it will not only be you. Someday suddenly, people who worked for several years at that company will leave because they can not take it anymore.
Also, I'm not saying that you should say that you don't like this. You should tell why and give some examples. Don't be an as*h**e but also don't get frustrated a little bit more every day. It helps nobody. So either say your opinion, don't have an opinion and be a code monkey or leave the company to find a better job or go freelancing. I don't know, but don't stagnate!
Thanks for reading!
Say Hallo! Instagram | Twitter | LinkedIn | Medium | Twitch | YouTube
Top comments (22)
In this context you should use instead of abstraction some other term, like multiside understanding. Abstraction for programmer means something technical. And actually abstraction capability is the very important for programmer.
"Multside understanding" is a new term for me ;)
Abstraction in computer science is for me the same as in the real world.
If you abstract classes for example in java then you are also trying to understand that one topic better. In the real world, you do the same every day. If you see a Shiba Inu you know it is a dog.
So I would not segregate it because you are doing it all the time and in coding, you are just writing it down in the form of code.
I just suggested another way of saying this))
My understanding of abstraction in programming is hiding of details. Maybe I am mistaken...
I just wrote down my thinking about that :)
And yeah hiding complexity can also be done by abstraction :)
Nothing wrong with that :)
To be fair I did assume he meant abstraction as in OOP abstraction, once I started reading the rest of the text I understood that it wasn't that sort of abstraction
I feel as if I could have written this.
Thanks. I feel calmer. I'm looking forward to the future and thank you for sharing.
If I could add something I would add:
"If you are a Lucky Man like me then remember remember that if you manage to make it to the 25 year mark with your Soul Mate that you can certainly make anything your reality because verily, I have proven two zeros can equal eight.
I am a loving person who was forced to learn hate. I am not perfect nor would I strive for it. The past is death. I live for today because my mission is to live. My day is complete as long as I learn something new. With only one step forward I know I have advanced....even if they be baby steps..thank you Mr. Murray and Mr. Dreyfus (What About Bob?)
And yes! Mr. Chase and Mr. Simon (You may Call Me AL.) Funny how one typo can be used to prove The Butterfly Effect.
And Mr. Whittaker, Ghostdog, is my fav..then True Romance. Pizza time, Laters.
Sorry but I'm confused about this comment 😵
How well researched is this?
Like most things: about irrelevant percentage.
You read this, and about N other similar articles, and it will make you a better person. (Or not, who really knows.)
The thing about this, and everything else which is not an exact science, is to consume a lot of different opinions and to form your own. Which in turn you keep checking and updating based on feedback and what other people say. In the hope that it makes you a better person in the end.
Please write about your own experience and ideas like lampewebdev did, so that others can learn from it. (And maybe teach you a thing or two.)
What do you mean by researched?
How can you research abstraction? 🤔
This comes from my expierence as a developer
From teaching junior developers
From helping people that don't know anything about programming
From talking to people that are stuck in tutorial hell online
What I meant is: I like it!
But it made me think, where does this comes from, is it real based on data or just an opinion?
From buzzfeed to [trust worthy publication], how does it rank?
Reading it again, the frist three [ abatraction, asking the right questions and communication] are actually the same thing: the ability to really understand something.
Like this smart guy said, if you can't explain somerhing in simple terms, you don't understand it. That includes abstraction.
So to me, it is more like, understand by asking questions, research, etc, then explain and abstract.
Still I get the need to expand of each one individually.
Your artricle basically states: be intelligent and have social skills, which is true and most of us focus only in the smart part, we have seen people that even learned how to fake smarts.
And, as we know, people who fake social skills often come as unlikeable because we can detect it, I am thunking the same happens with faking intelligence.
Your article proposes an actual measure to real smarts + some social skills too.
Like I said, I like it :)
Thanks for it!
Okay, this makes things clearer :)
Like everything, I write it is my opinion (see the last point in the article).
The first two to build on each other you are right. still, They both are a little bit different. You can
sometimesabstract without asking questions.
The second point and third point are also linked! You need to communicate to ask the right questions.
Still, for me, these are different skills. You can be a great communicator without understanding anything cough sales cough.
You are right today; it is easy to fake things on social media. Just look at Instagram. People with zero practical knowledge are just restating what they have found works well.
One of my top posts is about that you don't need a fancy setup and RGB lighting and five monitors to be a great programmer. The amount of DM's I got after this... Crazy that people think that!
I don't want this to be a measure and these are not the only points. These are just something people don't talk about and is overlooked often.
Thank you :)
Very different perspective on the whole theme.
Thank you very much 😊
Critical article that engages Developers, budding developers to think realistically with all the stakeholders concerned..
Are you an AI? :D
Would it be rude if I corrected the grammatical mistakes here?
No, but not practical.
I followed you on dev.to
If you follow me back, you can send me Messages :)
Appreciate the effort :)
You can just click on my profile:
Sorry, more context would be nice? :D