If you find yourself bored silly with your programming gig, do yourself and other people a favor. Get involved in an open source project you like and feel you can make a contribution to. You'll probably start to enjoy programming again, and other people will benefit too.
(1). git source control
(2). maintaining a medium sized/complexity Java project
I'm interested in the oral tradition i.e. the human operational aspects of how you use it, what aspect to use it in what circumstances etc, etc, etc - that aren't in the tool itself or its man pages or tutorials. Thanks for any pointers.
Github definitely makes contributing to open source very easy, so I'd recommend you start looking there. They also have some well-written practical guides to working with Git here:
I'm definitely on the lookout for something I might like more.
OTOH, I find myself still enjoying web/database programming in Scheme, despite having done it for 9 years now. I guess it helps to be able to focus on solving users' problems and not waste time wrestling with inappropriate tools.
Technology-wise, at least consider...
- learning SML or OCaml or Erlang
- learning Python
- going deeper into Python. It's a fantastic way to express oneself. It beautifully offers (generators, coroutines, multithreading, subprocesses, and networking) for piping and distributing your computation, a flexible blend of functional and imperative, and its syntax is the most conducive to elegance, simplicity, and rereadability of anything I've tried.
...then building the core algorithms in C/C++ with SWIG wrappers, the tip of the iceberg with Django, and everything else in pure Python.
A must-read: "Generator Tricks For Systems Programmers"
For my company/startup (http://greaterscope.com) I'm also building online storefront software, which has plenty of interesting problems. It can involve massive datasets (for me), clever algorithms, etc. It has been the perfect opportunity for me to harden and field-test my tools. This is written in PHP, because it's the language I know best, and I feel like the problem isn't "solved" for PHP yet.
But those are beside the point because I've started to think more about "what I really want to do" and how to "not get stuck doing something I don't want to do". So I defintely feel the need to find something I like doing even more than storefront software in PHP.
Thanks for the technology recommendations. Python is high on my list at the moment. I'm on the lookout.
I think you can work on really cool stuff in any platform.
Similarly, you can also work on mind-numbingly boring stuff in any platform.
Perhaps he should just try to find something cool to work on (something that really turns him on), without regard to technology, and then just learn that technology in order to work on in.
It's not about which hammer or screwdriver you use.
It's about satisfying those who will live in the thing you build.
Excellent idea. I have done this myself several times.
My dilemma: At what point do you realize that your code is so cool that you don't want to develop it on someone else's machine (and dime)? I often find myself saying, "This is WAY more than they're paying for and will be worthless to me since they will own it."
Also, I dealt with this by getting _deeper_ into PHP by seeing what made it tick - writing C/C++ extensions for PHP. Not super fun, but helped me understand the value of Python/SWIG.
Maybe I'm wrong but the way I see it, not many business people are using it and - do we really need another Zippo Lighter app?
Oh, you can do games I guess if that's what you're into. I just don't see a big need for utility apps other than what's out there already.
Game development can involve all fields of computer science and software engineering, in addition to a considerable amount of Physics, Mathematics, Design, Music and Story Telling. There's nothing more complete and fun than it.
First add another dynamic language to your tool-set: Perl or Python, preferably. This will be an easy transition and you will have a great degree of jobs open to you. There are dynamic language related jobs which aren't web-development: bioinformatics, data mining, toolsmith positions (build/release, qa, operations), platform engineering (creating custom OS images). Some of them may require domain specific knowledge for the more senior positions but would be willing to take on a strong coder on to a more junior position on the premises that you'd be able to pick up the knowledge and grow into a more senior role.
These positions will often either themselves involve projects in other languages (Java, C/C++) that you'd be able to pick up on the job or be in a larger engineering organization where you will be able to transition to these jobs.
And in all these cases your experience as a web developer will be appreciated and considered important.
I did the same transition myself: systems administration (involved in some internal web app development, lot of Perl scripting)-> undergrad (and becoming bored with systems administration after learning algorithms, operating systems, compilers, etc...) -> operations engineering (lot of tools development) -> Perl/C++/Java development. (At the mean time I've been working part-time on a Masters in Computer Engineering which is opening newer domain specific knowledge to me).
no wonder with that approach (copy paste, field names, etc) ... one will get bored
a good approach is "do without"
how do i write better, simpler code w/o copy paste
how do i eliminate using field names (i don't know in php, but maybe use list and map ... nullify the need for temp variables)
maybe do w/o database? maybe use in memory persistence, load once, write every time?
how about javascript validation instead of php equivalent? better user experience
how about cutting the 100 loc (peppered with temp var, fn, loops and other nasties) to 5 loc (say using map, apply, lambda, closure -- again, i don't use php)
i do notice that codebase that has limits (like can't be > 1000 loc) is usually better than the no-limits equivalent
"do without" will force u to think and it's more fun because your code won't be similar to others' boilerplate
the code probably won't be 'best industry practice' aka code that coworkers/employers will appreciate; however, the beauty of your own code can only be enjoyed by you only ... and i think that itself is a great reward
but of course u can't hide from responsibility when the code breaks, otherwise one can always blame the copy-paste or legacy codes -- anyway holding the responsibility alone is a priviledge, not liability
Build a small app in it, and put it online for people to download. This will both teach you the skills and show you can produce results. That should be enough - no one will care about your experience/education/etc if you can show past work in an in-demand field.
But this new company took a chance on me. If I can keep up, I'll have that low-level C++ programming experience I have always wanted, including multithreaded stuff.
My intense interest registered and my new employer decided to take a chance on me. Of course, there is more to the story. Such as, I had spent significant time learning C++ on my own and had code to show for it. I'm also older and maybe people take me seriously :)
I have a feeling the top developers are going to all start getting bored with web dev soon. It stands to reason all these 20-somethings start branching out and discovering the underlying software that makes the web work and will want some of that action.
I'm just glad I'm ahead of the curve so I had little competition for this job. The wave will be behind me! Yay!
More comments by me and possibly others here: http://www.crazyontap.com/topic.php?TopicId=41745&Posts=...
5 minutes of PHP is too much.
Best of Luck