Becoming a Real Programmer
Upcoming SlideShare
Loading in...5
×
 

Becoming a Real Programmer

on

  • 1,123 views

 

Statistics

Views

Total Views
1,123
Views on SlideShare
1,120
Embed Views
3

Actions

Likes
1
Downloads
5
Comments
0

1 Embed 3

https://twitter.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • Before we begin, a little disclaimer. I’m a PHP developer, so this presentation has a lot of reference to PHP specifics, though most the principles can be applied to other languages. \n
  • I started doing web design in 2000,\n
  • back when Dreamweaver was a Macromedia product\n
  • Google was only the 12th top visited site beat out by \n
  • MSN\n
  • Yahoo, Ebay, AOL\n
  • and GEO cities. \n
  • Because I was a designer, that meant learning basic HTML coding principles by reading the source code written by \n
  • Dreamweaver, and we all know Dreamweaver writes\n
  • poo code.\n
  • This naturally lead me to wanting to understand more advanced ways to add interaction to the HTML I was writing, which lead to starting to study JavaScript.\n
  • At the same time, I was doing Flash animations, also a Macromedia product, and got highly interested in multimedia design as an extension of wanting to add interactions to the pages I was designing. At the time, Flash was the best way to add interaction and took a equal focus to JavaScript, and eventually most of the interaction focus. \n\n
  • Once you start this rabbit hole, you'll eventually want to start saving data and manipulating that data, so a couple years into my career I ended up working in a Cold Fusion shop which allowed me to learn my first backend technology. \n
  • Finally, this rabbit hole lead me to learning the before mentioned languages but also ColdFusion, \n
  • Lingo\n
  • ActionScript\n
  • and PHP.\n
  • But in doing all this, I had a basic philosophy of \n
  • "I don't care how this works, I just want it to work." It was a very \n
  • "Get 'R Done" style of programming. \n
  • I blame this mostly on the environment in which I learned these languages, agency life, but that really is a copout. Sure, this environment didn't really give me the luxury of spending time to fully \n
  • grok things, but I could of done more myself. It also didn't help that many of the languages that I learned, if not all, and the time in which I learned them only exposed me to \n
  • a procedural method of programming. \n
  • But about a year ago, I realized I was limiting my ability to accomplish the more ambitious tasks I was dreaming up, also my peer group was shifting as I was hanging out with more engineers as opposed to creatives. All this lead me to desire more understanding of the skill set that made me most my money. This only took 12 years. \n\n
  • So my new philosophy has been to "Fully understand what I'm doing and the technology I'm using to make it happen."\n
  • This is the manner I've employed in which to make this new philosophy happen. \n
  • First, I started getting involved in the community. To hang around people who understand the technologies I used and wanted to use. Also to find people who were curious about similar things I was curious about. \n
  • I found most these people at the NashvillePHP user group, and the larger PHP community. At the time, I knew just about nothing, I still know little. But I never felt like an outcast or underneath anyone. It's been an amazing community to be a part of. \n
  • In the PHP community there is an initiative called PHP Mentoring which pairs up mentors with apprentices. To me, this is the best way to learn technology. I don't believe you need to go to college for a degree to do 80% of what the programming industry does. Even if you do, your real learning won't start until you get into the marketplace. \n
  • After getting involved next, you need to know what technologies you actually need to learn. \n
  • You won't find these in isolation, thus the importance of getting involved. Even then, a lot of what you learn is personal choice, not because of some standard. So being exposed to as many ways a possible to solve a program and the technologies used is the best way to make an informed decision on what you should learn.\n
  • Still, there are good guidelines that you can refer to such as Cal Evan's "5 Tools Ever PHP Developer Should Master". In this article Cal explains that the 5 tools ever PHP developer should master are: \n
  • A framework: PHP is full of frameworks. So many that you’d probably never learn them all. \n
  • Version Control: PHP works with all the major version control options that other languages also can use. \n
  • Entity Relationship Diagram (ERD): Databases can get ridiculously massive, easily. \n
  • A Debugger: Going through code 1 line at a time sucks. Use a debugger.\n
  • Finally a Unit Tester: Write tests to insure your code works in all use cases or go you’ll be going through your code line by line again. \n
  • So that was\n1. A Framework\n2. A version Control System\n3. An ERD tool (Entity relationship Diagram)\n4. A Debugger\n5. A Unit Testing Tool\n
  • All of these things are very important to learn, though I don't fully agree that learning a Framework and an ERD are on my top 5 tools, but still it's a good starting point. The ERD is an arguable point, but the Framework I'm pretty firm about for this reason:\n
  • Frameworks are great for saving you time and effort, but unless you already understand the language you'll always be limited to what you can accomplish. \n
  • Not only that, you'll never be able to maintain that framework or fix issues with it when they arise, and they do arise. I liken it to buying a car: If you don't know how that car works you'll always be reliant on someone else to fix and maintain it, thus making you only a user and not an engineer. \n
  • Paul M Jones said a really smart thing once, and if you know Paul you know he always does, "Everyone should write a framework once, then throw it away." The idea being that by writing your own framework, you understand truly what goes into your application's codebase, what problems can arise and how to fix them. \n
  • So what would my list look like?\n1. Basic Sys Admin Skillz\n2. Command Line\n3. Version Control\n4. Debugging\n5. Unit Testing\n
  • So what have I focused on learning over the past year? Well, since I already knew PHP I focused on other gaps I had in my toolbox. \n
  • First was to get my basic system admin skills up to par. I won't say this should be your first thing to learn, but it is a skill that all good developers should have and will need at some point.\n
  • It's like learning your OS environment and just as important. To just learn an application that runs on the OS as opposed to the OS and it's applications is like just learning how to use IE on Windows. A lot of shit is going to go bad and you're not going to have any idea of why. \n
  • The ultimate goal of learning basic sys admin tasks is to be able to setup and maintain your own development stack. In PHP that's \n
  • Linux, \n
  • Apache, \n
  • MySQL or equivalent, \n
  • and PHP. \n
  • Next you need to consider your development environment. \nWhile learning the sys admin stuff, it's a good time to evaluate your whole development environment. \n
  • I believe most people should expose themselves to the command line at some point in their career, preferably early. This is the gateway to fully understanding how your computer works and harnessing and manipulating it's power. I believe this so much that I push for new developers to learn from the command line, not the OS's GUI. \n
  • Next in the environment is the Command Line\nAlso my push for command line usage comes from my desire for efficiency. GUIs use a ton of RAM, and I'd rather save that RAM for executing tasks, not writing them. \n
  • Next up is a Virtual Machine\nI personally like to keep my computer as clean and independent as possible from my dev environments so I like to setup a virtual machine and install my stack and application into it. Ben Ramsey has a good post on this. I also did my own post. You can find in the resources of this deck.\n
  • You can use VirtualBox, which is free, or Parallels or VMWare or any VM software to accomplish this. Configuration will be unique to each solution though, so make sure to do a bit of research to see which you like best. \n\n
  • Now that we have an environment, we need to choose an IDE\nBack in 2000, I started with Dreamweaver. Because I came from the visual world, Dreamweaver was the best solution for me at the time, though because most GUI IDEs suck horribly at writing clean code, I ended up having to learn how to write most my HTML by hand. \n
  • From there, I moved to Coda and really enjoyed it, but I found as I was moving to understanding the command line even further while learning the LAMP stack management, that Coda separated me to far from the command line. So I moved to VIM, which is an amazingly powerful and lightweight IDE which you can spend years learning and becoming more efficient with. \n
  • Finally, I needed something better for source control, something remote. So I picked up Git, though I'm still a newb. Again, I use Git from the command line, though there are GUIs, mainly because my terminal interface is now my OS environment and also to save RAM.\n
  • So my environment is made up of the follow:\n- OSX is my main OS\n- Terminal App as my primary tool\n- VirtualBox Running CentOs for my Development Server\nI’ve also run Ubuntu 11 on Parallels \n- VIM for my IDE\n- Git and GitHub for source control\n
  • Once you have a solid development environment, you can start focusing on the real important stuff, cause now that your tools are solid you can do solid work. So let’s talk about your development philosophy a now. \n
  • First thing first. If you are a procedural developer as I was, like a number of PHP developers are, you need to start studying object oriented programming. There are so many reasons to do this, but none more important than it is the right way to write your application. From efficiency to organization to reduction in duplication, there are so many reasons. \n
  • Now, this is not an easy thing to do by yourself and in fact, it's almost impossible to get all the nuances of OOP without having someone with experience walk you through it. This is why PHP mentoring has been really important to me. The one-on-one time with someone who knows all about this topic, as well as others, insures I fully understand what I'm trying to grok. \n
  • Along with understanding OOP comes learning about design patterns. Model View Controller is one pattern you've probably heard of, but there are many many more. To understand how to properly solve a programming problem it helps to have a good understanding of the different patterns and what types of problems they are good at solving. \n
  • I recommend the Design Patterns Elements for Reusable Object-Oriented Software by the gang of 4. It's a pretty complex book with a lot of complex topics. I recommend reading it with someone else or at least finding someone you can talk about the topics with. \n
  • Now I don't fully buy into test driven development, I do however believe in testing even if I don't always execute this perfectly, but it is a very useful tool to insure your code is lightweight and works. \n
  • Test Driven development is about writing your tests first, then writing the classes and methods. All tests will fail first and then you refactor by making the test work, then breaking them, then getting to work again until you have the simplest solution to your problem. \n
  • So as you code, you'll find the need for support tools to help execute all these practices. Depending on what language you develop in, your tools will be different, but for PHP here a couple I use. \n
  • A standard sniffer insures you are writing code that complies with a coding standard, such as in PHP there are Pear, PSR2.0 and many others. The standard sniffer will review your code for formatting compliance. \n
  • The reason you do this is so when you work with other people or with a team, all code that is written looks the same, allowing anyone on the team to easily pick up where someone else left off and finish the work. \n
  • Each language has built in testing tools. Use these, make sure your code works in all use cases. Break it and then fix it and then break it again and then fix it again. There is nothing more important than the knowledge that the code you've written works, even when changes are made. \n
  • So this is a start. There is so much more that I want to learn and need to learn. I just wanted to spend a sec highlighting these.\n
  • Continuous integration is a process for combining your development, build, quality control and testing, and launching of your application. It’s about automation of repetitive tasks in development. \n
  • At some point I want to play with Python because of it’s differences to PHP, and also because some concepts I have would be better solved with a less web focused language. \n
  • Selenium \n
  • At some point I want to experiment with a nonrational database as I’m quite familiar with standard SQL-rational database.\n
  • iOS, I have a few concepts that would be best suited on such an interactive medium, plus because I come from the UX/UI world, I’ve always been fascinated with the iOS platform for that reason. \n
  • The list actually goes on from there, as you can tell, I’m curious. \n
  • Finally, it's important to keep learning. Stay hungry for knowledge. This will not only give you some sense of fulfillment but will also insure you stay employable as a programmer. \n\n\n
  • Our industry changes almost daily. To stay competitive you much keep up with these changes. \n\nSo always be learning. \n
  • \n

Becoming a Real Programmer Document Transcript

  • 1. Becoming a real programmer. Jacques Woodcock @jacques_thekitFriday, October 19, 12
  • 2. Becoming a real programmer. Jacques Woodcock @jacques_thekitFriday, October 19, 12
  • 3. DisclaimerFriday, October 19, 12Before we begin, a little disclaimer. I’m a PHP developer, so this presentation has a lot ofreference to PHP specifics, though most the principles can be applied to other languages.
  • 4. Some BackgroundFriday, October 19, 12I started doing web design in 2000,
  • 5. Some Background 2000Friday, October 19, 12 back when Dreamweaver was a Macromedia product
  • 6. Some Background 2000 ?Friday, October 19, 12Google was only the 12th top visited site beat out by
  • 7. Some Background 2000 1st 12thFriday, October 19, 12MSN
  • 8. Some Background 2000 2nd 12thFriday, October 19, 12Yahoo, Ebay, AOL
  • 9. Some Background 2000 10th 12thFriday, October 19, 12and GEO cities.
  • 10. <html> Some Background <head> </head> <body> </body> </html>Friday, October 19, 12Because I was a designer, that meant learning basic HTMLcoding principles by reading the source code written by
  • 11. Some Background 2000Friday, October 19, 12Dreamweaver, and we all know Dreamweaver writes
  • 12. Some Background Insert Photo of Poo hereFriday, October 19, 12poo code.
  • 13. HTML JS Some BackgroundFriday, October 19, 12This naturally lead me to wanting to understand moreadvanced ways to add interaction to the HTML I was writing,which lead to starting to study JavaScript.
  • 14. HTML JS Some Background FlashFriday, October 19, 12At the same time, I was doing Flash animations, also aMacromedia product, and got highly interested in multimediadesign as an extension of wanting to add interactions to thepages I was designing. At the time, Flash was the best way toadd interaction and took a equal focus to JavaScript, andeventually most of the interaction focus.
  • 15. HTML JS Some Background FlashFriday, October 19, 12Once you start this rabbit hole, youll eventually want to startsaving data and manipulating that data, so a couple years intomy career I ended up working in a Cold Fusion shop whichallowed me to learn my first backend technology.
  • 16. HTML JS Some Background Flash ColdFusionFriday, October 19, 12Finally, this rabbit hole lead me to learning the beforementioned languages but also ColdFusion,
  • 17. HTML JS Some Background Flash ColdFusion LingoFriday, October 19, 12Lingo
  • 18. HTML JS Some Background Flash ColdFusion Lingo ActionScriptFriday, October 19, 12ActionScript
  • 19. HTML JS Some Background Flash ColdFusion Lingo ActionScript PHPFriday, October 19, 12and PHP.
  • 20. The Old PhilosophyFriday, October 19, 12But in doing all this, I had a basic philosophy of
  • 21. The Old Philosophy “I dont care how this works, I just want it to work.”Friday, October 19, 12"I dont care how this works, I just want it to work." It was avery
  • 22. The Old Philosophy “Get R Done”Friday, October 19, 12"Get R Done" style of programming.
  • 23. The Old Philosophy “I dont care how this works, I just want it to work.”Friday, October 19, 12I blame this mostly on the environment in which I learned theselanguages, agency life, but that really is a copout. Sure, thisenvironment didnt really give me the luxury of spending timeto fully
  • 24. To Grok = 1) Understand (something) intuitively or by empathy. 2) Empathize or communicate sympathetically; establish a rapport.Friday, October 19, 12grok things, but I could of done more myself. It also didnt helpthat many of the languages that I learned, if not all, and thetime in which I learned them only exposed me to
  • 25. Procedural Programming = programming paradigm, derived from structured programming, based upon the concept of the procedure call.Friday, October 19, 12a procedural method of programming.
  • 26. The New PhilosophyFriday, October 19, 12But about a year ago, I realized I was limiting my ability toaccomplish the more ambitious tasks I was dreaming up, alsomy peer group was shifting as I was hanging out with moreengineers as opposed to creatives. All this lead me to desiremore understanding of the skill set that made me most mymoney. This only took 12 years.
  • 27. The New Philosophy Fully understand what Im doing and the technology Im using to make it happen.Friday, October 19, 12So my new philosophy has been to "Fully understand what Imdoing and the technology Im using to make it happen."
  • 28. The PathFriday, October 19, 12This is the manner Ive employed in which to make this newphilosophy happen.
  • 29. Getting Involved The PathFriday, October 19, 12First, I started getting involved in the community. To hangaround people who understand the technologies I used andwanted to use. Also to find people who were curious aboutsimilar things I was curious about.
  • 30. Getting Involved The Path Nashville PHPFriday, October 19, 12I found most these people at the NashvillePHP user group,and the larger PHP community. At the time, I knew just aboutnothing, I still know little. But I never felt like an outcast orunderneath anyone. Its been an amazing community to be apart of.
  • 31. Getting Involved The Path PHP MentoringFriday, October 19, 12In the PHP community there is an initiative called PHPMentoring which pairs up mentors with apprentices. To me, thisis the best way to learn technology. I dont believe you need togo to college for a degree to do 80% of what the programmingindustry does. Even if you do, your real learning wont startuntil you get into the marketplace.
  • 32. Learning New TechnologiesFriday, October 19, 12After getting involved next, you need to know whattechnologies you actually need to learn.
  • 33. Learning New TechnologiesFriday, October 19, 12You wont find these in isolation, thus the importance of gettinginvolved. Even then, a lot of what you learn is personal choice,not because of some standard. So being exposed to as manyways a possible to solve a program and the technologies usedis the best way to make an informed decision on what youshould learn.
  • 34. 5 Tools Every PHP Developer Should Know Mr. PHPFriday, October 19, 12Still, there are good guidelines that you can refer to such asCal Evans "5 Tools Ever PHP Developer Should Master". Inthis article Cal explains that the 5 tools ever PHP developershould master are:
  • 35. 1 FrameworkFriday, October 19, 12A framework: PHP is full of frameworks. So many that you’d probably never learn them all.
  • 36. 2 Version Control Git SVN Jira Many others...Friday, October 19, 12Version Control: PHP works with all the major version control options that other languagesalso can use.
  • 37. 3 Entity Relationship Diagram (ERD)Friday, October 19, 12Entity Relationship Diagram (ERD): Databases can get ridiculously massive, easily.
  • 38. 4 DebuggerFriday, October 19, 12A Debugger: Going through code 1 line at a time sucks. Use a debugger.
  • 39. 5 Unit TesterFriday, October 19, 12Finally a Unit Tester: Write tests to insure your code works in all use cases or go you’ll begoing through your code line by line again.
  • 40. 1. Framework 2. Version Control 3. ERD 4. Debugger 5. Unit Tester Mr. PHPFriday, October 19, 12So that was1. A Framework2. A version Control System3. An ERD tool (Entity relationship Diagram)4. A Debugger5. A Unit Testing Tool
  • 41. 1. Framework 2. Version Control 3. ERD 4. Debugger 5. Unit Tester Mr. PHPFriday, October 19, 12All of these things are very important to learn, though I dontfully agree that learning a Framework and an ERD are on mytop 5 tools, but still its a good starting point. The ERD is anarguable point, but the Framework Im pretty firm about for thisreason:
  • 42. 1. Framework 2. Version Control 3. ERD 4. Debugger 5. Unit Tester Mr. PHPFriday, October 19, 12Frameworks are great for saving you time and effort, butunless you already understand the language youll always belimited to what you can accomplish.
  • 43. 1. Framework 2. Version Control 3. ERD 4. Debugger 5. Unit Tester Mr. PHPFriday, October 19, 12Not only that, youll never be able to maintain that frameworkor fix issues with it when they arise, and they do arise. I liken itto buying a car: If you dont know how that car works youllalways be reliant on someone else to fix and maintain it, thusmaking you only a user and not an engineer.
  • 44. 1. Framework 2. Version Control 3. ERD 4. Debugger 5. Unit Tester Mr. PHPFriday, October 19, 12Paul M Jones said a really smart thing once, and if you knowPaul you know he always does, "Everyone should write aframework once, then throw it away." The idea being that bywriting your own framework, you understand truly what goesinto your applications codebase, what problems can arise andhow to fix them.
  • 45. 1. Basic Sys Admin 2. Command Line 3. Version Control 4. Debugger 5. Unit Tester Not Mr. PHPFriday, October 19, 12So what would my list look like?1. Basic Sys Admin Skillz2. Command Line3. Version Control4. Debugging5. Unit Testing
  • 46. Learning New TechnologiesFriday, October 19, 12So what have I focused on learning over the past year? Well,since I already knew PHP I focused on other gaps I had in mytoolbox.
  • 47. Learning New TechnologiesFriday, October 19, 12First was to get my basic system admin skills up to par. I wontsay this should be your first thing to learn, but it is a skill that allgood developers should have and will need at some point.
  • 48. Learning New TechnologiesFriday, October 19, 12Its like learning your OS environment and just as important. Tojust learn an application that runs on the OS as opposed to theOS and its applications is like just learning how to use IE onWindows. A lot of shit is going to go bad and youre not goingto have any idea of why.
  • 49. Learning New Technologies LAMP StackFriday, October 19, 12The ultimate goal of learning basic sys admin tasks is to beable to setup and maintain your own development stack. InPHP thats
  • 50. Learning New Technologies LinuxFriday, October 19, 12Linux,
  • 51. Learning New Technologies ApacheFriday, October 19, 12Apache,
  • 52. Learning New Technologies MySQLFriday, October 19, 12MySQL or equivalent,
  • 53. Learning New Technologies PHPFriday, October 19, 12and PHP.
  • 54. Environment Learning New TechnologiesFriday, October 19, 12Next you need to consider your development environment.While learning the sys admin stuff, its a good time to evaluateyour whole development environment.
  • 55. Environment Learning New Technologies Command LineFriday, October 19, 12I believe most people should expose themselves to thecommand line at some point in their career, preferably early.This is the gateway to fully understanding how your computerworks and harnessing and manipulating its power. I believethis so much that I push for new developers to learn from thecommand line, not the OSs GUI.
  • 56. Environment Learning New Technologies Command LineFriday, October 19, 12Next in the environment is the Command LineAlso my push for command line usage comes from my desirefor efficiency. GUIs use a ton of RAM, and Id rather save thatRAM for executing tasks, not writing them.
  • 57. Environment Learning New Technologies Virtual MachineFriday, October 19, 12Next up is a Virtual MachineI personally like to keep my computer as clean andindependent as possible from my dev environments so I like tosetup a virtual machine and install my stack and applicationinto it. Ben Ramsey has a good post on this. I also did my ownpost. You can find in the resources of this deck.
  • 58. Environment Learning New Technologies Virtual MachineFriday, October 19, 12You can use VirtualBox, which is free, or Parallels or VMWareor any VM software to accomplish this. Configuration will beunique to each solution though, so make sure to do a bit ofresearch to see which you like best.
  • 59. Environment Learning New Technologies Integrated Development Environment (IDE)Friday, October 19, 12Now that we have an environment, we need to choose an IDEBack in 2000, I started with Dreamweaver. Because I camefrom the visual world, Dreamweaver was the best solution forme at the time, though because most GUI IDEs suck horriblyat writing clean code, I ended up having to learn how to writemost my HTML by hand.
  • 60. Environment Learning New Technologies Integrated Development Environment (IDE)Friday, October 19, 12From there, I moved to Coda and really enjoyed it, but I foundas I was moving to understanding the command line evenfurther while learning the LAMP stack management, that Codaseparated me to far from the command line. So I moved toVIM, which is an amazingly powerful and lightweight IDE whichyou can spend years learning and becoming more efficientwith.
  • 61. Environment Learning New Technologies Source ControlFriday, October 19, 12Finally, I needed something better for source control,something remote. So I picked up Git, though Im still a newb.Again, I use Git from the command line, though there areGUIs, mainly because my terminal interface is now my OSenvironment and also to save RAM.
  • 62. Environment Learning New Technologies PHP Application PHP MySQL Apache GIT VIM CentOS VM VirtualBox Terminal App OSXFriday, October 19, 12So my environment is made up of the follow:- OSX is my main OS- Terminal App as my primary tool- VirtualBox Running CentOs for my Development Server! I’ve also run Ubuntu 11 on Parallels- VIM for my IDE- Git and GitHub for source control
  • 63. Philosophy Learning New TechnologiesFriday, October 19, 12Once you have a solid development environment, you canstart focusing on the real important stuff, cause now that yourtools are solid you can do solid work. So let’s talk about yourdevelopment philosophy a now.
  • 64. Philosophy Learning New Technologies Object Orientated ProgrammingFriday, October 19, 12First thing first. If you are a procedural developer as I was, likea number of PHP developers are, you need to start studyingobject oriented programming. There are so many reasons todo this, but none more important than it is the right way to writeyour application. From efficiency to organization to reduction induplication, there are so many reasons.
  • 65. Philosophy Learning New Technologies Object Orientated ProgrammingFriday, October 19, 12Now, this is not an easy thing to do by yourself and in fact, itsalmost impossible to get all the nuances of OOP withouthaving someone with experience walk you through it. This iswhy PHP mentoring has been really important to me. The one-on-one time with someone who knows all about this topic, aswell as others, insures I fully understand what Im trying togrok.
  • 66. Philosophy Learning New Technologies Design PatternsFriday, October 19, 12Along with understanding OOP comes learning about designpatterns. Model View Controller is one pattern youve probablyheard of, but there are many many more. To understand howto properly solve a programming problem it helps to have agood understanding of the different patterns and what types ofproblems they are good at solving.
  • 67. Philosophy Learning New Technologies Design PatternsFriday, October 19, 12I recommend the Design Patterns Elements for ReusableObject-Oriented Software by the gang of 4. Its a prettycomplex book with a lot of complex topics. I recommendreading it with someone else or at least finding someone youcan talk about the topics with.
  • 68. Philosophy Learning New Technologies Test Driven DevelopmentFriday, October 19, 12Now I dont fully buy into test driven development, I dohowever believe in testing even if I dont always execute thisperfectly, but it is a very useful tool to insure your code islightweight and works.
  • 69. Philosophy Learning New Technologies Test Driven DevelopmentFriday, October 19, 12Test Driven development is about writing your tests first, thenwriting the classes and methods. All tests will fail first and thenyou refactor by making the test work, then breaking them, thengetting to work again until you have the simplest solution toyour problem.
  • 70. Support Learning New TechnologiesFriday, October 19, 12So as you code, youll find the need for support tools to helpexecute all these practices. Depending on what language youdevelop in, your tools will be different, but for PHP here acouple I use.
  • 71. Support Learning New Technologies Standards SnifferFriday, October 19, 12A standard sniffer insures you are writing code that complieswith a coding standard, such as in PHP there are Pear,PSR2.0 and many others. The standard sniffer will review yourcode for formatting compliance.
  • 72. Support Learning New Technologies Standards SnifferFriday, October 19, 12The reason you do this is so when you work with other peopleor with a team, all code that is written looks the same, allowinganyone on the team to easily pick up where someone else leftoff and finish the work.
  • 73. Support Learning New Technologies Testing; Unit and FunctionalFriday, October 19, 12Each language has built in testing tools. Use these, make sureyour code works in all use cases. Break it and then fix it andthen break it again and then fix it again. There is nothing moreimportant than the knowledge that the code youve writtenworks, even when changes are made.
  • 74. Future TechnologiesFriday, October 19, 12So this is a start. There is so much more that I want to learnand need to learn. I just wanted to spend a sec highlightingthese.
  • 75. Future Technologies Continuous IntegrationFriday, October 19, 12Continuous integration is a process for combining yourdevelopment, build, quality control and testing, and launchingof your application. It’s about automation of repetitive tasks indevelopment.
  • 76. Future Technologies PythonFriday, October 19, 12At some point I want to play with Python because of it’sdifferences to PHP, and also because some concepts I havewould be better solved with a less web focused language.
  • 77. Future Technologies SeleniumFriday, October 19, 12Selenium
  • 78. Future Technologies Nonrational DatabaseFriday, October 19, 12At some point I want to experiment with a nonrational databaseas I’m quite familiar with standard SQL-rational database.
  • 79. Future Technologies Nonrational DatabaseFriday, October 19, 12iOS, I have a few concepts that would be best suited on suchan interactive medium, plus because I come from the UX/UIworld, I’ve always been fascinated with the iOS platform forthat reason.
  • 80. So many more...Friday, October 19, 12The list actually goes on from there, as you can tell, I’mcurious.
  • 81. Continue LearningFriday, October 19, 12Finally, its important to keep learning. Stay hungry forknowledge. This will not only give you some sense of fulfillmentbut will also insure you stay employable as a programmer.
  • 82. Always be learning.Friday, October 19, 12Our industry changes almost daily. To stay competitive youmuch keep up with these changes.So always be learning.
  • 83. Resources www.nashvillephp.org www.phpmentoring.org http://blog.calevans.com/2009/02/09/5-tools-every-php-developer-should-master/ http://benramsey.com/blog/2012/03/build-php-54-on-centos-62/ http://jacqueswoodcock.tumblr.com/post/21849873018/installing-apache-and-php-5-4- on-a-clean-ubuntu-install http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/ 0201633612/Friday, October 19, 12