What should I learn next as a programmer?(medium.com)
medium.com
What should I learn next as a programmer?
https://medium.com/@_cmdv_/what-should-i-learn-next-as-a-programmer-477728c5c3c4
50 comments
I have to both agree and disagree with this. Yes, the OP should build something...but I believe that for most people, they shouldn't necessarily build something so computer-science focused -- such as their own compiler, database, engine -- unless that's what they really want to do, eventually (i.e. go into computer science, or game development).
For people learning general programming...they should build something that is useful to them, in the very near future. When I had to learn Ruby on Rails for my new job, coming from PHP (and, well, a computer engineering, FWIW)...I learned Ruby quickly by using it to scrape Craigslist for apartment listings to my own CSV files for easier organization. It's a task I could already do in PHP, but now I could reap the benefits of a faster apartment search while learning a new language. As a new programmer, it's also helpful to understand what it means to build for an end user, even if that end-user is you. Even as an experienced programmer, I find it very helpful to do selfish-side-projects...because knowing what I need to have at the end of the day helps me get over the many obstacles I throw in front of myself (e.g. Am I following proper style? Should I refactor this now or later? etc. etc) that usually hinder my enjoyment of programming.
For people learning general programming...they should build something that is useful to them, in the very near future. When I had to learn Ruby on Rails for my new job, coming from PHP (and, well, a computer engineering, FWIW)...I learned Ruby quickly by using it to scrape Craigslist for apartment listings to my own CSV files for easier organization. It's a task I could already do in PHP, but now I could reap the benefits of a faster apartment search while learning a new language. As a new programmer, it's also helpful to understand what it means to build for an end user, even if that end-user is you. Even as an experienced programmer, I find it very helpful to do selfish-side-projects...because knowing what I need to have at the end of the day helps me get over the many obstacles I throw in front of myself (e.g. Am I following proper style? Should I refactor this now or later? etc. etc) that usually hinder my enjoyment of programming.
Thanks for this response. Completely agree that we need to build things that give us quick-wins. Writing a quick script that does something convenient illuminates the joy of programming like no other.
My point was of a more general nature, for those of us who want to make a long-term career out of programming, and keep getting better at it. A lot of us (myself included) get stuck re-building simple stuff in a newfangled technology every few months and mistake that for progress. If we are to ever get to a place where we have the confidence to build larger and more complex things, we have to try making them, instead of being slaves to the latest project with the most Github stars. It won't be easy, but that is the point of deliberate practice - do something that is slightly beyond our reach and slowly push the bar.
My point was of a more general nature, for those of us who want to make a long-term career out of programming, and keep getting better at it. A lot of us (myself included) get stuck re-building simple stuff in a newfangled technology every few months and mistake that for progress. If we are to ever get to a place where we have the confidence to build larger and more complex things, we have to try making them, instead of being slaves to the latest project with the most Github stars. It won't be easy, but that is the point of deliberate practice - do something that is slightly beyond our reach and slowly push the bar.
There's nothing wrong with small throwaway projects. Skimming through the article I noticed the fireworks picture. There's an idea staring you in the face. WebGL/OpenGL particles to create fireworks, or perhaps snow, water, etc.
Yeah, I tried this. IMO, if you don't have the grounding to do such a project justice, this is a good way of getting lost in the weeds and crash and burn hard once it passes your level.
There's nothing wrong with taking a few projects at a time to try and build up to where you want to be.
There's nothing wrong with taking a few projects at a time to try and build up to where you want to be.
I'd say stop worrying about the technology you use and start worrying about the question you're trying to answer and problems you're trying to solve.
> Programmers should really take a leaf from the Mathematics & Sciences. In those subjects they are endlessly looking for new solutions and then crediting or discrediting each other, in a logical manner with the use of facts, calculations, proofs and actual data. Not gut feelings, random beliefs and twitter debates!
This problem is worse in the sciences, there are even more 'schools of thought' and people stuck in certain modes of thinking. "Science advances one funeral at a time" is a well-known quote for a reason.
That all said, yes, go explore new technology, try it out, do what you enjoy, I find it's only ever been beneficial :)
> Programmers should really take a leaf from the Mathematics & Sciences. In those subjects they are endlessly looking for new solutions and then crediting or discrediting each other, in a logical manner with the use of facts, calculations, proofs and actual data. Not gut feelings, random beliefs and twitter debates!
This problem is worse in the sciences, there are even more 'schools of thought' and people stuck in certain modes of thinking. "Science advances one funeral at a time" is a well-known quote for a reason.
That all said, yes, go explore new technology, try it out, do what you enjoy, I find it's only ever been beneficial :)
Totally agree. The motivation for learning a tool starts trying to solve a related problem. In me case I want to explore which programing languages are more relevant today so I made a little experiment at nkittsteiner.github.io for measure more popular languages but without the context of the problem we are trying to solve it's irrelevant
[deleted]
My advice (to the question, not the brilliant article), is to learn how to cook. A good or great diet, with fun food as well as easy healthy food is one big way to improve everything about your life. Its truly amazing what a difference it can have.
Ok. How?
As a former professional cook, my advice has remained consistently "Watch every damn episode of Good Eats you can get your hands on."
Alton Brown's recipes aren't always my preferred method, but he's an excellent teacher, and great at explaining the science and the "why" behind how cooking works instead of relying on pure folk wisdom like most cooking teaching.
Honestly, if you watch all 10 seasons of Good Eats you'll probably get more out of it than you would a culinary degree from all but a handful of schools.
Alton Brown's recipes aren't always my preferred method, but he's an excellent teacher, and great at explaining the science and the "why" behind how cooking works instead of relying on pure folk wisdom like most cooking teaching.
Honestly, if you watch all 10 seasons of Good Eats you'll probably get more out of it than you would a culinary degree from all but a handful of schools.
Interesting. Does it cover the French kitchen? How about the world kitchen?
Indirectly yes, but it is more focused on ingredients and techniques, rather than cuisines and recipes. For example there will be an episode about butter, which just talks about exactly what butter is, how it behaves in different situations and everything you can do with butter and another episode episode about braising, that just breaks down what braising is and how it works. Once you have all those basics down pat, you can go on and make and adapt recipes from other sources with far greater skill and confidence.
You sold me. I've been wanting exactly this type of resource, not yet another book of recipes. I can follow a recipe, but I want to experiment more than "taste I think this needs more seasoned salt/butter." I'll start watching Good Eats now.
So true! Alton Brown is a genius. Plus he throws in a chemistry lesson.
Hmmm.. never heard of Good Eats.
http://thestonesoup.com/blog/
You don't have to read the heartfelt blog posts if you don't want to, just scroll until you see a recipe.
Note that they all have five ingredients or less (excluding salt & pepper).
They're also all really nice and tasty, as far as I've tried them.
I like this because it sees food as just simple combinations of cooked edible things. You don't have to combine dozens of spices or do anything super fancy.
Just get a chef's knife that doesn't suck. If you want to, look at some videos of chopping techniques, especially for specific tricky things like onions—you can do it so much faster and better with a simple technique, astound your friends!
And do some basic "mise en place," which is just the French word for "preparing your stuff ahead of time even maybe using a few different bowls." If any moment of cooking a meal stresses you out, notice that and think about if you can do it in a way that isn't stressful. Like, if you're suddenly chopping an onion while you're watching garlic in a skillet, you should have prepared all that stuff beforehand.
Be fundamentally nonchalant about measures and times, for almost everything, except in baking. (Rice/water ratios etc are good to follow if you don't want soggy/hard rice.) Recipes say "2 tablespoons" because they need to give some indication, but it will probably be fine if you put in more or less. It's nice if you can look at a recipe, get the gist of it, and then just go with your intuition—if you're wrong, you learn something.
You don't have to read the heartfelt blog posts if you don't want to, just scroll until you see a recipe.
Note that they all have five ingredients or less (excluding salt & pepper).
They're also all really nice and tasty, as far as I've tried them.
I like this because it sees food as just simple combinations of cooked edible things. You don't have to combine dozens of spices or do anything super fancy.
Just get a chef's knife that doesn't suck. If you want to, look at some videos of chopping techniques, especially for specific tricky things like onions—you can do it so much faster and better with a simple technique, astound your friends!
And do some basic "mise en place," which is just the French word for "preparing your stuff ahead of time even maybe using a few different bowls." If any moment of cooking a meal stresses you out, notice that and think about if you can do it in a way that isn't stressful. Like, if you're suddenly chopping an onion while you're watching garlic in a skillet, you should have prepared all that stuff beforehand.
Be fundamentally nonchalant about measures and times, for almost everything, except in baking. (Rice/water ratios etc are good to follow if you don't want soggy/hard rice.) Recipes say "2 tablespoons" because they need to give some indication, but it will probably be fine if you put in more or less. It's nice if you can look at a recipe, get the gist of it, and then just go with your intuition—if you're wrong, you learn something.
Take a cooking book, search something you like, buy the parts, start. Really .. cooking is not hard. When you are more advanced you can improvise and experiment, switch ingredients for others and so on, but that's optional. For 99% of all things you want to cook there is a recipe out there that was already tested by someone else.
If you really do not know how to start there are always cooking classes. They can be fun, but they are not strictly necessary.
If you really do not know how to start there are always cooking classes. They can be fun, but they are not strictly necessary.
I agree. Some people really put cooking on a pedestal. Really you just need to find a recipe that sounds like something you will like (and I recommend a good book rather than the internet, and Mexican!), and then source the best possible ingredients and have fun.
Once a few dishes have been prepared it sheds a lot of light on how easy it actually is. Obviously there are more complicated recipes out there, but its pretty simple to impress people with the right recipes.
Hilarious how this whole comment section has turned into advice on how to cook.
Once a few dishes have been prepared it sheds a lot of light on how easy it actually is. Obviously there are more complicated recipes out there, but its pretty simple to impress people with the right recipes.
Hilarious how this whole comment section has turned into advice on how to cook.
[deleted]
Here's a way to get started:
* watch YouTube videos Jamie Oliver - he has lots of great intro videos, including all the equipment you'll need. You can always get one of his books. His video on knife skills really helped me out.
* get "The Joy of Cooking". It's a treasure trove of recipes which you can learn from.
* learn basic knife skills. You need 3 knives - a chopper, a paring knife, and a bread knife. Others will help you both those 3 are the essential.
* start simple and work your way up. You should be able to make eggs in just a few minutes. Learn a simple breakfast recipe, a simple lunch recipe (like a fancy sandwich) and a simple dinner.
* watch a few cooking shows. Even an entertainment show like Chopped will give you some ideas for how chefs look at a pile of recipes and compose something.
* if you drink, learn a few basic cocktails. also learn the basic red & white wines.
With a little bit of practice you'll realize that you just need to have a few stock ingredients on hand to be able to take care of yourself every day and cook for friends and family.
The feeling you get the first time you cook a meal for someone else is a great one. :)
With a little bit of practice you'll realize that you just need to have a few stock ingredients on hand to be able to take care of yourself every day and cook for friends and family.
The feeling you get the first time you cook a meal for someone else is a great one. :)
I really like the way Jamie Oliver present himself in any of his videos on youtube. He is really engaging, and breaks the steps to something you and I can comprehend and execute. Actually, the other cooks in his Foodtube are also quite good. DJ BBQ cracks me up, and his cooking looks really good too.
If you're interested in British Indian cooking, try Madhur Jaffrey's Indian Cookery:
http://www.amazon.co.uk/Madhur-Jaffreys-Indian-Cookery-Jaffr...
This book, or at least the original, is at least partly responsible for the overwhelming popularity of Indian food in the UK and the ability to find any Indian ingredient you care to mention in any supermarket. It's well written, easy to follow, and her recipes all work.
She was one of the first TV chefs in the UK, and has written a million other books on Asian cooking of all kinds, all of which are just as good, and go into a lot of fascinating historical and cultural background as to just why you're making just what you're making.
A lot of the episodes of her TV series (from 1978!) are on Youtube.
http://www.amazon.co.uk/Madhur-Jaffreys-Indian-Cookery-Jaffr...
This book, or at least the original, is at least partly responsible for the overwhelming popularity of Indian food in the UK and the ability to find any Indian ingredient you care to mention in any supermarket. It's well written, easy to follow, and her recipes all work.
She was one of the first TV chefs in the UK, and has written a million other books on Asian cooking of all kinds, all of which are just as good, and go into a lot of fascinating historical and cultural background as to just why you're making just what you're making.
A lot of the episodes of her TV series (from 1978!) are on Youtube.
I feel like one of the basic premises for doing this is understanding the different nutrients and their contribution to your health and energy-levels. In addition, the price-factor is also something that means something to me as a student.
Apart from cooking - which as a few people mention is pretty easy once you realize it's more about common sense and taste than chemistry - the fact the most people think that fat will actually just turn into fat on your body, and that dieting is the way to go, is something I imagine is misrepresenting the importance of being able to put together a healthy and nutricious meal.
Unfortunately, I don't know any good english books on the subject, but I imagine there are plenty of shorter books that will explain how fat, carbs, protein and vitamins play a part in respect to your wellbeing. I would start here.
Next, I would take a look at my wallet and my daily schedule, and figure out when buying take-away is going to be the most realistic option (both in regards to price and context), and when I have the ability to prepare lunch or dinner from home. If you have access to a fridge, a simple lunchbox with carrots and chicken provides a sturdy and surprisingly satisfying meal. Both carrots and chicken can be prepared in large batches, and both holds up for 4-5 days which is a typical workweek. In the morning, you simply fill a box with ingredients, and you have one cheap, nutritious meal down. I usually spice something like this up with a handful of almonds or nuts, and perhaps purchase some milk or juice to go with it.
I don't even know if this makes any sense, but I have this stereotyped view on americans as people who rarely cook their own meals, partly due to the fact that it's cheaper to buy take-away due to lower salaries effect on the price-levels (I can see that being a factor in Europe).
If you've never been comfortable cooking yourself, I can see that this might be a daunting task. I know people who are afraid to cook without a recipe, which is something that I hardly ever bother to spend time finding anyway.
Apart from cooking - which as a few people mention is pretty easy once you realize it's more about common sense and taste than chemistry - the fact the most people think that fat will actually just turn into fat on your body, and that dieting is the way to go, is something I imagine is misrepresenting the importance of being able to put together a healthy and nutricious meal.
Unfortunately, I don't know any good english books on the subject, but I imagine there are plenty of shorter books that will explain how fat, carbs, protein and vitamins play a part in respect to your wellbeing. I would start here.
Next, I would take a look at my wallet and my daily schedule, and figure out when buying take-away is going to be the most realistic option (both in regards to price and context), and when I have the ability to prepare lunch or dinner from home. If you have access to a fridge, a simple lunchbox with carrots and chicken provides a sturdy and surprisingly satisfying meal. Both carrots and chicken can be prepared in large batches, and both holds up for 4-5 days which is a typical workweek. In the morning, you simply fill a box with ingredients, and you have one cheap, nutritious meal down. I usually spice something like this up with a handful of almonds or nuts, and perhaps purchase some milk or juice to go with it.
I don't even know if this makes any sense, but I have this stereotyped view on americans as people who rarely cook their own meals, partly due to the fact that it's cheaper to buy take-away due to lower salaries effect on the price-levels (I can see that being a factor in Europe).
If you've never been comfortable cooking yourself, I can see that this might be a daunting task. I know people who are afraid to cook without a recipe, which is something that I hardly ever bother to spend time finding anyway.
> Unfortunately, I don't know any good english books on the subject
Absent a better recommendation from someone else, I'll suggest "Let's Eat Right to Keep Fit" by Adelle Davis. I regard it as a databook on the components in your body.
Absent a better recommendation from someone else, I'll suggest "Let's Eat Right to Keep Fit" by Adelle Davis. I regard it as a databook on the components in your body.
Pick up Delia Smith's Complete Cookery Course (classic version) and start trying some of the recipes. You'll pick this book up for next to nothing second hand (if someone is foolhardy enough to part with it in the first place).
I grew up in a household where everyone cooked, it was (and still is) a massive part of our family. This book was the cornerstone of my 'education' even before I was a teenager. My Mum always had her nose in it. I cannot recommend it enough. It's also worth seeking out some of Delia's cooking shows, there are probably a ton of them on YouTube.
Follow her instruction and you will not go wrong. I guarantee it.
I grew up in a household where everyone cooked, it was (and still is) a massive part of our family. This book was the cornerstone of my 'education' even before I was a teenager. My Mum always had her nose in it. I cannot recommend it enough. It's also worth seeking out some of Delia's cooking shows, there are probably a ton of them on YouTube.
Follow her instruction and you will not go wrong. I guarantee it.
I find sites like https://www.blueapron.com/ as a great source of inspiration - few meals selected for a week eliminate problem of choosing by your own / selecting the one, that you are capable of doing. And trust me on that - especially as I can't order food from them, I only browse their recipes (they don't deliver to Poland yet...)
Start small, try loads of different things and see what you like. I started really considering my cooking when I bought a rice cooker. Its very easy, fast, and a clean way to cook great food.
Practice! Practice! Practice! Just find recipes and start cooking.
That's right. Also watch Chef's Table at Netflix for a pinch of inspiration.
Why not learn just one of these:
- programming languages with different paradigms (Functional, Imperative, Logic etc)
- Data structures and algorithms (implement a few in each paradigm)
- Compilers
- Digital electronics
- Operating systems
- Networking
- Math for CS
- Orthogonal: Art of debugging, collaboration, technical writing for documentation
Learning the fundamentals, becoming better at these will help one see through the 'stack of tons of languages, tools, frameworks' and yet be able to handle all of these with relative ease.
I wish 'Elements of Computing systems'[1] were there when I started as a programmer.
[1] http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
Learning the fundamentals, becoming better at these will help one see through the 'stack of tons of languages, tools, frameworks' and yet be able to handle all of these with relative ease.
I wish 'Elements of Computing systems'[1] were there when I started as a programmer.
[1] http://www.amazon.com/Elements-Computing-Systems-Building-Pr...
Pardon my French, but this is one of the most idiotic things I have read in a long time.
- author starts with saying he's a beginner. But somehow, this gives him better insights than others, because 'fresh pair of eyes', and 'resistance to new things'
- then he says (about the industry in general) 'To me it seems really slow to adopt new concepts.' (wtf?)
- except then he says 'Programmers should really take a leaf from the Mathematics & Sciences'. Because they move faster than programming, he must mean? To paraphrase Babbage badly - 'I am unable to comprehend the sort of confusion that could lead to such a statement'.
- then he says that the 'the primary source of innovation in the it industry is from open source projects'. (yeah, sorry to be that guy, but imma need to put some 'citation needed' on that one)
- and then, somehow, this leads to a justification on why he wants to learn about some javascript framework (because of course - 'learning' as a programmer is about getting used to the idiosyncrasies of the umpteenth 'framework' that does the exact same thing as the other ones before it, except in a way that is shitty in another way. O excuse me, 'having it under your belt'.)
- but of course, if experienced people call out the futility of it, they are idiots! Because he started off this whole thing with 'I’ve experienced a strange culture of the better a programmer becomes at a subject the less they feel the need to learn.'!) So ignore people who've been there because they're just old geezers who don't know anything anyway!
What ticked me off enough to waste 10 minutes of my life on writing the above, was the claim that software should be more like proper engineering and science - and then going on to claim that the way to do this is by jumping from one navel-gazing fad framework to the next even faster! Lol this attitude would be laughed out of a proper engineering firm so fast it wouldn't have time to take its jacket off.
And of course, everybody is free to post whatever they want on the internet, so why do I care; but cultish nonsense like this does actually harm newcomers who think it somehow represents truth, and who might waste years of their career on chasing technical details while in the mean time neglecting (or not even realizing the existence of) what truly matters for progression as a software engineer: the bigger picture within the business, evergreen CS fundamentals, complementary technology, etc.
Now if you'll excuse me, my local senior center's workshop 'Dealing with age-induced grumpiness: an introduction for those who see 40 looming!' starts in half an hour...
- author starts with saying he's a beginner. But somehow, this gives him better insights than others, because 'fresh pair of eyes', and 'resistance to new things'
- then he says (about the industry in general) 'To me it seems really slow to adopt new concepts.' (wtf?)
- except then he says 'Programmers should really take a leaf from the Mathematics & Sciences'. Because they move faster than programming, he must mean? To paraphrase Babbage badly - 'I am unable to comprehend the sort of confusion that could lead to such a statement'.
- then he says that the 'the primary source of innovation in the it industry is from open source projects'. (yeah, sorry to be that guy, but imma need to put some 'citation needed' on that one)
- and then, somehow, this leads to a justification on why he wants to learn about some javascript framework (because of course - 'learning' as a programmer is about getting used to the idiosyncrasies of the umpteenth 'framework' that does the exact same thing as the other ones before it, except in a way that is shitty in another way. O excuse me, 'having it under your belt'.)
- but of course, if experienced people call out the futility of it, they are idiots! Because he started off this whole thing with 'I’ve experienced a strange culture of the better a programmer becomes at a subject the less they feel the need to learn.'!) So ignore people who've been there because they're just old geezers who don't know anything anyway!
What ticked me off enough to waste 10 minutes of my life on writing the above, was the claim that software should be more like proper engineering and science - and then going on to claim that the way to do this is by jumping from one navel-gazing fad framework to the next even faster! Lol this attitude would be laughed out of a proper engineering firm so fast it wouldn't have time to take its jacket off.
And of course, everybody is free to post whatever they want on the internet, so why do I care; but cultish nonsense like this does actually harm newcomers who think it somehow represents truth, and who might waste years of their career on chasing technical details while in the mean time neglecting (or not even realizing the existence of) what truly matters for progression as a software engineer: the bigger picture within the business, evergreen CS fundamentals, complementary technology, etc.
Now if you'll excuse me, my local senior center's workshop 'Dealing with age-induced grumpiness: an introduction for those who see 40 looming!' starts in half an hour...
"Evergreen CS fundamentals" is absolutely key. I've had a rant brewing for a while now that this article exemplifies. A newcomer who has picked up Javascript cannot seriously want programming to be much more like maths / sciences, or even more like a profession. Simply because they all place massive barriers to new entrants that require years of (often postgraduate) studies.
Learning some interesting data structures, how Javascript works under the hood, enjoying the fun of null pointer exceptions, understanding relational databases and maybe some lambda calculus. Those things make you a better developer and have the added advantage of helping you understand the next fad that comes along.
The article points out that more experienced developers often seem disinterested in learning new things. I'd covert that to being much more aware of what "new" actually means. A "new" Javascript thing fundamentally can't do anything different from another Javascript thing, it might do it more verbosely or abstract away some really funky code. A more experienced dev should consider being interested by things like V8, server and client side Javascript, Typescript / ES6 because they offer more fundamental change.
Learning some interesting data structures, how Javascript works under the hood, enjoying the fun of null pointer exceptions, understanding relational databases and maybe some lambda calculus. Those things make you a better developer and have the added advantage of helping you understand the next fad that comes along.
The article points out that more experienced developers often seem disinterested in learning new things. I'd covert that to being much more aware of what "new" actually means. A "new" Javascript thing fundamentally can't do anything different from another Javascript thing, it might do it more verbosely or abstract away some really funky code. A more experienced dev should consider being interested by things like V8, server and client side Javascript, Typescript / ES6 because they offer more fundamental change.
Hi, I'm the author.
I think you've done a lot of reading between the lines. The intention of the article was to get people inspired to try experiment and explore new things.
I did say I was painting with a wide brush. That doesn't excuse some inaccuracies you don't agree with.
I'm not a grad student or a young whipper snapper, being closer to 40 than my 30's.
These are only observation I've experienced so far and appreciate your view on the mater.
I've also been learning Haskell so I am interested in the whole FP paradigm, so though I've only been do JS so far would really like learn other languages.
Maybe my experiences so far aren't what most people experience coming into programming.
I'm sure what ever I say won't make a slight difference but wanted to clarify a few points.
Happy Hacking
I think you've done a lot of reading between the lines. The intention of the article was to get people inspired to try experiment and explore new things.
I did say I was painting with a wide brush. That doesn't excuse some inaccuracies you don't agree with.
I'm not a grad student or a young whipper snapper, being closer to 40 than my 30's.
These are only observation I've experienced so far and appreciate your view on the mater.
I've also been learning Haskell so I am interested in the whole FP paradigm, so though I've only been do JS so far would really like learn other languages.
Maybe my experiences so far aren't what most people experience coming into programming.
I'm sure what ever I say won't make a slight difference but wanted to clarify a few points.
Happy Hacking
I got the same impression that this guy did from your article, as well. It sounds like you are taking your limited experience and projecting it through the lens of various media (which includes places like this) to come up with an understanding of what 'the industry' is. You may be 35 years old, but in the same way 'number of years experience' doesn't make someone a good programmer, number of years living doesn't necessarily make someone wise. It's OK to fire off some thoughts, but don't be surprised when people with a different perspective and more wisdom let you know you're missing some pieces.
I think with the ending of your article it got more into the direction that you state here. People should experiment, try out new things and don't be afraid of new stuff. Learning is always good as long as it gets reflected upon and learning is seldom useless.
But the tone you set at the beginning is harsh and it does not feel like you spend a lot of time with more experienced developers. They are often so experienced because they didn't stop learning.
And then the whole article has some anecdotal feeling. Everybody had different experiences with different communities, I for myself had the feeling that many researchers at the university often are only interested in their specific topic. While all my programming colleagues did tons of other stuff where they had to learn things like brewing, cooking, playing instruments and so on. But now I work in an environment with researchers from the humanities and they're overly exited about digital research methods and they invest a lot of energy into learning those. On the other hand, the last time I attended a meeting of Nodejs people I saw a presentation about a new cool framework for restful APIs that used experimental features of Nodejs and the presenter stated that he used it while developing a backend for a random client. I'm pretty sure the client would have liked a bit of grumpiness against new frameworks there.
At last, a lot of innovation is driven by big companies. Think about Andrei Alexandrescu and his work at Facebook or Simon Peyton Jones at Microsoft Research (only to name a few).
But the tone you set at the beginning is harsh and it does not feel like you spend a lot of time with more experienced developers. They are often so experienced because they didn't stop learning.
And then the whole article has some anecdotal feeling. Everybody had different experiences with different communities, I for myself had the feeling that many researchers at the university often are only interested in their specific topic. While all my programming colleagues did tons of other stuff where they had to learn things like brewing, cooking, playing instruments and so on. But now I work in an environment with researchers from the humanities and they're overly exited about digital research methods and they invest a lot of energy into learning those. On the other hand, the last time I attended a meeting of Nodejs people I saw a presentation about a new cool framework for restful APIs that used experimental features of Nodejs and the presenter stated that he used it while developing a backend for a random client. I'm pretty sure the client would have liked a bit of grumpiness against new frameworks there.
At last, a lot of innovation is driven by big companies. Think about Andrei Alexandrescu and his work at Facebook or Simon Peyton Jones at Microsoft Research (only to name a few).
First, thank you for the article. I found it interesting reading and I know it is quite hard to take a risk by writing something that might be interpreted badly by others. But since you are here, I thought you might appreciate some feedback.
One of the biggest problems with programmers in general is not their conservatism, but rather the wide variety of opinions that are incompatible. Or, possibly in a less polite way of framing it: programmers are often wrong. One time one of my young colleagues opined that while he was sometimes wrong, there was no way that he could be wrong all the time. I had to think about it a lot, but I realized eventually that, yes, it is actually quite easy to be wrong all the time as a programmer.
You speak very enthusiastically about measuring your success and taking action based on a rigorous scientific approach, but I don't think you will be successful. Or at least, if you are then you are doing something extraordinary and I will very much look forward to your next blog post ;-)
A massive problem in this industry is confirmation bias. That's when we have an idea and we go out looking for evidence that it is correct. If we find said evidence, we often feel vindicated in our beliefs. Unfortunately if we have not also searched for evidence that we are wrong, then we have fallen victim to this bias.
Reading blog posts of people you respect and trying out techniques to see if you agree is fantastic. However, it's also a great way to fall victim to confirmation bias. Soon, you start to see thing coloured one way and people who do not agree seem to be wrong, or at least out of date.
1.5 years is not enough time to be able to form reasonable judgements about whether the application of a technique is good or not. At the very least you need to be able to build a huge code base and let it crumble under its own weight before you can even begin to see the issues involved. Write at least 100,000 lines of code first and then re-evaluate your position. Better to write 500,000 or even a million lines.
I started programming at the age of 9. I'm 48 now. I got my first paying gig at 18 and there have been many, many more days in my life where I have been programming than where I haven't. I can tell you that I'm not holding on to my old techniques with a death grip. It's just that in several decades of being a professional programmer, I know thousands of ways to fail and only a few to succeed.
I sincerely wish you the best in your adventure and I hope you keep the spirit you have now. Just understand that the terrain gets considerably more rocky as you go forward ;-).
One of the biggest problems with programmers in general is not their conservatism, but rather the wide variety of opinions that are incompatible. Or, possibly in a less polite way of framing it: programmers are often wrong. One time one of my young colleagues opined that while he was sometimes wrong, there was no way that he could be wrong all the time. I had to think about it a lot, but I realized eventually that, yes, it is actually quite easy to be wrong all the time as a programmer.
You speak very enthusiastically about measuring your success and taking action based on a rigorous scientific approach, but I don't think you will be successful. Or at least, if you are then you are doing something extraordinary and I will very much look forward to your next blog post ;-)
A massive problem in this industry is confirmation bias. That's when we have an idea and we go out looking for evidence that it is correct. If we find said evidence, we often feel vindicated in our beliefs. Unfortunately if we have not also searched for evidence that we are wrong, then we have fallen victim to this bias.
Reading blog posts of people you respect and trying out techniques to see if you agree is fantastic. However, it's also a great way to fall victim to confirmation bias. Soon, you start to see thing coloured one way and people who do not agree seem to be wrong, or at least out of date.
1.5 years is not enough time to be able to form reasonable judgements about whether the application of a technique is good or not. At the very least you need to be able to build a huge code base and let it crumble under its own weight before you can even begin to see the issues involved. Write at least 100,000 lines of code first and then re-evaluate your position. Better to write 500,000 or even a million lines.
I started programming at the age of 9. I'm 48 now. I got my first paying gig at 18 and there have been many, many more days in my life where I have been programming than where I haven't. I can tell you that I'm not holding on to my old techniques with a death grip. It's just that in several decades of being a professional programmer, I know thousands of ways to fail and only a few to succeed.
I sincerely wish you the best in your adventure and I hope you keep the spirit you have now. Just understand that the terrain gets considerably more rocky as you go forward ;-).
Hi,
thank you for your constructive response, I agree with what you are saying. Due to the length of my experience it's going to be hard to give my beliefs any sort of foundation to an experienced programmer. With this in mind I also wrote the article to hear and learn from other people's constructive views.
I believe there is no shame in being wrong, because to me that is the only way one will ever learn and improve. I also try to be aware of trying not to fall into the bias trap, so I try to use the null hypothesis when it comes to choosing what to follow or learn. But most importantly I want to learn a subject in which I take a real interest and passion. Then branch out from there.
Like I mentioned before, the primary goal for my article is to inspire people to experiment and try things that might not be what the mass agree with and actually give it a go and taking it further than checking if the repo has enough stars.
Plenty of companies pay for developers to experiment and it would be impossible for all companies to afford this. At the same time there are plenty of chip100 companies that don't have any OSS projects yet they are clearly reaping the benefits. That comment is me being optimistic and potentially not a realist due to the harsh nature of business.
Thank you again for the response. :)
thank you for your constructive response, I agree with what you are saying. Due to the length of my experience it's going to be hard to give my beliefs any sort of foundation to an experienced programmer. With this in mind I also wrote the article to hear and learn from other people's constructive views.
I believe there is no shame in being wrong, because to me that is the only way one will ever learn and improve. I also try to be aware of trying not to fall into the bias trap, so I try to use the null hypothesis when it comes to choosing what to follow or learn. But most importantly I want to learn a subject in which I take a real interest and passion. Then branch out from there.
Like I mentioned before, the primary goal for my article is to inspire people to experiment and try things that might not be what the mass agree with and actually give it a go and taking it further than checking if the repo has enough stars.
Plenty of companies pay for developers to experiment and it would be impossible for all companies to afford this. At the same time there are plenty of chip100 companies that don't have any OSS projects yet they are clearly reaping the benefits. That comment is me being optimistic and potentially not a realist due to the harsh nature of business.
Thank you again for the response. :)
the above was a response to @roel_v :)
I must also be one of those suffering from age-induced grumpiness as I agreed with everything you just said. It was a very confused article indeed!
I'm sure you can disagree without being so rude.
Learn different things - I recently started my side project in a bunch new technologies to myself like
* swift2 (iOS)
* elixir, phoenix framework, ecto (not that new to me, but I've never shipped anything to prod with it)
* elm - javascript replacement
Everything that is completely different from your current "stack" will give a new perspective... JS dev? Try elm, look a pure functional languages.
* swift2 (iOS)
* elixir, phoenix framework, ecto (not that new to me, but I've never shipped anything to prod with it)
* elm - javascript replacement
Everything that is completely different from your current "stack" will give a new perspective... JS dev? Try elm, look a pure functional languages.
Same... I started learning Elixir and doing side projects in Elixir branching away from C# and WPF.
I must say Elixir is pulling me into it's functionally warm arms and I don't want to leave.
I must say Elixir is pulling me into it's functionally warm arms and I don't want to leave.
More ideas for going orthogonal:
* Frontend guy? Do some server-side/backend work, learn about databases and backend messaging services.
* JS runs on event loop. Try a language/platform that doesn't, maybe implement your own event loop there if you like.
* JS is memory-managed. Try something that is not.
Most of all, JS is a high-level language, try something low-level:
* C, the classic "portable assembly" foot-gun
* Actual assembly programming, for whatever architecture (the learning curve is quite steep at the beginning, but once you get past that it's not nearly as hard as most people seem to think)
* Read a book on OS design, they usually have a couple of reasonably accessible chapters about hardware (probably don't try to write your own OS for fun even if you're tempted to, that turns out to be a LOT of work)
The low-level stuff probably won't be all that useful for career development, but personally I find it fun to have an idea what's going on under the hood.
Also, understanding the basics network protocols you rely on daily (HTTP + HTTP2, TCP, IP, Ethernet) won't hurt. I see a lot of devs who have no clue, and it's hurting their work.
* Frontend guy? Do some server-side/backend work, learn about databases and backend messaging services.
* JS runs on event loop. Try a language/platform that doesn't, maybe implement your own event loop there if you like.
* JS is memory-managed. Try something that is not.
Most of all, JS is a high-level language, try something low-level:
* C, the classic "portable assembly" foot-gun
* Actual assembly programming, for whatever architecture (the learning curve is quite steep at the beginning, but once you get past that it's not nearly as hard as most people seem to think)
* Read a book on OS design, they usually have a couple of reasonably accessible chapters about hardware (probably don't try to write your own OS for fun even if you're tempted to, that turns out to be a LOT of work)
The low-level stuff probably won't be all that useful for career development, but personally I find it fun to have an idea what's going on under the hood.
Also, understanding the basics network protocols you rely on daily (HTTP + HTTP2, TCP, IP, Ethernet) won't hurt. I see a lot of devs who have no clue, and it's hurting their work.
As a programmer, i always have the problem "shit, from where should i have all the time to learn so many things?"
I must select. Funny that people have the opposite problem (or the don't have a family, other projects (house etc.), or other hobbies?).
I must select. Funny that people have the opposite problem (or the don't have a family, other projects (house etc.), or other hobbies?).
How's this even a question?
My learning list is so long by the time I get to it half the stuff I'd like to learn is already out of date or discontinued.
Sometimes get too wrapped up in getting stuff done to spend time learning. Can't go for too long though, or you get left behind.
My learning list is so long by the time I get to it half the stuff I'd like to learn is already out of date or discontinued.
Sometimes get too wrapped up in getting stuff done to spend time learning. Can't go for too long though, or you get left behind.
I feel this problem in relation to frameworks. Job listings, etc. tend to ask for specific frameworks or libraries, but they come and go too fast. Normally I do 'lazy evaluation' and only worry about learning a framework when I really need one.
Physics.
Really.
Really.
Don't learn anything new. Go build something substantial. Write a compiler, build a database, create a browser renderer, make a game engine. Build something that is not CRUD, and is over ten thousand lines of code, something that takes you years - a Forever Project. Keep at it, hone the fundamentals. Go deep, and learn to enjoy the pursuit.
Everyday you'll learn something new about how you like to think. You'll develop a voice so to speak. You may realize that language doesn't matter, or you may find a language perfect for you, maybe you'll itch to build one. Our tastes are as unique as us, there is no perfect answer, and no technology that will improve our craft magically. The only way is to write, deliberate, read, and rewrite, and keep doing it for a long time.