Title: How do I learn? Date: 2013-04-20 17:34 Author: EmadMokhtar Category: Developer Tags: carftsmanship, coder, developer, learn, programmer
I’ve got many questions from young developers who want to learn programming and be professionals, I thought of writing this article to give them a glance about how I learn software stuff. I want to tell you I’m still learning and I’ll always pursuit knowledge and being professional software craftsman, and you should consider the same, believe me if you stop learning, you’ll become outdated in this field, and you’ll suck, I met developers with big fat years of experience but they are outdated since 5 years and they can’t go with new technologies anymore, ask any doctor or lawyer and he’ll tell you this craft is about leaning and learning and gaining knowledge.
Learning development is separated into two parts:
- Dealing with human.
- Dealing with computer.
Dealing with human like dealing with client, don’t tell me I just want to code dude, no sometime if not all of the time you have to deal with the clients, think of it as you have your own company you’re entrepreneur now, Do you want to write code only? or you want to create success product by gathering the right requirements from clients and work on them, and then deliver this product, How will you do this if you want to write code only?
Dealing with human is dealing with team, crap again dude I want to put my headphones listen to music, go to the zone, and write code, nah good developers are good team player, to help your team-mate in the project, raise flag when you have a problem, or peer programming, you must have dealing with humans skill.
You’ll learn these skills during your work, I don’t have a screen cast, video training, or book…oh wait wait actually I know some books taking about this:
Peopleware: Productive Projects and Teams (Second Edition)
Team Geek: A Software Developer's Guide to Working Well with Others
Dealing with computer is programming, In my opinion programming learning is in two stages, first learn how to code, and second leaning how to write code right or how to produce clean code. You’ll learn well if you learn from your mistakes, personally I learnt from my mistakes, every time I made a mistake I was very sad and in the beginning I made a lot of silly mistakes, please be passionate, never give up, keep going, and learn from it, I know it’s so hard in the beginning but you’ll love what you’re doing.
Software craftsmanship is an approach to software development that emphasizes the coding skills of the software developers themselves. It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over developer accountability.
In Clean Code book Martin Bob aka Uncle Bob wrote craftsmanship is separated into two parts Knowledge and Experience. Knowledge is the learn how to, and Experience is using knowledge to build something, so learn and practice by doing something, if you can’t build something with what you just learn you can build something as side project, this slides encourage me to do some side projects
<script async class="speakerdeck-embed" data-id="508b4413c21140000200a7b7" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>This list of materials where you can learn something some are free and some are paid, so feel free to add yours in comments and give me your feedback about them.
Books for developers are like water for fish, you need to read, read, and read. Technology focused books like ASP.NET books there are many of them in market but make sure you pick nice ones first, personally I search for a book using Amazon read reviews and boom I pick on and read it. There are books I recommended but it’s not technology focused it focus in making you better developer:
The Clean Coder: A Code of Conduct for Professional Programmers (Robert C. Martin Series)
Clean Code: A Handbook of Agile Software Craftsmanship
Design Patterns: Elements of Reusable Object-Oriented Software
The Pragmatic Programmer: From Journeyman to Master
Effective Programming: More Than Writing Code
The Passionate Programmer: Creating a Remarkable Career in Software Development (Pragmatic Life)