Upload
jclarity
View
810
Download
1
Tags:
Embed Size (px)
DESCRIPTION
A Short presentation given at the London Java Community on Raising the Bar for yourself as a technologist.
Citation preview
Raising The Bar
1Thursday, 2 May 13
Hacking Yourself
• We’ve taught & mentored a lot over the years– Ben Evans (@kittylyst)– Martijn Verburg (@karianna)
• Culminating in the LJC, of course!
• The most amazing thing about the human mind is its ability to change & to alter itself
• The industry moves so fast– We need techniques to keep up– Staying curious is key
2Thursday, 2 May 13
How Do We Learn?
3Thursday, 2 May 13
Cargo Cult Teaching?
4Thursday, 2 May 13
How Do We Learn?
5Thursday, 2 May 13
How Do We Learn?
Self-study
Socialcoding
Formaltraining
6Thursday, 2 May 13
Use A Basic Toolkit
• Ideal way to teach ourselves
• We should know all know basic CompSci– Use it on a daily basis– Look for places to apply it
• What should be in our toolbox?– Data structures, Big-O, type theory, information theory– Compilers, interpreters, virtual machines– A proper understanding of Unix– Operating systems & kernels– Hardware, wherever possible
7Thursday, 2 May 13
Check Your Working
• Check your working
• Verify your results
• Have your peers to replicate your results– Do NOT just reuse others conclusions blindly
"The first principle is that you must not fool yourself—and you are the easiest person to fool.
So you have to be very careful about that. After you've not fooled yourself, it's easy not to fool other scientists.
You just have to be honest in a conventional way after that." - Richard Feynman
8Thursday, 2 May 13
Explicit Assumptions & Approximations
• State– How much data?– How many concurrent users?
• Document– Work with other stakeholders– Discuss with peers– Formal document as a project artifact
• Revisit– Sanity-check every once in a while– Verify that initial assumptions are still met– Update if not
9Thursday, 2 May 13
Reduce The Problem
• Wherever possible, try to decompose the problem– Use approximations
• Build simpler versions if you need to– Can add complexity later– “What is the simplest thing that could possibly work?”
• Spend time thinking about the problem domain– Very few projects are really “shipping widgets”
• Graphical techniques are powerful– They don’t need to be complex
10Thursday, 2 May 13
Use Diagrams
11Thursday, 2 May 13
Simplify Your Coding
• Naming– Strict adherence to SRP– The name should encode SRP– Reject a commit if this is not adhered to
• Complexity has hidden costs– No class is more performant as one which isn’t there
• Reduce Technical Debt– “If it hurts, do it more”– Technical debt accumulates faster than you realise
12Thursday, 2 May 13
Be Aware of New Developments
• But evaluate them on their merits– Too easy to let Hacker News rule the roost
• Make empirical technology decisions– Basic toolkit & empiricism help here
• Newer is not necessarily better
• Don’t blindly using others conclusion
• “Why Devs Keep Making Bad Technology Choices”– Google & read it if you haven’t
13Thursday, 2 May 13
Share What You Know
• Know where to get more information– Especially from other people
• Teach what you know to others– You don’t really know anything until
you’ve taught it to someone else
• Teaching others also teaches ourselves– Re-examine the basics
14Thursday, 2 May 13
Share What You Know
• Try out lots of ideas & subject areas
• Don’t be afraid to be wrong– Or shown a different point of view
• Do expect SMEs to prove their assertions
• Avoid Rhetological Fallacies– Especially “Appeal to Authority”
• Seek out colleagues & people you like working with
15Thursday, 2 May 13
Be Inquisitive & Be Yourself
• Travel, learn to speak new languages– Domain, Human & Computer
• Diverse problems feed the mind– And it’s more fun
• Development is a social activity– Probably more than technical
16Thursday, 2 May 13
Summary
• Build a mental toolkit which is simple– Focus on fundamentals– Use visualisations & graphical techniques
• Use empirical data extensively– State your assumptions & approximations
• Share what you know– Teach & mentor your peers & younger developers– Constantly relearn & reteach the basics– Look for puzzles everywhere
• Be yourself!
17Thursday, 2 May 13
Current Course Ideas
• Advanced Java - London May 25th
• The Java Virtual Machine - London July 6th
• Introduction to Finance & Financial Technology
• Linux / Unix for Java Developers
• UI & UX for Java Developers
• Java 7 / Java 8 features
• What do YOU want to see?
• When works better - weekdays? weekends? evenings?
• Grab a drink & tell us your thoughts...
18Thursday, 2 May 13
Over To You...
• Twitter: @kittylyst @karianna @DeveloperFocus
• Email: [email protected] [email protected]
• Web: http://developerfocus.com/
19Thursday, 2 May 13