1. Becoming a real programmer.
Jacques Woodcock
@jacques_thekit
Friday, October 19, 12
2. Becoming a real programmer.
Jacques Woodcock
@jacques_thekit
Friday, October 19, 12
3. Disclaimer
Friday, October 19, 12
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.
8. Some Background 2000
2nd
12th
Friday, October 19, 12
Yahoo, Ebay, AOL
9. Some Background 2000
10th
12th
Friday, October 19, 12
and GEO cities.
10. <html>
Some Background
<head>
</head>
<body>
</body>
</html>
Friday, October 19, 12
Because I was a designer, that meant learning basic HTML
coding principles by reading the source code written by
11. Some Background 2000
Friday, October 19, 12
Dreamweaver, and we all know Dreamweaver writes
12. Some Background
Insert Photo
of Poo here
Friday, October 19, 12
poo code.
13. HTML
JS
Some Background
Friday, October 19, 12
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.
14. HTML
JS
Some Background Flash
Friday, October 19, 12
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.
15. HTML
JS
Some Background Flash
Friday, October 19, 12
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.
16. HTML
JS
Some Background Flash
ColdFusion
Friday, October 19, 12
Finally, this rabbit hole lead me to learning the before
mentioned languages but also ColdFusion,
17. HTML
JS
Some Background Flash
ColdFusion
Lingo
Friday, October 19, 12
Lingo
18. HTML
JS
Some Background Flash
ColdFusion
Lingo
ActionScript
Friday, October 19, 12
ActionScript
19. HTML
JS
Some Background Flash
ColdFusion
Lingo
ActionScript
PHP
Friday, October 19, 12
and PHP.
21. The Old Philosophy
“I don't care how this works,
I just want it to work.”
Friday, October 19, 12
"I don't care how this works, I just want it to work." It was a
very
22. The Old Philosophy
“Get R Done”
Friday, October 19, 12
"Get 'R Done" style of programming.
23. The Old Philosophy
“I don't care how this works,
I just want it to work.”
Friday, October 19, 12
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
24. To Grok =
1) Understand (something) intuitively or by empathy.
2) Empathize or communicate sympathetically; establish
a rapport.
Friday, October 19, 12
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
25. Procedural Programming =
programming paradigm, derived from structured
programming, based upon the concept of the procedure
call.
Friday, October 19, 12
a procedural method of programming.
26. The New Philosophy
Friday, October 19, 12
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.
27. The New Philosophy
Fully understand what I'm doing
and the technology I'm using to
make it happen.
Friday, October 19, 12
So my new philosophy has been to "Fully understand what I'm
doing and the technology I'm using to make it happen."
28. The Path
Friday, October 19, 12
This is the manner I've employed in which to make this new
philosophy happen.
29. Getting Involved The Path
Friday, October 19, 12
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.
30. Getting Involved The Path
Nashville PHP
Friday, October 19, 12
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.
31. Getting Involved The Path
PHP Mentoring
Friday, October 19, 12
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.
32. Learning New Technologies
Friday, October 19, 12
After getting involved next, you need to know what
technologies you actually need to learn.
33. Learning New Technologies
Friday, October 19, 12
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.
34. 5 Tools Every
PHP
Developer
Should Know
Mr. PHP
Friday, October 19, 12
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:
35. 1 Framework
Friday, October 19, 12
A 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, 12
Version Control: PHP works with all the major version control options that other languages
also can use.
37. 3
Entity Relationship Diagram
(ERD)
Friday, October 19, 12
Entity Relationship Diagram (ERD): Databases can get ridiculously massive, easily.
38. 4 Debugger
Friday, October 19, 12
A Debugger: Going through code 1 line at a time sucks. Use a debugger.
39. 5 Unit Tester
Friday, October 19, 12
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.
40. 1. Framework
2. Version Control
3. ERD
4. Debugger
5. Unit Tester
Mr. PHP
Friday, October 19, 12
So that was
1. A Framework
2. A version Control System
3. An ERD tool (Entity relationship Diagram)
4. A Debugger
5. A Unit Testing Tool
41. 1. Framework
2. Version Control
3. ERD
4. Debugger
5. Unit Tester
Mr. PHP
Friday, October 19, 12
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:
42. 1. Framework
2. Version Control
3. ERD
4. Debugger
5. Unit Tester
Mr. PHP
Friday, October 19, 12
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.
43. 1. Framework
2. Version Control
3. ERD
4. Debugger
5. Unit Tester
Mr. PHP
Friday, October 19, 12
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.
44. 1. Framework
2. Version Control
3. ERD
4. Debugger
5. Unit Tester
Mr. PHP
Friday, October 19, 12
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.
45. 1. Basic Sys Admin
2. Command Line
3. Version Control
4. Debugger
5. Unit Tester
Not Mr. PHP
Friday, October 19, 12
So what would my list look like?
1. Basic Sys Admin Skillz
2. Command Line
3. Version Control
4. Debugging
5. Unit Testing
46. Learning New Technologies
Friday, October 19, 12
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.
47. Learning New Technologies
Friday, October 19, 12
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.
48. Learning New Technologies
Friday, October 19, 12
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.
49. Learning New Technologies
LAMP Stack
Friday, October 19, 12
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
54. Environment Learning New Technologies
Friday, October 19, 12
Next you need to consider your development environment.
While learning the sys admin stuff, it's a good time to evaluate
your whole development environment.
55. Environment Learning New Technologies
Command Line
Friday, October 19, 12
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.
56. Environment Learning New Technologies
Command Line
Friday, October 19, 12
Next in the environment is the Command Line
Also 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.
57. Environment Learning New Technologies
Virtual Machine
Friday, October 19, 12
Next up is a Virtual Machine
I 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.
58. Environment Learning New Technologies
Virtual Machine
Friday, October 19, 12
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.
59. Environment Learning New Technologies
Integrated Development
Environment (IDE)
Friday, October 19, 12
Now that we have an environment, we need to choose an IDE
Back 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.
60. Environment Learning New Technologies
Integrated Development
Environment (IDE)
Friday, October 19, 12
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.
61. Environment Learning New Technologies
Source Control
Friday, October 19, 12
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.
62. Environment Learning New Technologies
PHP Application
PHP MySQL
Apache GIT VIM
CentOS
VM VirtualBox
Terminal App
OSX
Friday, October 19, 12
So 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 Technologies
Friday, October 19, 12
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.
64. Philosophy Learning New Technologies
Object Orientated
Programming
Friday, October 19, 12
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.
65. Philosophy Learning New Technologies
Object Orientated
Programming
Friday, October 19, 12
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.
66. Philosophy Learning New Technologies
Design Patterns
Friday, October 19, 12
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.
67. Philosophy Learning New Technologies
Design Patterns
Friday, October 19, 12
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.
68. Philosophy Learning New Technologies
Test Driven
Development
Friday, October 19, 12
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.
69. Philosophy Learning New Technologies
Test Driven
Development
Friday, October 19, 12
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.
70. Support Learning New Technologies
Friday, October 19, 12
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.
71. Support Learning New Technologies
Standards Sniffer
Friday, October 19, 12
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.
72. Support Learning New Technologies
Standards Sniffer
Friday, October 19, 12
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.
73. Support Learning New Technologies
Testing; Unit and
Functional
Friday, October 19, 12
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.
74. Future Technologies
Friday, October 19, 12
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.
75. Future Technologies
Continuous
Integration
Friday, October 19, 12
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.
76. Future Technologies
Python
Friday, October 19, 12
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.
78. Future Technologies
Nonrational
Database
Friday, October 19, 12
At some point I want to experiment with a nonrational database
as I’m quite familiar with standard SQL-rational database.
79. Future Technologies
Nonrational
Database
Friday, October 19, 12
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.
80. So many more...
Friday, October 19, 12
The list actually goes on from there, as you can tell, I’m
curious.
81. Continue Learning
Friday, October 19, 12
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.
82. Always be learning.
Friday, October 19, 12
Our industry changes almost daily. To stay competitive you
much keep up with these changes.
So always be learning.
Before we begin, a little disclaimer. I&#x2019;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&#x2019;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&#x2019;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&#x2019;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&#x2019;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&#x2019;s about automation of repetitive tasks in development. \n
At some point I want to play with Python because of it&#x2019;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&#x2019;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&#x2019;ve always been fascinated with the iOS platform for that reason. \n
The list actually goes on from there, as you can tell, I&#x2019;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