200 likes | 217 Views
Transition from being a novice scripter to a proficient software architect with insights from Simon Horwith, CTO of eTRILOGY ltd. Learn about bridging the gap between perceived "gurus" and yourself, mastering ColdFusion, practical coding techniques, and more. Discover how patience, research, experimentation, passion, and experience play vital roles in elevating your coding expertise.
E N D
Oh Grow Up!! Going From Kiddie Scripter to Software Architect Simon Horwith CTO, eTRILOGY ltd
Overview • Introduction • Who am I? • Who are you? • “Us” and “Them” • The “us and them” attitude developers have towards • So called “gurus” and themselves • ColdFusion and other programming languages • Additional Factors • Control your environment! • Office rules and processes • Bridging the gap between “Us” and “Them” • Change your thinking • Communicate with your team • Control your environment • Practical coding techniques/suggestions • The Bottom Line • Summary – some simple rules to remember
Introduction • Who am I? • Member of Team Macromedia • Macromedia Certified Instructor • Architect • Developer (ColdFusion, Flash, Flex, etc.) • Who are you? • ColdFusion Developer • Project Manager interested in raising the skill level of the developers who you manage
“Us” and “Them” • Many ColdFusion Developers: • Have a preconceived notion that certain other developers are “gurus” and that there are mysterious differences between themselves and these people • Develop their skills based on exposure to new techniques “as-needed” • Develop their existing skills to a certain point and no further • Believe that ColdFusion is not in the same league as other programming languages • WHY?
“Us” and “Them” Demystified • The notion that there are mysterious differences between so-called “gurus” and everyone else is due largely in part to the assumptions that it is either their natural code-writing ability or their vast experience that makes them so good • What really makes “the experts” different: • Patience • Research • Experimentation • Passion • Experience • Experience is the least important difference
“Us” and “Them” Demystified – Patience • Top-quality developers: • Appreciate taking time to think and plan before they write a single line of code • Assess the situation before action when an error occurs • Know that immediate results are not the first priority. Flexibility and ease of maintenance are the best qualities of any code base • Know when to stop banging their head against the wall and walk away from a bad situation
“Us” and “Them” Demystified - Research • Top-quality developers: • Try to solve problems themselves by doing research • Know where to look for answers to problems (Macromedia.com, Google, list servers, etc.) • Aren’t afraid to learn new technologies and/or skills • Question everything, including their own code. They look for ways to improve their own code.
“Us” and “Them” Demystified - Experimentation • Top-quality developers: • Recognize that it is often quicker to write a quick test case using simple data than it is to ponder, research, etc. • Experiment with • different methods of organizing code • different methods of passing and storing data • new functionality as soon as it becomes available • alternatives (sometimes including other technologies)
“Us” and “Them” Demystified - Passion • Top-quality developers: • are passionate about what they do • strive to do better • It is this passion that drives them, more than anything, to patiently look for solutions, research solutions, and experiment.
“Us” and “Them” Demystified – Experience • Top-quality developers do generally have a lot of experience. • This is not a prerequisite! • Though it’s not a prerequisite, top-quality developers learn from their mistakes and from the mistakes of others. They’ve seen and made a lot of mistakes along the way, which is why they appear to know so much now.
“Us” and “Them” Demystified –ColdFusion is not just for “kiddie scripters” • Top-quality developers: • Have respect for themselves as professionals and for the power of their platform (ColdFusion) • Approach developing applications with ColdFusion the same way that a Java, C++, or any other developer would approach developing software in their respective environment. • Use the terms “ColdFusion Development” and “Software Development” interchangeably • Appreciate that though ColdFusion makes it easier to achieve results, it also makes it easier to write bad code. There is no excuse for writing bad code. They also appreciate that because common tasks are made trivial in CFML, they can spend more time concentrating on more complex tasks and business requirements. After all – this is where the true power of ColdFusion rests.
“Us” and “Them” Revisited • We said before that many to most ColdFusion Developers: • Have a preconceived notion that certain other developers are “gurus” and that there are mysterious differences between themselves and these people • Develop their skills based on exposure to new techniques “as-needed” • Develop their existing skills to a certain point and no further • Believe that ColdFusion is not “in the league” of other programming languages • How do the traits frequently displayed by gurus (patience, research, experimentation, passion, and experience) and the respect they have for the platform make them different?
Additional Factors • The environment in which you work has a huge impact on your performance: • Many top developers find that listening to certain music or styles of music aids them in their code-writing • Top developers often work in an environment that has well-defined business and development processes (specification writing, data and application modelling, code reviews, documentation, Q/A, etc.). These processes not only keep things within a company consistent, but help developers to learn and perform better and more deliberately and consistently • In addition to music, the rest of a developers surroundings also impact on performance. • Community activities encourage learning and interest. Most top developers attend and/or present at CFUGs, conferences, etc.
Bridging the gap between “Us” and “Them” • So where do you go from here to begin down the path of becoming “one of them”? • Change your thinking • Communicate with your team • Control your environment • Remember some practical coding techniques/suggestions
Bridging the gap between “Us” and “Them” - thought • The first step in changing the way you think about and approach development is to meditate on the “US and Them” characteristics already described and to begin taking more time before you code • Take time to research what other people are doing/have done with ColdFusion and learn to fully appreciate it’s potential
Bridging the gap between “Us” and “Them” - communicate • If your company doesn’t have formal processes for documentation, specification writing, code reviews, and/or data and application modelling (ER Diagrams and/or UML), talk with your project managers, boss(es), and/or employees about putting processes in place • If you aren’t already doing so, begin holding regular internal training seminars and/or attend formal training, CFUG meetings, and other conferences. Get your company involved in these activities.
Bridging the gap between “Us” and “Them” - environment • Experiment with listening to different styles of music while you work – see what, if anything, works for you • Make your work environment ideal for doing work and play. • Hint – if you had an unlimited budget to purchase one piece of office equipment, what high-price item would you buy? Most developers immediately say they’d buy a PC or laptop. I’d buy a chair… the most fantastic, comfortable chair that money can buy. That’s the one piece of office equipment you shouldn’t try to save money on.
Bridging the gap between “Us” and “Them” - code • While there are no 100% guaranteed rules for development that apply to every situation, there are a few coding rules that you should keep in mind: • Never connect with an external resource, especially for the same data, more than is absolutely necessary • Avoid looping when you can • Do some design pattern research – MVC, façade, etc. and think about how you might use them • Write code in as reusable and flexible a manner as possible – 80% of your code should be inside of CFCs and Custom Tags • Comment, comment, indent, and comment • Practice writing recursive code – it’s extremely powerful. • Recognize that recursion is not only extremely powerful but extremely dangerous • Remember that sometimes it’s faster to run two small blocks of code rather than one big one (this is true for SQL as well). • Think about performance optimisation last – achieve it through server configuration, code reuse, and taking advantage of server memory • Look for ways to rewrite your code and others’ in a more optimal way
Bottom Line(s) – a few “Golden Rules” to remember • Never spend more than 10 or 15 minutes on anything! • Don’t be afraid to step away from a problem or, God forbid, ask for help. • Never be afraid to make mistakes – learn by doing. • There are two traits that ALL top developers have in common and that you must also develop: • they use common sense when assessing problems and devising solutions! • They are confident! • Question all things. This not only includes your own code and other peoples’ code, but best practices in general. You’d be surprised how many “best practices” are actually poor practices under the right conditions. • If you’re not having fun, why are you doing it? Make work fun!
End Thank You Questions/comments may be sent to simon@horwith.com