Time to blow off some dust, toot my own horn, and hit the books

by Jon Davis 14. October 2019 23:59

Woah, Nelly!

Jon Davis's blog is back up! Last post was .. more than three years ago! Daaaang! How ya'll been?! Missed ya'll! Miss me?

I'm just posting a quick update here to let ya'll know that the gears in my tech world have started turning again, and to update ya'll on what's going on.

You may or may not have noticed that my root web site http://jondavis.net/ went through a couple phases and got stuck with that dorky "please wait" console-ish page. I was supposed to have replaced it by *cough* .. 2016. It's now approaching the year 2020. What happened? Well what happened was I got a few kicks in the pants. Got myself into some really humbling situations, not the fun kind. Perhaps you might say I got phased out. But I never left, so now I'm in high gear phasing back in.  I might try to explain ...

A few blog entries ago (this goes back to 2014) I wrote about how I needed to reset things, and how I needed to mull over what was going on at work. So here's a recap on my career path lately up till my previous job:

 

  1. In 2012 I was hired at Neudesic, a prominent consultancy firm. I dreamed of surrounding myself with smart people I could glean from. It turned out that things were pretty erratic at Neudesic. My first project assignment the client was Microsoft themselves. Prior to my joining they had just canned a project to build a big, beautiful Windows 8 themed web site where developers and other staff would post all-important articles and index them with Lucene.NET. Architecturally it was a disaster, and they canned the Microsoft executive at the same time they canned the project. So my joining the team, they were trying to salvage that project. I worked with them to try to dig into the code, get it up and running, figure out the performance issues, etc., and at some point I flew out to Redmond, Washington to discuss with the local Neudesic managers who were interfacing with Microsoft in person. Then I opened my mouth. I said, "Ya'll are really just makin' a blog. Why not add blog-ish things? Why reimplement Sharepoint?" Suddenly we were all fired. So then they shipped me off to Pulte Homes, where I did some work there, but the architect for that project and I didn't seem to know what we were doing on the user authorization detail and I proved blunt enough that they "couldn't afford" to keep me on after a couple months. So then they shipped me off to California to work with Ward & Brown on the Obamacare / ACA implementation there, again late to the party and annoyingly insistent to "help". But when QA and I asked around where the production/staging servers were, and they realized they apparently missed that part, they canned all their contractors. All 250 of us. So there I was stuck in the Neudesic-Phoenix office waiting for them to call me in. And they did. They laid me off. Like the child-man that I was, I accidentally let them catch me choking. They did say they might be able to take me back in a few months, though, so ...
  2. For the next few months I did some contract work for a local entrepeneur. I waited that out for a while and ultimately I wanted to go back to Neudesic, so ...
  3. In mid-year 2013 I asked Neudesic to take me back in. They did. They brought me back with open arms. It was more awkward for the lot of them than I or anyone anticipated. I'd made myself a reputation for being unrefined up to that point, I'm pretty sure. But anyway, when I arrived (a second time) I noticed that more people, including my former manager, were no longer there. They were laid off too. And I shipped back to Pulte Homes, on another, bigger project. I was up front with them, though, about what specific tools I was unacquainted with, specifically Bootstrap and the like, at the time. They shrugged that off, brought me in anyway. That project was led by--ima be frank here--a really, REALLY bitchy, control freakish, PMS-y woman. I tried to overlook it at the time. I tried to pretend it wasn't so at the time. I'm thinking back half a decade now, and I'm saying it like how I witnessed it. She was horrible. If I ever get in a situation like that again I'll run for the hills. That was awful. She was awful. But anyway, at the time, overlooking that (which I deliberately did), since the lead personality who'd previously been on that project but was laid off was now gone, and I wasn't getting much in the way of introduction, I deliberately, if bombastically, made a ton of assertions and at the same time asked a lot of really stupid, ignorant questions, which ticked off everyone on the team. So they canned me from the team. So that was fun. But what really did me in was I overheard the Neudesic chief developer director guy tell my boss that I "shouldn't be writing software". They assigned me some out-of-state ops role. I should have quit then and there; sure, I screwed up, but I'm a developer, not an ops guy. I didn't last long, and I ultimately did resign.
  4. So now in 2014 I got a very odd and delightfully educational gig with DeMark Analytics. So first of all, Tom DeMark, the owner, is a wealthy financial technician (a term I never knew before) who did what I imagined doing some years back--he studied financial charts and came up with artificially intelligent algorithms that predicted changes in the market. He's one among many people who come up with this stuff, but even so, that's what he did. So now they were building a product for people who could use these financial chart studies--a charting app, basically, with studies being overlaid over the chart. This entailed financial event data being siphoned in to both the back-end engine as well as to the client (the web browser). This is high tech stuff, and the pattern in use was CQRS-ES, which I'd never heard of much less mastered. So here's where it all broke down: 1) We all sat in close proximity to each other. No privacy. All conversations fully exposed. 2) I was hired as a lead, but I was wrong a couple times when I was adament, it was observed by the teammates, and so my authoritative experience as a lead developer was never trusted again. 3) Everyone in the company but maybe four of us was either family to Tom DeMark or close friends of Tom DeMark. It was a nepositic environment. I worked under one of Tom's sons (he was CEO/President), and another of Tom's sons worked under me--well, alongside me, since me being lead didn't work out. He was a bit spoiled. Quick on the Javascript, though, I couldn't keep up with his code, which was charting graphics. Like, at all. So I stopped trying. 4) My pay was adequate (best I can say about it) but my paycheck was cut monthly. Weird, bizarre, and painful. But it was worth it, I was investing in this, I figured. 5) My direct boss was a super high IQ ass. I asked technical questions about the middle/back end from him, like about how Cassandra was to be used, and instead of answering, he'd call everyone over--the CSS front-end developers, everyone. Then ask me to ask my question again. All to I guess humble me? .. Show me that this was "duh" knowledge that everyone would know and understand? So where this went critical was 6) I again used rhetoric. Crap, man. This pretty much got me fired. I used rhetoric! What I mean is, I insinuated, in so many words, that "your explanation sounds vague, and if I didn't know any better I'd say it almost sounds like you said [something obviously stupid]". Except I didn't say it like that, I actually, literally said, ".. you mean [something obviously stupid]?" I really, truly, genuinely trusted that he understood that I was being rhetorical, but this was the second time I made that mistake--I made the same mistake at Neudesic, "I can't read that [Javascript code]", I could, but I was getting at I shouldn't have to stop and read it--and with these guys it was sabotage. A few minutes later after we returned to our desks he threw his hands up and announced he was switching to Java/Scala. "Sorry Jon." Sorry, Jon? So yeah he was basically saying "you're fired, please quit." It took a couple more months, but I eventually did.
  5. So then I work at another consultancy firm. Solution Stream. Utah-based. They seemed to be trying to spread out into Phoenix. "I can do this," I thought. I learned at Best Software (Sage Software) when I moved to Arizona how consultants--consultants, not contractors--work, and bring prestige to the process of coming up with technical solutions and strategies, documenting them, and working them with the clients. But Solution Stream was really primarily just interested in creating contractors, apparently, but regardless, they didn't appreciate what I brought to the table, they undersold my capabilities, the executives decided they didn't like me, and they literally pulled me off a project that the client and my direct boss said I was doing great with and signed me over to Banner Health as a temp-to-hire (fire). I had no interest in being hired as a permanent Banner Health employee. When my temp-to-hire contract ended (the "temp-" part), everything ended. I swore off all consulting firms at that point. No more consulting firms. Never again.
  6. So then I got picked up at InEight. Bought out by major construction company Kiewit, InEight was building a cloud version of their Hard Dollar desktop app which manages large scale construction logistics (vendors, materials, supplies, etc). They had some workable plans and ideas. But things broke down real fast. Everyone who interviewed me quit within the year I joined, and it wasn't hard to see why. 1) They had non-technical people at the helm (senior leadership) making some very expensive and frustrating platform and architecture decisions. High performance software with minimal performance hosting, nothing worked, because they didn't want to spend the money for scaling the web tier. 2) The work was outsourced. Most of it was outsourced to India. Eventually they shipped some of it onshore to another midwestern state. But even onshore, most of their staff were H1-B visa holders. Foreigners. Nearly everyone I was working with was from India. Even after so many people quit, I stuck around as long as I could. But eventually I couldn't stand things anymore, my career path had become stagnant, and I knew I couldn't work with the senior executives (no one could, except people from India I guess). I was about to give two weeks notice, when those senior execs pulled me into a room and chewed me out for being "disrespectful". I was done. Never saw them or anyone over there again. (Actually, that's not entirely true; I have maintained strong friendship with at least one colleague from there. He got laid off a few months after I left. We're friends; we literally just met up this week.)
  7. For the last year and a half I've been working ... somewhere. For now. I came in as a lead developer, but they, too, openly declared me "disrespectful", so I've given up and just been a highly productive, proficient, heads-down programmer. This place, too, is mostly H1-B visa holders from India. I'm surrounded by foreigners. Scarcely a black, white, or Mexican face. It's depressing. I have less and less each year against Indians but my God, let me work with people of my own culture if I'm here in USA, just a few like-minded, like-raised friends, just a few? And now my team is getting dismantled, due to a third party taking over what we're doing. So I'm about to get laid off. If I'm not laid off, though, well, ... 1) as a contractor, I don't get paid holidays, I don't get paid vacations, and that was painful enough, but unexpectedly after my hire it turns out there is a mandatory two weeks unpaid leave during Christmas & New Year's, and that's unacceptable ($thousands of $dollars lost, not to mention depressing since I spend holidays alone, so yes, it's unacceptable). 2) I have been super comfortable, and super complacent, with little to gain in technical growth. It's been ASP.NET MVC with SQL Server and jQuery. And some .NET Core 2.2 and Razor Pages. Woo wee. *sigh* So yeah, I'm open to change, regardless of whether I get laid off.
There's my life story for the last seven years. Stupid, depressing, awful, I've been awful, I've let myself screw myself over time and time again. So here is my new strategy.

 
I have no one to blame, even where I've whined and complained, I have no one to blame for my life's frustrations but myself. It's part of the maturing process. I've embraced my learnings and I will carry on. I will try to let go of the past, but I only repeat and document them here because I have learned from them, and perhaps you can, too. What do I want in my career path? I miss the days when I was an innovator.

You guys remember AJAX? Yeah? I dreamed up AJAX in 1998 when IE4 came out. I called it "TelnetGUI". Stupid name. Other people came up with the same idea a few years later and earned the credit.

You guys remember Windows Live Writer? Yeah? ... Total rip-off of my PowerBlog app, down to detail. You could say I prototyped Windows Live Writer before Microsoft started working on Windows Live Writer. Microsoft even interviewed me after I built PowerBlog, because of PowerBlog and its Microsoft-minded inspirations of component integration. Jerk interviewer was like, "Wait, you mean you don't know C++?! Oh good grief, I thought you were a real programmer." Screw you, Microsoft interviewer. LOL. Anyway, Windows Live Writer came out a couple years later. Took all of PowerBlog's fundamental ideas, even down to the gleaning the CSS theme and injecting the theme into the editor.
 
You guys remember PowerShell? Yeah? I prototyped the idea in or around 2004. I took the ActiveScript COM object, put it in a C++ console container, spoonfed some commands where you could new-up some objects and work with them in a command-line shell, suggested that the sky's the limit if you integrate full-blown .NET CLR and shell commands in this, and showed it to the world on Microsoft's newsgroups. Microsoft was watching; I planted a seed. A year or so later, PowerShell ("Monad") was previewed to the world. I didn't do the dirty work of development of it, but I seeded an idea.
 
You guys remember jQuery UI? Yeah? I cobbled together a windowing plugin for jQuery a year or two before jQuery UI was released. It was called jqDialogForms. Pretty nifty, I thought, but heck, I never got to use it in production.  
 
In fact there's a lot of crap in my attic I recently dug out and up over at https://github.com/stimpy77/ancient-legacy (It really is crap. Nothing much to see.)
 
And, oh yeah, you guys remember Entity Framework, Magical Unicorn Edition? I, too, had been inspired by Fluent NHibernate, and I, too, was working on an ORM library I called Gemli [src]. Sadly, I ended up with a recursion nightmare I myself stopped being able to read, development slowed to a halt, and then suddenly Microsoft announced that EF Magical Unicorn Edition, and I observed that it did everything I was trying to do in Gemli plus 99x more. So that was a waste of time. Even so, that was mini-ORM-of-my-own-making #2 or #3. 
 
All of these micro-innovations and others are years old, created during times of passion and egotistical self-perception of brilliance. What happened?! I think we can all see what happened. My ego kept bulldozing my career. My social ineptitude vanquished my opportunities. And I got really, really lazy on the tech side.
 
My blog grew stagnant because, frankly, career errors aside, my bold and lengthy philisophical assertions in my blog articles were pretty wrong. Philosophies like, "design top down, implement bottom up". Says who? Why? I dunno. Seemed like an interesting case to make at the time. But then people at meetups said they knew my name, read my blog, quoted my article, and I curled up and squealed and said "oh gawd I had no idea what I was writing". (Actually I just nodded my head with a smile and blushed.) 
 
For the last few weeks I have spent, including study time, more than 70 hours a week, working. Working on hard skills growth. Working on side project development--brainstorming, planning. Working on fixing patchy things, like getting this blog up, so I can get into writing again. It's overdue for a replacement, but frankly I might just switch over to http://dev.to/ like all the young cool kids. 
 
Tech Things I Am Paying Attention To 
 
.NET Core 3 is where it's at, .NET 5 is going to be The Great .NET Redux's great arrival. However, the JVM has had a huge comeback over the last half-decade, and NodeJS and npm like squirrelly cats have been sticking their noses in everything. Big client-side Javascript libraries from a year or two ago (Facebook's React, Google's Angular, China's Vue) are now server-side for some dumb reason. Most importantly, software is becoming event-driven. IaaS is gone. PaaS is passe. Kubernetes is now standard, apparently. Microsoft's MSMQ is so 1990s, RabbitMQ so 00's, LinkedIn's Kafka is apparently where it's at, and now Yahoo!'s Pulsar is gaining noteriety for being even more performant. 
 
My day job being standard transactional web dev with ASP.NET/jQuery/SQL has made me bewilderingly ansy. If I want to continue to be competitive in complex software architecture and software development I've got to really go knee deep--no, neck deep--in React/Angular/Vue on the front-end, MongoDB, Hadoop, etc on data, Docker/Kubernetes on the platform, Kafka on the data transfer, CQRS+ES on the transaction cycles, DDD as the foundation to argue for it all, and books to explain it all. I need to go to college, and if I don't have time or money for that I need to be studying and reading and challenging myself at all hours I am free until I am confident as a resource for any of these roles.
 
Enough of the crap reputation of being a wannabe. Let's be. 

 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

C# | Career | General Technology | Health and Wellness | Open Source | Opinion | Pet Projects | Social Networking | Software Development | Unresolvable

In Consideration Of Going Solo

by Jon Davis 21. June 2013 07:46

I’m beat. I spent today packing up items I had valued—a guitar, a nice camera, a big collection of Stargate DVDs—to ship off to various buyers around the country. I had no regrets as I went dumpster-diving at Guitar Center trying to fetch a shipping container suited for the size and shape of a guitar. After all, I need the chump change this transaction will produce. It will cover a fraction of my rent.

Ever play the game EVE Online? I used to. But I was never particularly good at it. I tended to enjoy the agent missions, and I was just not quite good enough to be of great help in PvP team versus team gameplay, mainly because I was terribly intimidated by actual human beings. Nevertheless, I came back to it now and then for a month or two, each time I’d look for a corp (EVE’s equivalent of a guild) to join. I’d end up staying solo, though, and ultimately I’d let the account subscription expire again, either before or after I’d get dismissed from the corp for not logging in enough. Each time I play EVE, indeed each time I tell myself “okay I’m going to do better this time at devoting my attention to a corp”, it becomes more pointless, because a) my corp history would be increasingly filled up with a strangely high number of employment records, and b) I’d be the new guy in the big, long-standing corp again. I’d have to learn the names again. I’d have to understand the corp’s ways of going about the game again. And they’d look at my history and detect what I already know—I’m either a flake or I’m a creep. Not that I choose to be either. But this was a lose-lose situation, and a vicious cycle. And so I end up logging back into EVE Online now and then, just me, hauling some simple battleship, knocking out non-player characters as I do mundane agent missions. And then I get bored by it all, and stop logging in .. until next time.

It does sadden me that I fear that my EVE Online profile and history may be a reflection upon my real-world employment history. And it isn’t even that I don’t have the capacity to be an excellent team member, or to produce excellent output, or to exhibit a personality that people can get along with. It’s that, to say as much, is a little jarring. I can be an excellent team member; I can produce excellent output; I can exhibit a nice personality. What happens, unfortunately, is that each day, indeed each hour, I have to choose to do these things, because the moment I let up my guard, my natural tendencies kick in. And they are ugly. And when it happens, I run the risk of being no longer the man of charm and professional skill, but a man of incidents. A loose cannon. And after a lot of internal checking, I am left with a mess of conclusions.

1) I have lacked the ability to demonstrate respect for authority. And it isn’t that I don’t recognize authority or appreciate how finances and business operations flow. It’s that my bosses are always wrong. Just kidding. It’s that as time has gone on my own experience in the industry has begun to match or exceed my bosses and so now I am forced to go along with the imposition of the business structure of the business that hired me on the basis of that structure alone. I can no longer earn stripes by gaining knowledge and experience in the field, I now have to earn stripes by brown-nosing. And this feels wrong to me. But it is the way it is, and that’s just life in the “real world”: if you want to work for a company as an employee (as per your signature on a Form W-4) and be its b---- then get in the kitchen, shut up, and make the man a sandwich. Do it now, grunt, or every second the man has to wait it’s another dollar taken out of your bonus! There is simply no ability to put soul into this. My desire to be motivated to succeed and to do well tends to be based upon the success of the business and upon the quality and world-changing impact of the business’s product. Instead, as the grunt, it becomes based upon the success of my boss, upon the quality and performance of my duties, and upon my compliance to allow the boss to dictate the measurements of “quality”, which if it’s right then it’s opportunity for me to learn, but if it’s completely wrong it’s the active practice of ritualistically worshipping Satan. And this is one area in which I tend to explode in disgust. Tact and self-control have gotten a lot better over the years, but it’s still an area for improvement.

1008337_607242282626833_1150274984_o2) My history precedes me. Life has been a long journey of learning about myself, about other people, about corporations, about all kinds of things, and in this journey I’ve suffered an awful lot of failures. Failures are success stories because you learn from them—well, that’s nice, except that my history precedes me. And at 36 years old—wait, I’m 36, right?—I’ve begun to get pessimistic. If a job didn’t work out over here, and another job didn’t work out over there, who really do I want to work for? I’ve learned that I do not want to work for someone I admire because rejection as the grunt hurts a lot. Does this mean I want to work for someone I dislike? Of course not. Well if I choose not to have an opinion about who I work for, I run the risk of lacking loyalty and, well, soul in my work, but at least I wouldn’t be disloyal either.

So I end up here. I’ve been here before. It has never gone well—on the other hand, I apparently end up back here anyway, and it’s actually a little more peaceful here. The only thing missing is soul. Soul is passion. Soul has made things miserable in the past, where applying it was in hopes of making things wonderful. So if soul has made things go bad, why? Is this an attitude problem, a skill problem, a focusing problem, an approach problem, a setting problem, or a target of interest problem? Discipline? Maybe I'm just imbalanced. Could it be all of these? Yes, I suppose it could. So perhaps I should drum up some new rules to consider on this, based on these things:

Attitude – Be passionate with a proper attitude among others. Does my passion make others feel kicked around or like they’re being told they’re inferior? Too selfish. I should find out if others have similar passions; if so, I should refocus my passion on enjoying their similar passions when I am with them. Also, I should always be appreciating the practices of the team that work, and not get too hung up on practices that don’t work, because the ones that don’t work always have someone’s ego associated with them and they were perhaps passionate about setting them up. They had a passion that I should appreciate even if the output didn’t match mine.

Goals – I need goals to have an objective I can target and pursue while harnessing the power of passion and skill. Goals should derive out of an attitude check, not the desire to make money or be a boss. Neither making more money nor being the boss reduces stress--in fact, it makes it worse. Living a simple life is remarkably mind-cleansing, and I can only imagine what kind of stress a top-tier leader must have to go through. On the other hand, if money is seen as a tool to do the world good, a means to make the world a better place, and likewise being a leader is seen as an opportunity to make the business owners or executives happier and doing that while accomodating the needs of the grunts is looked on as a welcome opportunity, these are not bad drivers for goals. Neither is passion a bad driver (unless my passion is in basket weaving). So setting up goals pertinent to technology skills growth is certainly ideal, especially in a field where technology is always evolving. As a Christian, I also have some eternal goals; as one who believes in God I desire to make whatever I do pleasing to Him. If I had a family and my interests were in making a wife happy, again, making more money is not a goal in itself but setting up a budget and adhering to it might be. I might like to marry someday; I should start practicing budgeting. I also want to have some residual income flowing in; I should set goals to write a book, or write software that I can sell. Figuring out which goals to prioritize so that goals that become projects can see the light of day is a lot of work but necessary.

Skill – A passionate web developer should always be learning, and should always be practicing by either looking for problems to solve or creating problems in a sandbox at home that can be solved safely there. If there’s not enough time to learn and to practice, perhaps there isn’t enough focus on the passion! I’ve also found that it’s easy to build up a surface-level understanding of development concepts or tools, but can be difficult to master them. Master them.

Focus – I’m guilty of not being able to focus. I tend to have A.D.D., but on the other hand I can get around this tendency by adjusting my environment (choosing or making a clean place) and restructuring my priorities and the sequence of approaching them. Some people have tried The Pomodoro Technique to deal with time management, and have had some great success.

Approach – It is not enough to tackle a passion. I need strategy. And my work needs to integrate cohesively with others’ passionate output. What happens when you get five musicians in a room and so they practice and play a solo—all at once? You end up with chaos. The whole notion of “you need strategy”, however, is too vague to demonstrate in words because every situation is completely unique to the problems and personalities involved. I just need to use my head—not just left-brain logic but also right-brain intuition.

Setting – Having a passion in Objective-C is great if you’re working at Apple or in an Apple-oriented shop. It’s not so great if you’re in a Java or .NET oriented shop. This example is too obvious, though. Being passionate about restaurant point-of-sale systems is borderline dangerous if I'mtrying to lose weight and the workplace is Dunkin’ Donuts. Passions + Setting should not conflict with Goals.

Creativity – Creativity is that necessary component that allows me to stop stomping around asking everyone "hey I need ideas so I can build upon my passions, help me?" I'm guilty of doing that and it's pretty lame. Creativity is itself a skill that needs to be developed. Passion and creativity build upon each other. If I'm not creative enough I should get more passionate. If I'm not passionate enough but have some seedlings of creativity sprouting up, I should keep building on that creativity, passionately.

Target of Interest – For years, I’ve had Ruby on Rails books sitting around, and have had Ruby installed, but I never made Ruby on Rails my passion. How likely is it that my whole world would be turned upside down if I dropped ASP.NET and focused that on Ruby on Rails? I think it would be pretty hairy. Rubyists would argue that I should, that it could only be better. But I am confident in the capacities of ASP.NET MVC, and so my target of interest in my passion is well chosen I believe. But what about other passions? Keep exploring. Find something that clicks. Or, fall in love again with what is proving already to work for me (i.e. ASP.NET MVC).

Discipline – I suppose one of my biggest problems has been that I tend to get A.D.D. when I read or when I do pretty much anything. At home I have 19+ personal projects lined up and the list is so overwhelming I end up hunkering down and playing PC games instead. To address this problem, I have had to prioritize my projects, and I printed this out and taped it to my computer monitor at home:   

  NO MORE GAMES
  UNTIL I ACCOMPLISH MORE GOALS!!

I need to build up a greater curiosity and interest in the practices that I work with. Programming used to be fun. That and more should still be fun – it should be fulfilling. But regardless of how I feel, I should be driven by wisdom, and by the desire to be a greater, more proficient, and more respectable person in the field. 

Balance – Passion without balance makes people rich but it is more likely to make a person crazy. I don't mean to necessarily clock out at 5pm or 6pm. If I get back on my computer at home I've found no balance. I need to step away from the computer. Go to the gym. Go swimming. Go for a walk. Meet up with friends. Study the Bible and pray (yes I'm like that – or want to be). Go to a sports game. Actually I'm not into sports .. maybe I should go anyway, and bring a friend. Go spend a weekend up at the Grand Canyon. Stop playing PC games for free time. Have more responsibilities, outside of "personal projects". Take care of people. Become more well-rounded.

At the end of it all I should keep circling back around to all of these, giving special heed to attitude and balance. These are the elements that are making me a more whole person, while becoming a better, more mature person in the field of software and web development.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Career | Health and Wellness

Possibly The Best Way To Be A Great Programmer: Be Brain-Healthy!!

by Jon Davis 6. September 2008 21:52

UPDATE: Check out these great links!

I was watching a television show on PBS (viewer-sponsored educational public broadcasting) about brain health. The speaker was Daniel G. Amen, author of the book Change Your Brain, Change Your Life. This sort of show always grabs my attention, for one obvious reason:

I am a programmer, therefore my brain is my most important tool to invest in.

A programmer's job is among a few other jobs in this world that relate directly and primarily to brainpower; others are:

  • electronics engineers
  • lawyers
  • doctors
  • writers / authors

(Unfortunately, my brain stopped thinking of others by the time I wrote "writers".) This is not to say that other occupations don't use their brain; it's just that programmers primarily have to think, because to program is to teach computers to think.

Some moron in DZone posted the comment, "Your brain doesn't write programs. YOU write programs." News flash for idiots: Your brain is your "you" hardware, and just as a software program executes no faster and no more stable than the computer it runs on, you as a programmer are only as naturally smart and productive as your brain is healthy

There have been times, more now at my age of 31 than in my younger teenage and early 20s years, that I've begun to get frustrated and even scared of my brain's health. Names and numbers sometimes become forgotten. I'm sometimes unable to concentrate on anything. At home I rarely read all the way through any of the many books I own because I typically get halfway through a page and then, without thinking, grab my remote control and turn on the TV, or jump up to find something to eat or drink, or hit the Stumble! button on the StumbleUpon toolbar on my web browser. Sometimes I just have a hard time keeping my eyes open. Sometimes I feel depressed, I think a lot of negative thoughts, or I just feel knee-jerky.

Other days I'm doing great. I'm focused. I'm being productive. I get stuff done. I feel good. I have a smile on my face -- whether it's visible or not. Life just feels fulfilled.

I know the primary causes of what puts me off, I just need to pay better attention to them, and I suppose that's part of the reason why I'm writing this down now. Meanwhile, this PBS show put emphasis on these things and added specific details I need to be reminded of.

So I guess here are some of the most important things a programmer (or anyone I guess) can do to improve their brain's health. And believe me, I'm posting this for me more than for anyone else.

  • Sleep. No, seriously. Sleep. Go to bed on time, WoW / LOTRO / GW / et al should have no rights to your evening, in fact you shouldn't even let "being in the zone" in a software project deprive you of sleep. On that latter note, I've seen people whine in forums and mailing lists that "I've been up for the last 36 hours trying to fix a bug, I can't find it, what should I do?!" Yeesh, go to BED!! Staying up to solve a problem is only going to cause you to make things worse. 

    I have the best-selling book on programming Cocoa on the Mac, and it starts off saying that 1) you're probably not too stupid to get some things, some things are just hard, and 2) you should always get nine hours of sleep. A Cocoa book, telling me to get nine hours of sleep!
     
    • I sometimes struggle with sleep apnea. Sleep apnea is the problem a lot of Americans have of snoring or of being unable to breathe at night. Even if you're "asleep" in bed for eight or nine hours, sleep apnea is worse than getting very little sleep. It does two serious things: it deprives the brain of oxygen, which is much the same as blocked blood flow to the brain and also causes chronic headaches and sore spots on the head, and it causes the brain's level of consciousness to rise during sleep, so even if you're not aware that you're waking up, you are, because you keep SUFFOCATING on your own mouth/nose/throat. In essence, you're not really sleeping, or at least not deeply enough for it to count for much.
      In cases like mine, there's a cure for sleep apnea: lose weight!! Excess weight in the neck and face causes, well, weight to be applied to the windpipe, nasal passages, and mouth, collapsing the passageways. A couple years ago, my weight fluctuated, as did my sleep apnea, and I became close to useless at my job and was fearful of losing it (prematurely) because I wasn't alert, I couldn't think straight, I couldn't remember things or think things through (um, like the software I was writing), and I kept showing up late. Hopping on an "emergency diet" of 1,250 or so calories day and getting some exercise each day, I found normalcy in the quality of my days within about two or three weeks.
       
    • I tended throughout my younger adult years to be a night owl. I was 100% persuaded that "it's just the way I am" that, when I'm motivated to stay up late doing whatever it is I'm doing (writing software, playing a game, browsing the web, blogging, whatever), there's no stopping me, I'm like a freight train, I have too much momentum and no real sense of "I'm tired, it's time for bed" until about 4:00am. Many weekends I turn my days and nights upside down, and then I hate Mondays because I have to force it right-side up again. I'm also single, so it's not like I have family to remind me that it's time for bed (which is unfortunate, sometimes I literally just forget to pay attention to the time). But there are a few things I can do to compensate for this:
        
      • Have a social life with non-distracting friends and family. By non-distracting I mean not distracting people like those of the opposite gender (having a girlfriend will not help you sleep, especially if you're a geek like me, it will just make you confused, hopeful, frustrated, whatever -- not that I'm encouraging anyone to not have a girlfriend, I'm just saying that that doesn't fall into the context of "non-distracting") as well as frustrating relationships with people who make you have grudges or regretful memories or overly enjoyable or hopeful thoughts. Children are great for this.

        Why? Social life produces a certain degree of healthy mental stresses and after so much of these stress exercises in the day the brain may beg for rest. Plus, as long as you aren't stuck on obsessive thoughts or having high contemplation of tomorrow, there are usually very good side-effects between not just sleeping well and on time but generally feeling better about yourself.
               
      • Melatonin supplements should be considered experimental. Melatonin is the hormone that tells your body, "It's time to sleep." It's not quite the same as taking something like NyQuil, as it doesn't have the dizzying and/or drowsy effects of typical sleep medicines. It just makes your body feel like it's sleep time, naturally. It could be that my body doesn't produce enough of the stuff. I'd been pursuaded to try taking melatonin supplements before going to bed. Even just taking one 5mg tablet, though, a few hours before bed time, I find myself sleeping in quite late or else feeling like I should go back to bed if I can't sleep in. Limiting my intake to 2 or 3 mg might suffice -- or else not using it at all and finding other ways to improve my sense of sleep time. DO NOT OVERDOSE.  
           
      • Exercise. My weakest spot, there's no excuse for me except self-discipline. But I acknowledge that the body's demand for rest is driven in large part by the physical and mental stresses of the day, and imbalanced lack of demand from the body to rest at night, and physical desire to be lazy at day, is a clear sign of not enough exercise. It's correctable .. by exercising, of course.
          
  • Exercise. Yeah, I'm saying it again, because it doesn't just help you go to sleep in a balanced way, it is one of the most beneficial things for the brain. It increases blood flow to the brain. It increases serotonin, which is critical for proper brain health and combatting depression and A.D.D.
     
    But if you're like me, you're afraid to go to the gym because you're embarrassed by your being out-of-shape and being surrounded by all the in-shape people at the gym, so ..
     
    • Go on long walks around the neighborhood. No one has to see or even care about you, you're just walking, right? And if you have a dog, your dog needs exercise, too. (No dog should not be taken on walks; not taking a dog on walks and not at least giving a dog room to run around is, in my view, a bit abusive.)
       
    • If you have an extra room, designate it as a workout room. Add a large fan and a radio. Add some exercise "tools" like dumbells, a weight bench, a Bowflex, a treadmill. I have such a room but it has a super-cheap elliptical machine and a really cheap weight bench I bought at Wal-Mart that feels like it will snap and break apart every time I attempt to use it, so I am fearful of safety hazards. I rarely use this room anymore, but I should do what I can to change this. I've invested hundreds of dollars on technical books, but without the brain health to read them efficiently I wasted my money, unless I try to make a better investment in my exercise facilities as well.
        
    • If you have friends, find a workout partner. Going to the gym can be fun if you have a buddy with you, who can spot you or coach you or give you some competitive spirit or otherwise "keep you on your toes", as well as distract you from the embarassment aspects that keep you from the gym.
       
  • Diet (food and water intake) matters. You are what you eat, quite literally. Your brain is 60% water, so drink lots of water.
     
  • Always be learning about new things.The brain creates new connections and links between cells when you are trying to learn new things. As soon as you stop learning, the brain actively starts to de-link and break apart these connections. Find things to learn about. It doesn't work if it's directly related to what you're already doing--a cook learning a new recipe doesn't gain brain health by doing so because he's already a cook. I for one am thinking about taking classes at the local Community College about things that are totally different from my core interests and skills, but, while I am still on my job search, I'm currently slobbering over a job that substantially demands continued self-education and training and actually cares about technical certifications in the field. Jobs that do that are huge for promoting brain health, and that, I feel, is extremely ideal for me as a human being as well as for my continued career path.
       
  • Avoid alcohol, drugs, and smoking. I'm not writing this stuff for myself; I don't drink, I don't smoke, and I don't do drugs. But this stuff hurts the brain significantly, so it's worth noting for the record. Smoking significantly limits blood flow throughout the ends of the body. Alcohol significantly slows down and kills brain cells. And everyone knows that drugs do to the brain what a frying pan does to eggs. I don't do any of the above, but what applies to me..
        
    • Caffeine is a drug. Too much caffeine (more than a couple cups of coffee per day) is unhealthy for the brain, because it decreases blood flow to the brain. (Not sure how, just quoting this guy on PBS.) It also causes you to stay up late at night, of course.
        
    • Detoxify your body. A reader of this blog post (Krishnan Thodla) commented, "Undigested food/pollutants/environmental toxins (you mentioned a little bit) make your mind sluggish. Getting rid of these definitely improves your brain health too." (Thanks Krishnan!) 
       
      • Work environments can produce drug-like brain symptoms by way of air pollution. The story of a furniture factory worker was described on the PBS show, where a husband suddenly became "a jerk" and upon scanning it was found that his brain was significantly deteriorating similarly to alcohol and drugs. His problem turned out to be the workplace, where he was inhaling fumes and air pollutants that were as bad to the brain as drugs are. The doctor got him to find a different position in the company that didn't expose him to that environemnt. 
         
      • I once had some symptoms that were not unlike my sleep apnea symptoms when I had my windshield replaced. The fumes from the seal filled my car and the car stunk of the adhesive stuff that held the new windshield in place. I strongly believe that the headaches and difficulty to think and the dizziness were direct results of that; it all went away after a couple days.
             
  • Avoid sports that can cause injuries to the brain. Football, boxing, these are bad sports for the brain. The brain is very soft, in a very hard and "edgy" skull. Too much banging of the head and knocking the head around can cause a lot of trauma to brain cells. On the flip side, table tennis is considered the best sport for the brain, because it is safe for the brain in the avoidance of trauma, it encourages light exercise, and it forces the brain to coordinate hand, eye, and foot interaction with the gameplay. (I don't have room in my home for a ping pong table, but now I'm thinking of getting a Wii.)
       
  • Wear a safety belt, and drive safely. Car accidents often result in brain trauma. Even if you get out of an accident and your senses and motor skills and personality are not affected, you may still never be able to write software as well as you could before ever again.
        
  • Dwell on optimistic and/or true thoughts. Negative thoughts cause chemicals and activities in the brain that decrease the use of brain functions that encourage control and productive function, and increase the emotional aspects of the brain. Uncontrolled, negative thought patterns can become cyclical disasters. But here's a quote from the Bible that applies for good reason: "Finally, brothers, whatever is true, whatever is honorable, whatever is fair, whatever is pure, whatever is acceptable, whatever is commendable, if there is anything of excellence and if there is anything praiseworthy--keep thinking about these things." (Phillipians 4:8) 
     
  • Listen to ambient or classical music. Speaking of personal experience, I've listened to every kind of music while working--I love it all!-- and the kind of music that makes me feel most like I'm actually being mentally productive is ambient music. Classical music and classic jazz works well, too.
     
    • Check this out: http://www.getimusic.com/  Be sure to follow all the Research links. It looks somewhat like a gimmick--I can hear some pretty strong "effects" and artifacts in the sample music, but I don't know that it's actually doing anything significant, it might be snake oil. But then, it might not be. And if not, wow, what an invention!!
       
    • Music or ambient sounds (like television) with verbal language -- sung or spoken, but particularly spoken -- makes a very difficult environment to focus on anything. You don't have to be listening to the words to be distracted; your ability to focus will be negatively affected even if not directly. Or at least, that's true for me. :)  That's why I opt for ambient, classical, and jazz music, but lots of people listen to techno or trance or other forms of electronica as well, with very positive results.
       
  • Try meditation. According to this guy on PBS, there was a study a while back where observers were expecting brain activity to decrease after a subject meditated, much like sleeping would do. Instead, the opposite happened; after meditation, the subject's brain was significantly more active and (s)he was more alert. I'm certain there's more to the story (in more fascinating detail) but I don't remember much more than that.
      
  • Try Yoga. I haven't tried it, so I'm going on hearsay. Those who do yoga mostly have wonderful things to say about the soundness of both body and mind. A commenter on this blog entry writes, "Pay particular emphasis on breathing exercises, and not just on the postures. The physical postures help relax your body, but the breathing exercises relax your mind."
      

Anyway, this is a good list. Back to work ..

Currently rated 4.2 by 17 people

  • Currently 4.176471/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

Health and Wellness


 

Powered by BlogEngine.NET 1.4.5.0
Theme by Mads Kristensen

About the author

Jon Davis (aka "stimpy77") has been a programmer, developer, and consultant for web and Windows software solutions professionally since 1997, with experience ranging from OS and hardware support to DHTML programming to IIS/ASP web apps to Java network programming to Visual Basic applications to C# desktop apps.
 
Software in all forms is also his sole hobby, whether playing PC games or tinkering with programming them. "I was playing Defender on the Commodore 64," he reminisces, "when I decided at the age of 12 or so that I want to be a computer programmer when I grow up."

Jon was previously employed as a senior .NET developer at a very well-known Internet services company whom you're more likely than not to have directly done business with. However, this blog and all of jondavis.net have no affiliation with, and are not representative of, his former employer in any way.

Contact Me 


Tag cloud

Calendar

<<  July 2020  >>
MoTuWeThFrSaSu
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

View posts in large calendar

RecentPosts