Part 2: Cultivate Your Knowledge
Emotional Maturity 15%
Skilled Developers 10%
Standard Architecture 8%
32% of the problem is here, according to Standish CHAOS Report
Tip #5: Maintain a Technical To Do List
The only sub discipline of computer science that seems to move more quickly than mobile is security. As mobile developers, we need to be keeping track of an industry that is moving very, very quickly. As cross platform mobile developers, we need to keep track of multiple operating systems and multiple implementations of constantly emerging features. How can we keep up?
- The pulse of software development is on Twitter and Blogs – gone are the days of big fat books.
- Organize your twitter feeds, Wire up a digest for your RSS feeds, if you follow specific blogs
- Spend 5-10 minutes daily – flip through twitter – browse your blog subscriptions
- When you see something interesting, save it for later
- Collect the interesting things you want to research with a screencap or in a todo app
- Microsoft To-Do mobile app syncs both ways with office 365, Outlook, https://to-do.office.com
- Android version has a widget that allows you to put the Microsoft To-Do List on your Android ‘desktop’
- Next time you have 15 minutes, research something on your list in more detail either from your laptop, android tablet or phone.
Tip #6: Pet Project App
Gather up cool things on your To Do list and then, give yourself permission to build a pet project app. Because I specialize in relatively boring line-of-business apps, there are certain things I will probably never have the opportunity to use ‘on the job’. This gives me the ability to ‘play’.
Recently, I used SkiaSharp, Google AdMob and XamarinForms Shell to build a little app that helps one keep track of the planetary retrogrades. I was feeling like I needed to know when Mercury (especially) was going to go into retrograde because communication on Earth can apparently be thwarted during this time. Let’s be really honest, this is an important thing to know about.
- Pick libraries and maybe even frameworks that you have never used.
- It is ok if it never goes to the store(s) or only lives on your personal device.
- It is ok to fork and play around
- Gives you something to practice on, blog about, talk about in interviews, etc.
- This is especially good if you forgot why to you love programming. 😉
Tip #7: Cultivate Your Emotional Maturity
Standish Report suggests a 15% investment Emotional Maturity for a successful project delivery, at the same time, they valued an Agile Process at 7% – less than half.
This is a sensitive subject – right? As developers, we are introverted, maybe a little socially awkward… or maybe a lot socially awkward? I know I am!
As developers, we have found a lot of success by valuing logic, often valuing logic over feelings.
Years ago, I worked for a good-sized software consultancy. A gaggle of developers were standing over a tower of pizza boxes, with greasy paper plates, discussing scars from past projects. One said, “I still remember the day I figured out that in order to write good software, humans are required… It was terrifying.”
To become emotionally mature, one has to see the whole picture, both the logical and the illogical parts. It’s hard. Sometimes it is really hard. That’s why you have a team.
Before you react or begin to problem solve, take a moment to go through the following list – in this order:
- Fully understand how you feel and why – especially if you are really upset.
- Try, try, try to consider the big picture and everyone’s points of view
- Technical solutions aren’t the only way to solve problems
- As developers, recognize that we, by default, value logic over emotion – after all, we ‘talk’ to computers all day! It’s our super power!
- Finally Invest some time in researching the wealth of information online about – Emotional Maturity vs. Emotional Intelligence
Tip #8: Don’t Set Yourself Up For Failure
When new deadlines/scope unexpectedly come your way – try to figure out if your scenario falls in one of these scenarios:
- Management setting arbitrary soft deadlines to ‘speed’ up delivery of a project or motivate a team into self organizing and optimizing.
- Complete lack of any realistic expectations for a project, leading to absolutely no opportunity for success.
Try, try, try to fight your natural, innate excitement for solving problems. Just because you CAN solve that problem, doesn’t mean you SHOULD. Sometimes it isn’t a problem that should be solved technically, sometimes it would be better solved by a tweak in a business process. Don’t make a business workaround the reason for a software workaround. Think about and discuss the problem as a WHOLE.
If you are absolutely sure an on-time delivery is not possible, DO NOT be afraid to say something.
There are a number of blog posts touting: “The most important thing a developer can say is NO.” – not sure I completely believe in that, but they are an interesting read.
Never, never, never count on heroics. Heroics are typically not sustainable.
Tip #9: Celebrate Your Successes
You don’t have to plan a big, premeditated event to celebrate the close of a productive sprint or sending a big feature to QA. You can pause to post a funny meme in your Slack feed, or buy a round of snacks from the vending machine for your dev team.
Take a minute to stop and say “Hey, we are getting somewhere here… let’s keep going…”
In Xamarin projects, I tend to have a stupid tradition of celebrating the moment when you have to turn Multi-Dex on in your Android solution. It’s stupid, but it is the moment your project is ‘growing up’!