15 pertanyaan web developer pada diri sendiri
So you want to become a web developer? Well then its time to put down that Learn Super Duper Language v8.3 in 24 hours book. Instead, make it a habit to ask yourself these 10 questions every day. Is there a pattern here? Looking for patterns in what works and what doesnt.
So you want to become a web developer?
Well then it’s time to put down that “Learn Super Duper Language v8.3 in 24 hours” book. Instead, make it a habit to ask yourself these 15 questions every day.
Is there a pattern here?
Looking for patterns in what works and what doesn’t work leads to discovering the underlying principlesthat drive seemingly unrelated concepts and behaviours. To get a deeper understanding of the work that you do make it a habit of asking yourself “Is there a pattern here?”.
This applies to more than just your code. Is there a pattern in the types of changes requested by business? Is there a pattern in the way technologies evolve? Are you seeing the same types of bugs popping up again and again?
To understand is to perceive patterns
– Isaiah Berlin
How can I make this simpler?
Often as web developers we want to produce complex and scalable solutions. Making something tremendously complex makes you feel like the master of your universe. The problem is that you will never be able to predict how your product and business is going to change in the future.
“Architecture” and coding is much more like gardening than architecture. You need to be able to adapt to an ever changing environment. The more complex your solution the more difficult this becomes.
Simplicity is the ultimate sophistication.
– Leonardo da Vinci
Why does it work like that?
Knowing that something works and knowing why it works that way are two very different things. If you know why something behaves the way it does you are able to make significantly better decisions.
The difference between a great coder and somebody who knows a programming language is the depth of understanding that comes from understanding why.
The same principle applies when fixing an issue. “Just restart the service.” “Have you tried rebooting it?” We have all said something along those lines when a problem pops up. Every time you say something like that you lose a golden opportunity to learn.
Understanding why something broke allows you to fix the root cause and eliminate this class of issues permanently. At the very least you won’t make the same mistake again.
Has somebody done this before?
Whenever you find yourself inventing a complex algorithm you are probably on the wrong track. Unless you are busy researching a PHD thesis chances are extremely good that somebody else has already solved this problem.
Need to write an algorithm to add a label to the item closest to a users mouse? Have a look at Voronoi Tesselations. Want to find the shortest path for a delivery truck? Look at Dijkstra. Want to find tags similar to the one the user just entered, how about figuring out it’s Levenschtein distance.
Those are just a few examples but trust me, they are everywhere.
If I have seen further it is by standing on ye sholders of Giants.
– Isaac Newton
Who said it first?
So you think you know REST right?
Have you read Roy Fielding’s original paper describing REST and do you understand it’s intended purpose? That blog post by that guy who has 5 minutes more experience than you using the REST API generation wizard in Super cool IDE v7 doesn’t count.
Do yourself a favour and always try read the original source of a concept or theory. Then by all means go read the latest developments by industry thought leaders but if you don’t know where they started how can you follow where they are going?
Do I love what I’m doing?
Lets face it programming is hard.
Besides being hard programming is constantly evolving. The state of the art framework from 2 years ago is a clunky dinosaur by todays standards. To stay at the top of your game you will need to commit to a lifelong process of learning and research.
If you don’t love what you are doing you don’t have a hope in hell of keeping up with the guys who do. So find out what kind of coding gets you fired up. Don’t decide to become a security specialist because there is a gap in the market or because it pays well, don’t become a UX expert just because an article just came out in WIRED saying that UX is the hottest job in tech.
I’ll say it again, do what you love.
Do what you love and the necessary resources will follow.
– Peter McWilliams
Where else could I use this?
One of the biggest limits I see web developers placing on themselves is a failure of imagination.
If we learn something in a specific context or see a technique used to solve a specific problem we assume that’s the only place it applies. This is almost always wrong. Every time you learn something new ask yourself: “Where else could I use this?”.
Found great new positioning methods to place nodes on a graph, how about applying that same technique to find interesting data points in a dataset that has 2 dimensions? Found a cool way to send data over websockets from the client to the server? How would this apply in making a scalable set of backend services? Sometimes you will be wrong, but sometimes you will be right.
Which brings us to our next question…
Logic will get you from A to Z; imagination will get you everywhere.
– Albert Einstein
What did I fail at today?
One of the easiest ways to increase innovation is to lower the cost of failure.
The game developing company Valve has embraced this like few others. The same applies to your progression along the path to becoming a web developer, if you are afraid to fail you will never make those big breakthroughs.
Be brave, try something, fail, learn and try again.
Do not fear mistakes. You will know failure. Continue to reach out.
– Benjamin Franklin
How can we make this possible?
Start from the assumption that whatever you want to do is possible and then work your way back. You might find that what you wanted to do is impractical for the time being but with the pace of change in todays world, it might become practical sooner than you think.
It always seems impossible until its done.
– Nelson Mandela
Who can I learn from?
You should never work anywhere where you are the smartest person in the room.
Pick jobs and companies where you can work with people who inspire you and challenge you to be better. It doesn’t have to be coding related, there is a world outside your text editor and the command line. Learn things from other fields and find ways to apply it in your job.
Being competent isn’t good enough anymore.
Am I learning the right things?
I assume you are already actively learning.
You wouldn’t be reading this post if you didn’t want to learn. Are you learning the right things though?
People often tell me: “I’m learning a new language” and they invariably mention another language just like the one they already know. If you have a toolbox full of hammers rather invest in a screwdriver.
If you know OO, learn a functional language. I recommend Haskell since there is no way to cheat, be warned, your brain might melt a little.
If you have those 2 under the belt check out a logical language like Prolog. Make sure you know a dynamic language like Ruby. And if you get a chance check out APL. It’s beautiful.
How can I make this more transparent?
The hardest part of fixing a problem is finding it.
Do everything in your power to make your solutions transparent. Write lavish logs, throw exceptional exceptions, make your code clean and sparkly.
Every time you struggle to find a problem make sure the next guy can find it with less effort.
What is the return on effort?
Everything comes at a cost. Not writing that unit test buys you a few minutes right now but at what cost later on? Taking a week to research existing algorithms might save you 3 months in development time by the end of the project.
If it takes you 20 minutes to do a deployment and you do 10 deployments a week, how long until taking those 3 hours to automate it is paid back?
That plugin framework that might possibly save you 2 days one day. Does it make the things you do everyday take 5 minutes longer? How long until those 5 minutes add up to more than those mythical 2 days?
This is a marathon, not a sprint.
Am I solving the right problem?
Writing a script to periodically restart a service to improve stability is awesome. What’s even more awesome is fixing the memory leaks that make the service crash.
Created a marvellous multi threaded app to generate 20 concurrent crystal reports? Nice! Why not investigate a switch to XSL-FO so each report doesn’t take 3 years to generate.
If you get a set of requirements that don’t solve the right problem. Speak up! You are more than a code typist, you are a problem solver.
Does anybody care?
This is probably the most important one of the lot.
If what you are building doesn’t make somebodies life better, gives them more time, saves them money.
Why are you doing it?
I know this list is long and it might seem like a lot to take in.
You don’t have to do it all at once though. Try this; find somebody you work with who is also on a mission to be the best they can be. Pick one question per week and commit to asking each other that question at least once a day. Think about your answers, be honest, be better.